tide-design-system 2.5.4 → 2.5.7
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.
- package/.storybook/main.ts +1 -0
- package/dist/{IconAccountBalance-B9rJ09ax.js → IconAccountBalance-dARjIrfY.js} +3 -3
- package/dist/{IconAcute-9dHrmblT.js → IconAcute-BWwq_P2g.js} +3 -3
- package/dist/{IconAdd-BsJiPHYa.js → IconAdd-DtInpvF3.js} +3 -3
- package/dist/{IconAiDescription-fQ_B1UGe.js → IconAiDescription-C-OGiP7T.js} +3 -3
- package/dist/{IconAlignSpaceEven-B2UIi1ao.js → IconAlignSpaceEven-CTm_RFZr.js} +3 -3
- package/dist/{IconApplePay-DS6fQdV_.js → IconApplePay-BEECKvxd.js} +3 -3
- package/dist/{IconArrowBack-CZSCZ-Jf.js → IconArrowBack-CJYjUSAT.js} +3 -3
- package/dist/{IconArrowCycle-D3f38VT-.js → IconArrowCycle-B-SIKRjr.js} +3 -3
- package/dist/{IconArrowForward-CICM-aJ1.js → IconArrowForward-CTC_pWUJ.js} +3 -3
- package/dist/{IconArrowRight-CwweSeyO.js → IconArrowRight-DVgboHar.js} +3 -3
- package/dist/{IconArrowUp-7TI0p224.js → IconArrowUp-8yer6-rz.js} +3 -3
- package/dist/{IconAssignment-DQQnmJc_.js → IconAssignment-CKdgR4IZ.js} +3 -3
- package/dist/{IconAttachMoney-sLj77NOR.js → IconAttachMoney-BOqK4Ty3.js} +3 -3
- package/dist/{IconAtvAtv-bfqGL_Iq.js → IconAtvAtv-CVxNZw3x.js} +3 -3
- package/dist/{IconAtvDuneBuggy-CbiyQRZg.js → IconAtvDuneBuggy-ChpKK_uj.js} +3 -3
- package/dist/{IconAtvGoKart-BxqcGKzS.js → IconAtvGoKart-BA3-opIb.js} +3 -3
- package/dist/{IconAtvGolfCart-6Xwju3k6.js → IconAtvGolfCart-DIQybI94.js} +3 -3
- package/dist/{IconAtvSandRail-dKmA3KoG.js → IconAtvSandRail-vMg9E1B1.js} +3 -3
- package/dist/{IconAtvSideBySide-CVSUrX7w.js → IconAtvSideBySide-DpAgficE.js} +3 -3
- package/dist/{IconAtvTrailer-BB6C_WKk.js → IconAtvTrailer-DmqyaW6g.js} +3 -3
- package/dist/{IconAutoRenew-Bl-Obhh6.js → IconAutoRenew-PKxzoFUm.js} +3 -3
- package/dist/{IconAwardStar-KYYsH2ss.js → IconAwardStar-C80c-wJ9.js} +3 -3
- package/dist/{IconBed-BVLiRAhU.js → IconBed-D8iyGBIR.js} +3 -3
- package/dist/{IconBoatmartPwc-B3seLCYC.js → IconBoatmartPwc-a1AOjs7L.js} +3 -3
- package/dist/{IconBoatmartTrailer-BosS4Ix8.js → IconBoatmartTrailer-CprxPgWU.js} +3 -3
- package/dist/{IconBolt-D-BSIXex.js → IconBolt-D7tpOZMC.js} +3 -3
- package/dist/{IconBookmark-D3Pu86n4.js → IconBookmark-ZpQyXxtb.js} +3 -3
- package/dist/{IconBunkhouse-B4PaVH2y.js → IconBunkhouse-rPtR_Mct.js} +3 -3
- package/dist/IconCalculate-Bbp4hHOW.js +16 -0
- package/dist/IconCalculate-CGwDSRuU.cjs +2 -0
- package/dist/{IconCalendarMonth-CortoSy-.js → IconCalendarMonth-CKF3HJsX.js} +3 -3
- package/dist/{IconCall-DRysHKSn.js → IconCall-D6EvqV8k.js} +3 -3
- package/dist/{IconCallQuality-BMVs2M2s.js → IconCallQuality-FekMElKo.js} +3 -3
- package/dist/{IconCarRental-qvIsiGfR.js → IconCarRental-Cw5T4p4_.js} +3 -3
- package/dist/{IconCheck-CliQNN_D.js → IconCheck-Dmmvwu7-.js} +3 -3
- package/dist/{IconChevronLeft-hQC1St0W.js → IconChevronLeft-BF0qcV0B.js} +3 -3
- package/dist/{IconChevronRight-DVYcrzWE.js → IconChevronRight-CdE3lIbm.js} +3 -3
- package/dist/{IconClear-COYKsp8t.js → IconClear-YX6AUd3q.js} +3 -3
- package/dist/{IconClose-HSRbXCDE.js → IconClose-BKDRiJCn.js} +3 -3
- package/dist/{IconContract-BaV1mGEr.js → IconContract-7-9lX0ZL.js} +3 -3
- package/dist/{IconCrash-ClWQK2fw.js → IconCrash-Cz7QujvF.js} +3 -3
- package/dist/IconCycleMotorcycle-B8syyXoU.cjs +2 -0
- package/dist/IconCycleMotorcycle-DVRTUcId.js +21 -0
- package/dist/IconCycleTrailer-COTSVorR.cjs +2 -0
- package/dist/IconCycleTrailer-Cp2Ak9pX.js +20 -0
- package/dist/{IconDashboardCustomize-BJEcZ-jN.js → IconDashboardCustomize-g3VnCCx1.js} +3 -3
- package/dist/{IconDelete-DJwergoy.js → IconDelete-Dnyl1uzD.js} +3 -3
- package/dist/{IconDiamond-D34wtBhd.js → IconDiamond-sAYziqWh.js} +3 -3
- package/dist/{IconDirectionsBoat-ByiHuypy.js → IconDirectionsBoat-D0xl5It-.js} +3 -3
- package/dist/{IconDomain-CXsBLm5C.js → IconDomain-as7lGUZz.js} +3 -3
- package/dist/{IconDraft-qSYk5cPm.js → IconDraft-BTRj5LyI.js} +3 -3
- package/dist/{IconEdit-CFeDlBN2.js → IconEdit-Z8QjfAFi.js} +3 -3
- package/dist/{IconEngine-BLi3BThi.js → IconEngine-Nq1jLYrS.js} +3 -3
- package/dist/{IconEngineering-DKDW6b3b.js → IconEngineering-CDeCKiuN.js} +3 -3
- package/dist/{IconError-BsmS7Ido.js → IconError-CHkF1F4l.js} +3 -3
- package/dist/{IconExpandContent-CUz-acoJ.js → IconExpandContent-BKW1v-s1.js} +3 -3
- package/dist/{IconExpandLess-kI04ZTDg.js → IconExpandLess-DuwH_WmO.js} +3 -3
- package/dist/{IconExpandMore-BpIrNsXP.js → IconExpandMore-C-Fof15e.js} +3 -3
- package/dist/{IconFacebook-DiMWgcSK.js → IconFacebook-94UC5eci.js} +3 -3
- package/dist/{IconFavorite-CDLEUDWu.js → IconFavorite-Bi2ZLSFU.js} +3 -3
- package/dist/{IconFavoriteFilled--f1zeXKy.js → IconFavoriteFilled-BOzK3oQt.js} +3 -3
- package/dist/{IconFlag-CmppikB3.js → IconFlag-D3BdWSHX.js} +3 -3
- package/dist/{IconFormatBold-rtvyBotR.js → IconFormatBold-ptl4C5om.js} +3 -3
- package/dist/{IconFormatItalic-BlcS8gnO.js → IconFormatItalic-wjYo3E6V.js} +3 -3
- package/dist/{IconFormatListBulleted-BbJCNSJG.js → IconFormatListBulleted-Z4H5EHHL.js} +3 -3
- package/dist/{IconForum-CFa_3MsA.js → IconForum-dExYXhMs.js} +3 -3
- package/dist/{IconGas-rD46ubiw.js → IconGas-BeL_PidJ.js} +3 -3
- package/dist/{IconGavel-l3k6jtN3.js → IconGavel-b699C85e.js} +3 -3
- package/dist/{IconGears-CaXA9HK2.js → IconGears-DY0BIt9k.js} +3 -3
- package/dist/{IconGlobeLocationPin-cTdYm_5A.js → IconGlobeLocationPin-PPiJIaCW.js} +3 -3
- package/dist/{IconGoogle-6R7roJzd.js → IconGoogle-B1k1zKq5.js} +3 -3
- package/dist/{IconGooglePay-XLqJKvZe.js → IconGooglePay-CnoBw2gC.js} +3 -3
- package/dist/{IconGrid-BoplWzPb.js → IconGrid-DPAFjLOo.js} +3 -3
- package/dist/{IconHandshake-CsYF9kmp.js → IconHandshake-CF0rWfIQ.js} +3 -3
- package/dist/{IconHandyman-CQL-qu8p.js → IconHandyman-DqbZcABm.js} +3 -3
- package/dist/{IconHeight-CTAQLi2I.js → IconHeight-1sxFnuqb.js} +3 -3
- package/dist/{IconHelp-BEzzbWr3.js → IconHelp-BfxZeVdy.js} +3 -3
- package/dist/{IconInfo-BACpUpXu.js → IconInfo-ZZNZK4Fs.js} +3 -3
- package/dist/{IconInformation-CGYah4Eo.js → IconInformation-CQc0HSVc.js} +3 -3
- package/dist/{IconInsertText-C5HjwAuL.js → IconInsertText-dHM33CGA.js} +3 -3
- package/dist/{IconInstagram-DEPxn51x.js → IconInstagram-BbTbVTQe.js} +3 -3
- package/dist/{IconIosShare-jNePPJBV.js → IconIosShare-fe7iyZSt.js} +3 -3
- package/dist/{IconLayout-CgFL9FBD.js → IconLayout-BYkhBGPm.js} +3 -3
- package/dist/{IconLevellingJack-rO4KepKs.js → IconLevellingJack-CuuMfb9e.js} +3 -3
- package/dist/{IconLinkedIn-GWoK01li.js → IconLinkedIn-iC2pYpmX.js} +3 -3
- package/dist/{IconLocalShipping-Bayc9OL_.js → IconLocalShipping-sAYdRn-q.js} +3 -3
- package/dist/{IconLock-WfiVOWPI.js → IconLock-c8yaYnyT.js} +3 -3
- package/dist/{IconMail-ejl1H7D9.js → IconMail-D0yowPmX.js} +3 -3
- package/dist/{IconMenu-FlE3z6fX.js → IconMenu-Btzwi7Bu.js} +3 -3
- package/dist/{IconMoneyBag-CYq7aYjH.js → IconMoneyBag-BcZCfjrN.js} +3 -3
- package/dist/{IconMoreHoriz-B0mCtW1_.js → IconMoreHoriz-CYiGX78Y.js} +3 -3
- package/dist/{IconNotifications-Bm_gSQGu.js → IconNotifications-uBv1nZZ2.js} +3 -3
- package/dist/{IconOdometer-COcVC_eb.js → IconOdometer-DZASryD7.js} +3 -3
- package/dist/{IconOpenInNew-DFieFQIk.js → IconOpenInNew-VuTM8uiR.js} +3 -3
- package/dist/{IconPalette-DoDIzZJO.js → IconPalette-B78tp213.js} +3 -3
- package/dist/{IconPaypal-CX6Z2rvX.js → IconPaypal-z7u9aPLj.js} +3 -3
- package/dist/{IconPerson-CK0AXlS_.js → IconPerson-DWwdRmJX.js} +3 -3
- package/dist/{IconPersonSearch-Da5EdDrS.js → IconPersonSearch-4ESzm5yH.js} +3 -3
- package/dist/{IconPhotoCamera-DZHI-Yb7.js → IconPhotoCamera-Drkhsfpi.js} +3 -3
- package/dist/{IconPinterest-B3UM6t9-.js → IconPinterest-BhgYE6Fc.js} +3 -3
- package/dist/{IconPlayArrow-CR7bXHC8.js → IconPlayArrow-ztNUkoji.js} +3 -3
- package/dist/{IconPolicy-CzN-v54O.js → IconPolicy-DrcQUdvI.js} +3 -3
- package/dist/{IconPower-C5MJihEZ.js → IconPower-BISw4q1i.js} +3 -3
- package/dist/{IconPowerOff-BziDMScz.js → IconPowerOff-D94o_eIX.js} +3 -3
- package/dist/{IconPriorityHigh-Bv-j3DaQ.js → IconPriorityHigh-DzCnK1QW.js} +3 -3
- package/dist/{IconRemove-Bo4RUocr.js → IconRemove-gGo2PMeX.js} +3 -3
- package/dist/{IconRequestQuote-BUNyScQ-.js → IconRequestQuote-CWfytYvA.js} +3 -3
- package/dist/{IconResetWrench-DCcBmojh.js → IconResetWrench-B0tYLDcb.js} +3 -3
- package/dist/{IconRoad-BGTu-WPJ.js → IconRoad-m4Orr44c.js} +3 -3
- package/dist/{IconRoundedCorner-DycjfuJj.js → IconRoundedCorner-CqdpAVGU.js} +3 -3
- package/dist/{IconRuler-Da8zNDvf.js → IconRuler-C8SSjTfX.js} +3 -3
- package/dist/{IconRvClassA-D2-lug19.js → IconRvClassA-CFQOw02-.js} +3 -3
- package/dist/{IconRvClassB-Coe3FpBI.js → IconRvClassB-p-03DBol.js} +3 -3
- package/dist/{IconRvClassC-DWnLqMGg.js → IconRvClassC-BP5Zzlj_.js} +3 -3
- package/dist/{IconRvFifthWheel-CB_mQ-tO.js → IconRvFifthWheel-BMGxt3_M.js} +3 -3
- package/dist/{IconRvFishHouse-Cs2fm3r1.js → IconRvFishHouse-C7iNMr-3.js} +3 -3
- package/dist/{IconRvParkModel-D4S_iYTG.js → IconRvParkModel-l4Rx5P9F.js} +3 -3
- package/dist/{IconRvPopUpCamper-CW47dgll.js → IconRvPopUpCamper-BY6aLEic.js} +3 -3
- package/dist/{IconRvTravelTrailer-CC48bci7.js → IconRvTravelTrailer-FstodwFk.js} +3 -3
- package/dist/{IconRvTruckCamper-EoEVfaJM.js → IconRvTruckCamper-lLLE86pz.js} +3 -3
- package/dist/{IconSailing-CPcgnYwx.js → IconSailing-svTfDLn9.js} +3 -3
- package/dist/{IconSchool-3Dy70s11.js → IconSchool-CUB4fiMX.js} +3 -3
- package/dist/{IconSearch-C8WeOYws.js → IconSearch-QZW19aza.js} +3 -3
- package/dist/{IconSeating-D7B47LU4.js → IconSeating-B3MAIZkv.js} +3 -3
- package/dist/{IconSell-B95iGdOh.js → IconSell-CG2i7EOI.js} +3 -3
- package/dist/{IconSensors-Ckv6BEOK.js → IconSensors-BVBTJDAv.js} +3 -3
- package/dist/{IconSettings-CLrLZmQs.js → IconSettings-BGJv8ylA.js} +3 -3
- package/dist/{IconShare-CH2w2udo.js → IconShare-DLN_ze1T.js} +3 -3
- package/dist/{IconShieldCheck-BBHcsJhF.js → IconShieldCheck-DwGlL83P.js} +3 -3
- package/dist/{IconShoppingCart-_CKPKJ12.js → IconShoppingCart-BWcDIQ0t.js} +3 -3
- package/dist/{IconSleeps-CTzXW2RS.js → IconSleeps-Bl1OHp_d.js} +3 -3
- package/dist/{IconSms-C_jULP6X.js → IconSms-DXF4Rvv5.js} +3 -3
- package/dist/{IconSnowflake-DYpTwl2q.js → IconSnowflake-3DOCBRxO.js} +3 -3
- package/dist/{IconStar-CR0UA_S9.js → IconStar-y4w1Q_Ly.js} +3 -3
- package/dist/{IconStarFilled-DEnQm6s8.js → IconStarFilled-h3V6lcA1.js} +3 -3
- package/dist/{IconStarHalf-DZqwFVlC.js → IconStarHalf-CD3Otd__.js} +3 -3
- package/dist/{IconSummarize-BwU7xViX.js → IconSummarize-DQAFpTrk.js} +3 -3
- package/dist/{IconSwapHoriz-B7Nu99ui.js → IconSwapHoriz-C3usXzhR.js} +3 -3
- package/dist/{IconSwapVert-D83OnTLJ.js → IconSwapVert-CODa7if1.js} +3 -3
- package/dist/{IconThreeDRotation-WuabFIaS.js → IconThreeDRotation-Dt-qEsTU.js} +3 -3
- package/dist/{IconThumbUp-DwPs1Aog.js → IconThumbUp-2aoi8Hn6.js} +3 -3
- package/dist/{IconTrendingDown-CKqQl7o7.js → IconTrendingDown-Cc1jUDOB.js} +3 -3
- package/dist/{IconTrophy-DRcIPW-F.js → IconTrophy-CWU4189G.js} +3 -3
- package/dist/{IconTune-CXVj1kqb.js → IconTune-PtcGFHGO.js} +3 -3
- package/dist/{IconTwitter-B5AwI_-2.js → IconTwitter-Q7-VmjkP.js} +3 -3
- package/dist/{IconUmbrella-BWmv4GFi.js → IconUmbrella-B_1l6UAu.js} +3 -3
- package/dist/{IconVerified-BMRocsAd.js → IconVerified-BCiRYMzp.js} +3 -3
- package/dist/{IconVideocam-D5eUdBxR.js → IconVideocam-TZ4vpxTp.js} +3 -3
- package/dist/{IconViewInAr-CvR2gh_r.js → IconViewInAr-Dn4BjPYu.js} +3 -3
- package/dist/{IconVisibility-BlzyaCVD.js → IconVisibility-nxEIwt29.js} +3 -3
- package/dist/{IconVolumeOff-DB757krU.js → IconVolumeOff-D_ASm6Jk.js} +3 -3
- package/dist/{IconVolumeOn-CYf77UaC.js → IconVolumeOn-CTVNBoFQ.js} +3 -3
- package/dist/{IconWarehouse-DIRQdX8P.js → IconWarehouse-DP-BJpYG.js} +3 -3
- package/dist/{IconWarning-n_GTsWOM.js → IconWarning-DcYnbH1n.js} +3 -3
- package/dist/{IconWater-DFV09TyV.js → IconWater-Bh1ru5aW.js} +3 -3
- package/dist/{IconWeight-Cq12caT_.js → IconWeight-DfxHx8iL.js} +3 -3
- package/dist/{IconWidth-DtPjsKm8.js → IconWidth-E4u3XnEj.js} +3 -3
- package/dist/{IconWorkspacePremium-_Olggt_G.js → IconWorkspacePremium-Cn2NhzIu.js} +3 -3
- package/dist/{IconWrench-C2MHGxho.js → IconWrench-DHpCQriM.js} +3 -3
- package/dist/{IconYoutube-C8cHj1uF.js → IconYoutube-DHlDGTQp.js} +3 -3
- package/dist/css/reset.css +2 -2
- package/dist/css/utilities-base.css +67 -38
- package/dist/css/utilities-responsive.css +428 -312
- package/dist/css/variables.css +6 -0
- package/dist/logo-aero-CkTVffxb.js +17 -0
- package/dist/logo-aero-Z-V0eOLB.cjs +2 -0
- package/dist/logo-atv-BC9pKXBl.js +21 -0
- package/dist/logo-atv-xQMzut2h.cjs +2 -0
- package/dist/logo-boatmart-B9upxiMl.cjs +2 -0
- package/dist/logo-boatmart-DroAqtiq.js +16 -0
- package/dist/logo-cycle-c9schUUY.cjs +2 -0
- package/dist/logo-cycle-iWCyRwSL.js +21 -0
- package/dist/logo-equipment-3VYa6YcW.cjs +2 -0
- package/dist/logo-equipment-BoqO9oqu.js +17 -0
- package/dist/logo-pwc-BBFWrkvE.js +21 -0
- package/dist/logo-pwc-DhXtaTyu.cjs +2 -0
- package/dist/logo-rv-BRXxuciP.cjs +2 -0
- package/dist/logo-rv-DzHxIw2C.js +21 -0
- package/dist/logo-snow-Dzpaeho2.js +17 -0
- package/dist/logo-snow-PVobISvF.cjs +2 -0
- package/dist/logo-truck-DE0J4OIJ.cjs +2 -0
- package/dist/logo-truck-MUfLC0tr.js +21 -0
- package/dist/mark-aero-CFjGMjbx.cjs +2 -0
- package/dist/mark-aero-D8m3JDkS.js +23 -0
- package/dist/mark-atv-1Vppojls.js +19 -0
- package/dist/mark-atv-BhRn5mUA.cjs +2 -0
- package/dist/mark-boatmart-Bmkv3dOs.cjs +2 -0
- package/dist/mark-boatmart-b77RvD0c.js +16 -0
- package/dist/mark-cycle-BFxZOD4K.js +23 -0
- package/dist/mark-cycle-QCLSEZTF.cjs +2 -0
- package/dist/mark-equipment-BbnRZ0vl.js +19 -0
- package/dist/mark-equipment-ThuZOvf6.cjs +2 -0
- package/dist/mark-pwc-CQWDRntw.cjs +2 -0
- package/dist/mark-pwc-CQa98Z9S.js +21 -0
- package/dist/mark-rv-BtQWH4-a.cjs +2 -0
- package/dist/mark-rv-DY1wwuIO.js +21 -0
- package/dist/mark-snow-BEUxteW6.js +23 -0
- package/dist/mark-snow-Bek2T8IY.cjs +2 -0
- package/dist/mark-truck-BsOOC6Lx.cjs +2 -0
- package/dist/mark-truck-CUaX6FYM.js +19 -0
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.css +1 -0
- package/dist/tide-design-system.esm.d.ts +0 -2031
- package/dist/tide-design-system.esm.js +1447 -1133
- package/dist/utilities/realm.ts +17 -0
- package/dist/utilities/storybook.ts +0 -2
- package/dist/utilities/viewport.ts +2 -2
- package/index.ts +8 -0
- package/package.json +1 -1
- package/src/assets/svg/branding/logo/logo-aero.svg +9 -0
- package/src/assets/svg/branding/logo/logo-atv.svg +3 -0
- package/src/assets/svg/branding/logo/logo-boatmart.svg +18 -0
- package/src/assets/svg/branding/logo/logo-cycle.svg +3 -0
- package/src/assets/svg/branding/logo/logo-equipment.svg +11 -0
- package/src/assets/svg/branding/logo/logo-pwc.svg +3 -0
- package/src/assets/svg/branding/logo/logo-rv.svg +3 -0
- package/src/assets/svg/branding/logo/logo-snow.svg +12 -0
- package/src/assets/svg/branding/logo/logo-truck.svg +3 -0
- package/src/assets/svg/branding/mark/mark-aero.svg +4 -0
- package/src/assets/svg/branding/mark/mark-atv.svg +3 -0
- package/src/assets/svg/branding/mark/mark-boatmart.svg +17 -0
- package/src/assets/svg/branding/mark/mark-cycle.svg +4 -0
- package/src/assets/svg/branding/mark/mark-equipment.svg +3 -0
- package/src/assets/svg/branding/mark/mark-pwc.svg +3 -0
- package/src/assets/svg/branding/mark/mark-rv.svg +3 -0
- package/src/assets/svg/branding/mark/mark-snow.svg +4 -0
- package/src/assets/svg/branding/mark/mark-truck.svg +3 -0
- package/src/assets/svg/icons/realm/cycle/IconCycleMotorcycle.svg +4 -0
- package/src/assets/svg/icons/realm/cycle/IconCycleTrailer.svg +3 -0
- package/src/components/TideChipAction.vue +23 -2
- package/src/components/TideIcon.vue +8 -6
- package/src/components/TideModal.vue +14 -2
- package/src/components/TideRealmLogo.vue +71 -0
- package/src/components/TideSheet.vue +11 -2
- package/src/components/TideTabs.vue +4 -9
- package/src/stories/TideChipAction.stories.ts +10 -4
- package/src/stories/TideModal.stories.ts +0 -4
- package/src/stories/TideRealmLogo.stories.ts +25 -0
- package/src/stories/TideSheet.stories.ts +0 -1
- package/src/types/Icon.ts +4 -0
- package/src/types/RealmLogo.ts +38 -0
- package/src/utilities/realm.ts +17 -0
- package/src/utilities/viewport.ts +2 -2
- package/tests/TideRealmLogo.spec.ts +58 -0
- package/dist/style.css +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ye={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(n,r)=>n.map(o=>`${r}-${o}`),ALIGN:{X:{CENTER:"tide-text-center",JUSTIFY:"tide-text-justify",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start",STRETCH:"tide-axis2-stretch"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning",BLUE:"tide-bg-surface-blue",GREEN:"tide-bg-surface-green",LIME:"tide-bg-surface-lime",ORANGE:"tide-bg-surface-orange",PURPLE:"tide-bg-surface-purple",RED:"tide-bg-surface-red",SALMON:"tide-bg-surface-salmon",TEAL:"tide-bg-surface-teal",YELLOW:"tide-bg-surface-yellow"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning",BLUE:"tide-border-blue",GREEN:"tide-border-green",LIME:"tide-border-lime",ORANGE:"tide-border-orange",PURPLE:"tide-border-purple",RED:"tide-border-red",SALMON:"tide-border-salmon",TEAL:"tide-border-teal",YELLOW:"tide-border-yellow"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},STYLE:{DASHED:"tide-border-dashed",SOLID:"tide-border-solid"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning",BLUE:"tide-font-blue",GREEN:"tide-font-green",LIME:"tide-font-lime",ORANGE:"tide-font-orange",PURPLE:"tide-font-purple",RED:"tide-font-red",SALMON:"tide-font-salmon",TEAL:"tide-font-teal",YELLOW:"tide-font-yellow",PRIMARY:{BLUE:"tide-font-primary-blue",GREEN:"tide-font-primary-green",LIME:"tide-font-primary-lime",ORANGE:"tide-font-primary-orange",PURPLE:"tide-font-primary-purple",RED:"tide-font-primary-red",SALMON:"tide-font-primary-salmon",TEAL:"tide-font-primary-teal",YELLOW:"tide-font-primary-yellow"}},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full",MIN_ZERO:"tide-min-height-0"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{DISABLED:"tide-opacity-disabled",OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},STRIKETHROUGH:{OFF:"tide-strikethrough-none",ON:"tide-strikethrough"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:{ON:"tide-underline-hover",OFF:"tide-underline-hover-none"},REST:{ON:"tide-underline",OFF:"tide-underline-none"}},USER_SELECT:{INITIAL:"tide-user-select-initial",NONE:"tide-user-select-none"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full",MIN_ZERO:"tide-min-width-0"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}},Kt={class:e.normalizeClass(["tide-divider"])},Qt=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ye.HORIZONTAL}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",Kt,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,r.orientation===e.unref(Ye).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).WIDTH.FULL]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE,e.unref(t).HEIGHT.FULL]])},null,2)]))}}),D=(n,r)=>{const o=n.__vccOpts||n;for(const[s,l]of r)o[s]=l;return o},he=D(Qt,[["__scopeId","data-v-c2dc7d09"]]),ot=(n,r,o)=>{const s=n[r];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((l,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+r+(r.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},Tt={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},P={LARGE:"large",SMALL:"small"},Ae={LARGE:"large",SMALL:"small"},$=n=>{let r=n&&typeof n=="number"?new Intl.NumberFormat().format(n):String(n||""),o=r;return n&&typeof n=="string"&&(o=o.replace(/\D/g,""),Number(o)?r=new Intl.NumberFormat().format(Number(o)):r="0"),r},Zt=n=>n&&typeof n=="string"?n.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(r=>r.slice(0,1).toUpperCase()+r.slice(1)).join(""):n,jt=n=>{let r=String(n&&typeof n=="number"?n:n||""),o=r;switch(o=o.replace(/\D/g,""),o.length){case 7:r=`${o.slice(0,3)}-${o.slice(3)}`;break;case 10:r=`${o.slice(0,3)}-${o.slice(3,6)}-${o.slice(6)}`;break;case 11:r=`${o.slice(0,1)}-${o.slice(1,4)}-${o.slice(4,7)}-${o.slice(7)}`;break;default:r=o;break}return r},Jt=n=>`$${n?$(n):String(n||"0")}`,y=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:P.SMALL}},setup(n){const r=n,o=e.ref();return e.watch(()=>r.icon,async()=>{const s=r.icon,l=Zt(s),[a]=s.split("-"),i=Tt[a==null?void 0:a.toUpperCase()],d=await(i?()=>ot(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-DubJwTjK.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-CjN1kUXQ.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-C6lX6Uq4.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-DWAt3bvk.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-DGwmb5aU.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-OvuV0qFX.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-D_aI1qUx.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-BKltWtRW.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-D3firMg5.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-CeynEY7N.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-BGB0MmOD.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-C8rS5sAC.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-C47iv80S.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-B9CKlbHK.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-DZoz1TA3.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-D7wbELIQ.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-DGqI6COV.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-DFFQWh2o.cjs"))}),`../assets/svg/icons/realm/${i}/Icon${l}.svg`,7):()=>ot(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-t66sPb0V.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-kA8NXjsF.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-Bwkom_hG.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-CFPMCDKK.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-DKSbfzb-.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-BBSCGFjG.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-CUHuJHxp.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-R7Q8EDQJ.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-09bz9o1h.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-Np65RzRK.cjs")),"../assets/svg/icons/IconArrowUp.svg":()=>Promise.resolve().then(()=>require("./IconArrowUp-DrhwTcVn.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-DGD2WaCW.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-DFObJ1fx.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-CRnGvhzj.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-Dx2metNr.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-o4YHr8QY.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-BTeYzS6k.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-CitAJpUy.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-B1covD1i.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-DfHe6Olt.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-6gUYtYnc.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-DseNWKcQ.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-CaH55o-0.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-DrU3Xqj-.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-CD73NwTB.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-CNHvWIJQ.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-Ddi_gQQW.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-ClKjVrRR.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-BMNU7dRH.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-BzlfUp1G.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-BAGay10U.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-CUu2bGqQ.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-BeD6bdL2.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-B0wTnd3o.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-Dxw5ILrL.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-DR6EZSwa.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-DiFJHvLw.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-NRbH-EHX.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-Gu6xRPyo.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-B8vfdBPh.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-CZBUTFa4.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-BeBqjATL.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-EyD544-R.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-BZJRlI_M.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-DK4VZH9M.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-DEpn1cmU.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-BztsqLLH.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-D5ouQYvY.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-nERjH9_F.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-DiO46Jg8.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-Dw6egtlq.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-D8bshXuI.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-CBdvVo3E.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-DGMqs4S7.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-DaxXQ30W.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-Yw_mSfTf.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-RCvnstwi.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-Dt-ErvEF.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-Cy-2UfCE.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-Qk8vvw-k.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-8L9ZpDnf.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-yLLGan-o.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-MifqZPeF.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-Bd6DwbOW.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-DAU6Gz1h.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-V0Phqs8e.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-yDTudxOJ.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-NaNwp1Mc.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-BrmBMIeS.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-B92dDFNi.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-B3U2CrvK.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-CzvHZ2QM.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-4cFO6TUe.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-BV6py3Ml.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-lMeRlCeA.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-Fdrg4GhV.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-D6f_hP65.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-DFmoGuh1.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-Bh7f_m7Y.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-ClefcQMe.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-R8-anQkg.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-bq9WQXQP.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-WGKPEFXj.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-DaJf6axF.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-wqKY3pYh.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-BMvUb0Cs.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-C6VqDhPq.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-DNCBzhHN.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-CFUkoB2U.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-BXRK5f8v.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-BoE63ZOl.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-hNE0axaE.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-BGo5LXI6.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-CYQVphPa.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-BsshtlDu.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-D6F7haVw.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-BLsCQf5E.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-Ctkcm5E6.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-CqnvhCzt.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-CIOne28A.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-CJ88esDh.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-CVBxtcwC.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-BWQS2Rd_.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-DgZxuRV0.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-x6T3V-vS.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-BWH_PXom.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-CaPJzPZ7.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-NlCMrmBH.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-CzkejYR_.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-BGEn0snz.cjs")),"../assets/svg/icons/IconStarFilled.svg":()=>Promise.resolve().then(()=>require("./IconStarFilled-CfYeQJic.cjs")),"../assets/svg/icons/IconStarHalf.svg":()=>Promise.resolve().then(()=>require("./IconStarHalf-Bx8Qyb3h.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-lRdtNX68.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-B-UnlgNS.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-BBxeKMXP.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-BPRR_9n0.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-Dw-Hvil4.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-CUIEiRQk.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-DwaYZ69z.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-CdPQRgZE.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-wxyn-htG.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-CdgPNDdg.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-DKmEJ9ke.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-B8oUr7zP.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-DhbEKdon.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-DaA3mBn4.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-42vl0HdH.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-B6HqcoA8.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-DOw3YseH.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-3AuFwkkg.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-dVEqMZb4.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-DfXiP6ob.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-D1f8wank.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-DQIbVzlX.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-CZskpiB7.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ChEAKSkt.cjs"))}),`../assets/svg/icons/Icon${l}.svg`,5))();o.value=e.markRaw(d.default)},{immediate:!0}),(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",r.size,e.unref(t).FLEX.SHRINK.OFF])},[o.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":n.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}}),S={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ARROW_UP:"arrow-up",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",STAR_FILLED:"star-filled",STAR_HALF:"star-half",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},en={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},tn={class:e.normalizeClass(["tide-accordion-item"])},nn=e.defineComponent({__name:"TideAccordionItem",props:e.mergeModels({hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=()=>{o.value=!o.value};return(l,a)=>(e.openBlock(),e.createElementBlock("div",tn,[r.hasTopDivider?(e.openBlock(),e.createBlock(he,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).ALIGN.X.LEFT,e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).PADDING.Y.HALF,e.unref(t).WIDTH.FULL]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),r.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(y,{icon:o.value?e.unref(S).EXPAND_LESS:e.unref(S).EXPAND_MORE,size:e.unref(P).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",o.value?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(l.$slots,"default",{},void 0,!0)],2)],2),r.hasBottomDivider?(e.openBlock(),e.createBlock(he,{key:1})):e.createCommentVNode("",!0)]))}}),rn=D(nn,[["__scopeId","data-v-8c88101f"]]),B={BUTTON:"button",LINK:"a"},H={BUTTON:"button",DIV:"div",LINK:"a"},It={linkComponent:B.LINK},Nt=Symbol("tide-config"),on=(n={})=>{const r={...It,...n};e.provide(Nt,r)},sn=()=>e.inject(Nt,It),se=e.defineComponent({__name:"InternalBaseLink",setup(n){const{linkComponent:r}=sn();return(o,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(r)),null,{default:e.withCtx(()=>[e.renderSlot(o.$slots,"default")]),_:3}))}}),V={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},Y={BLANK:"_blank",SELF:void 0},z=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:B.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:V.PRIMARY},type:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===B.BUTTON?r.type??B.BUTTON:void 0),s=e.computed(()=>r.element===B.LINK?se:r.element);return(l,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{"aria-label":r.icon,class:e.normalizeClass(["tide-button-icon",r.priority&&`tide-button-${r.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],r.element===e.unref(B).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:r.element===e.unref(B).BUTTON&&r.disabled,href:r.element===e.unref(B).LINK&&r.href?r.href:void 0,target:r.element===e.unref(B).LINK&&r.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:o.value},{default:e.withCtx(()=>[r.icon?(e.openBlock(),e.createBlock(y,{key:0,icon:r.icon,size:e.unref(P).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target","type"]))}}),Se=e.defineComponent({__name:"TideLink",props:{element:{default:B.LINK},href:{default:void 0},iconLeading:{default:void 0},iconSize:{default:P.SMALL},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},subtle:{type:Boolean,default:!1}},setup(n){const r=n,o=e.computed(()=>r.element===B.LINK?se:r.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).ALIGN.X.LEFT,n.subtle?[e.unref(t).UNDERLINE.REST.OFF,e.unref(t).UNDERLINE.HOVER.ON]:[e.unref(t).UNDERLINE.REST.ON,e.unref(t).UNDERLINE.HOVER.OFF]]),href:r.href,target:r.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:n.element===e.unref(B).BUTTON?e.unref(B).BUTTON:void 0},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:r.iconLeading,size:n.iconSize},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(r.label),3),r.iconTrailing?(e.openBlock(),e.createBlock(y,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:r.iconTrailing,size:n.iconSize},null,8,["class","icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target","type"]))}}),G={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},ln=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},ctaLabel:{default:void 0},isDismissible:{type:Boolean,default:!0},isToast:{type:Boolean,default:!1},type:{default:G.INFO}},emits:["close","ctaClick"],setup(n,{emit:r}){const o=n,s=r,l=e.useSlots(),a=e.computed(()=>{var d;const u=(d=l.default)==null?void 0:d.call(l);return u?u.some(c=>c.type!==e.Comment&&(typeof c.children!="string"||c.children.trim().length>0)):!1}),i=e.computed(()=>o.type===G.ERROR?S.PRIORITY_HIGH:o.type===G.SUCCESS?S.CHECK:o.type===G.WARNING?S.WARNING:S.INFORMATION);return(u,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([o.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,!o.isToast&&o.type===e.unref(G).ERROR?[e.unref(t).BG.GLOBAL.SURFACE.ERROR,e.unref(t).BORDER.COLOR.GLOBAL.ERROR]:"",!o.isToast&&o.type===e.unref(G).INFO?[e.unref(t).BG.GLOBAL.SURFACE.INFO,e.unref(t).BORDER.COLOR.GLOBAL.INFO]:"",!o.isToast&&o.type===e.unref(G).SUCCESS?[e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,e.unref(t).BORDER.COLOR.GLOBAL.SUCCESS]:"",!o.isToast&&o.type===e.unref(G).WARNING?[e.unref(t).BG.GLOBAL.SURFACE.WARNING,e.unref(t).BORDER.COLOR.GLOBAL.WARNING]:"",o.isToast?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).SHADOW.BOTTOM]:e.unref(t).BORDER.LEFT.TWO])},[o.isToast?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,o.type===e.unref(G).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,o.type===e.unref(G).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,o.type===e.unref(G).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,o.type===e.unref(G).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(y,{icon:i.value,size:e.unref(P).SMALL},null,8,["icon","size"])],2)),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.DIRECTION.ROW,a.value?"":[e.unref(t).AXIS1.BETWEEN,e.unref(t).MARGIN.RIGHT.HALF]])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD)},e.toDisplayString(o.heading),3),o.ctaLabel&&!a.value?(e.openBlock(),e.createBlock(Se,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(B).BUTTON,label:o.ctaLabel,onClick:d[0]||(d[0]=c=>s("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2),n.isDismissible?(e.openBlock(),e.createBlock(z,{key:1,class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(S).CLOSE,priority:e.unref(V).QUATERNARY,onClick:d[1]||(d[1]=c=>s("close")),"aria-label":"Close alert"},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.BODY_2,!o.isToast&&e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(u.$slots,"default",{},void 0,!0),o.ctaLabel&&a.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).MARGIN.TOP.HALF])},[o.ctaLabel?(e.openBlock(),e.createBlock(Se,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(B).BUTTON,label:o.ctaLabel,onClick:d[2]||(d[2]=c=>s("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2)],2))}}),an=D(ln,[["__scopeId","data-v-ef7f6cad"]]),X={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},Xe={[X.BLACK]:{borderColor:t.BORDER.COLOR.HIGH,iconColor:t.FONT.COLOR.SURFACE.DEFAULT},[X.BLUE]:{borderColor:t.BORDER.COLOR.GLOBAL.BLUE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.BLUE},[X.GREEN]:{borderColor:t.BORDER.COLOR.GLOBAL.GREEN,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.GREEN},[X.LIME]:{borderColor:t.BORDER.COLOR.GLOBAL.LIME,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.LIME},[X.ORANGE]:{borderColor:t.BORDER.COLOR.GLOBAL.ORANGE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.ORANGE},[X.PURPLE]:{borderColor:t.BORDER.COLOR.GLOBAL.PURPLE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.PURPLE},[X.RED]:{borderColor:t.BORDER.COLOR.GLOBAL.RED,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.RED},[X.SALMON]:{borderColor:t.BORDER.COLOR.GLOBAL.SALMON,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.SALMON},[X.TEAL]:{borderColor:t.BORDER.COLOR.GLOBAL.TEAL,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.TEAL},[X.YELLOW]:{borderColor:t.BORDER.COLOR.GLOBAL.YELLOW,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.YELLOW}},pt={YEARS_10:"10",YEARS_15:"15",YEARS_20:"20",YEARS_25:"25",YEARS_30:"30",YEARS_35:"35",YEARS_5:"5"},un=e.defineComponent({__name:"TideBadge",props:{color:{default:void 0},iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",r.isFloating||r.color?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,r.color&&[e.unref(t).BORDER.LEFT.TWO,e.unref(Xe)[r.color].borderColor],e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[r.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,r.color&&e.unref(Xe)[r.color].iconColor]),icon:r.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},e.toDisplayString(r.label),3)],2))}}),cn=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:pt.YEARS_5}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).AWARD_STAR},null,8,["class","icon"]),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},[e.createElementVNode("span",null,e.toDisplayString(r.years)+" year trusted partner",1)],2)],2))}}),dn=e.defineComponent({__name:"TideBadgeVerifiedVehicle",setup(n){return(r,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-verified-vehicle",e.unref(t).BG.SECONDARY,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).ELLIPSIS,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).VERIFIED},null,8,["class","icon"]),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},"Verified vehicle",2)],2))}}),fn=D(dn,[["__scopeId","data-v-c6d1b806"]]),En=["data-track"],mn={key:0},vn=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.breadCrumbs,(l,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[l.url?(e.openBlock(),e.createBlock(se,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":l.dataTrack||void 0,href:l.url},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.label),1)]),_:2},1032,["class","data-track","href"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":l.dataTrack||void 0},e.toDisplayString(l.label),11,En))],2),r.breadCrumbs&&a<r.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",mn,[e.createVNode(y,{icon:e.unref(S).ARROW_RIGHT,size:e.unref(P).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),On=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:B.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:V.PRIMARY},size:{default:Ae.LARGE},type:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===B.BUTTON?r.type??B.BUTTON:void 0),s=e.computed(()=>r.element===B.LINK?se:r.element);return(l,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{class:e.normalizeClass(["tide-button",r.priority&&`tide-button-${r.priority}`,r.element===e.unref(B).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],r.element===e.unref(B).LINK?e.unref(t).UNDERLINE.REST.OFF:"",n.size===e.unref(Ae).SMALL?[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BORDER.RADIUS.QUARTER]:[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE,e.unref(t).BORDER.RADIUS.HALF],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:r.element===e.unref(B).BUTTON&&r.disabled,href:r.element===e.unref(B).LINK&&r.href?r.href:void 0,target:r.element===e.unref(B).LINK&&r.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:o.value},{default:e.withCtx(()=>[r.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,icon:r.iconLeading,size:n.size===e.unref(Ae).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(r.label)+" ",1),r.iconTrailing?(e.openBlock(),e.createBlock(y,{key:1,icon:r.iconTrailing,size:n.size===e.unref(Ae).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target","type"]))}}),Ln=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:H.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.element===B.LINK?se:r.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{class:e.normalizeClass(["tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],r.element===e.unref(H).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",r.element===e.unref(H).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:r.element===e.unref(H).BUTTON&&r.disabled,href:r.element===e.unref(H).LINK&&r.href?r.href:void 0,type:n.element===e.unref(H).BUTTON?e.unref(H).BUTTON:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(r.label),3)]),_:1},8,["class","disabled","href","type"]))}}),gt=D(Ln,[["__scopeId","data-v-c2c8d6bb"]]),Rn=["data-track","onClick"],An=e.defineComponent({__name:"TideButtonSegmented",props:e.mergeModels({tabs:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=e.useModel(n,"modelValue"),o=s=>{r.value=s};return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).GAP.QUARTER,e.unref(t).OVERFLOW.XY.AUTO,e.unref(t).PADDING.FULL.QUARTER])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tabs,(a,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",i===r.value?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.HALF,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WHITESPACE_WRAP.OFF,e.unref(t).WIDTH.FULL]),"data-track":a.dataTrack||void 0,key:a.label,onClick:u=>o(i),type:"button"},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(a.label),3),a.count&&a.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(a.count)+") ",3)):e.createCommentVNode("",!0)],10,Rn))),128))],2))}}),Tn=D(An,[["__scopeId","data-v-a67a4351"]]),Te={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},In=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:Te.INFORMATIONAL},href:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.href?se:(r.type===Te.INFORMATIONAL,H.DIV));return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(Te).INFORMATIONAL&&"hoverable",n.type===e.unref(Te).SELECTABLE&&n.selected&&"selected"]),href:n.href,type:o.value===e.unref(H).BUTTON?e.unref(H).BUTTON:void 0},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href","type"]))}}),Nn=D(In,[["__scopeId","data-v-910f5dcd"]]),st=8,lt=8,pn=e.defineComponent({__name:"TideCarousel",props:{hasDots:{type:Boolean,default:void 0},isFloating:{type:Boolean,default:!1},isHeadline1:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isScrollByPage:{type:Boolean,default:!0},maxDots:{default:5},subtitle:{default:void 0},title:{default:void 0}},emits:["slidesAddedToView"],setup(n,{emit:r}){const o=n,s=r,l=e.ref(null),a=e.ref(null),i=e.ref(0),u=e.ref(0),d=e.ref(null),c=e.ref(0),f=e.ref(!0),E=e.ref(!1),v=e.ref(!0),m=e.ref(null),L=e.ref([]),O=e.ref([]),A=e.ref(null),T=e.ref(void 0),R=e.ref(1),p=e.computed(()=>u.value+1),N=e.computed(()=>I.value*lt+(I.value-1)*st),I=e.computed(()=>o.maxDots>C.value?C.value:o.maxDots),C=e.computed(()=>{if(!L.value.length)return 0;if(!o.isScrollByPage)return L.value.length;const g=Math.floor(L.value.length/R.value);return L.value.length%R.value?g+1:g});let h;const w=g=>{let F="";return g===u.value&&(F="tide-carousel-dot-active"),Math.abs(u.value-g)===1&&(F="tide-carousel-dot-neighbor"),F},j=(g,F)=>{const k=F.getBoundingClientRect(),x=k.left+k.width,ee=g.getBoundingClientRect();return ee.left+ee.width<=x&&ee.left>=k.left},b=g=>{if(!T.value)return;const F=g.changedTouches[0],k=T.value.clientX-F.clientX,x=F.clientY-T.value.clientY;Math.abs(k)>Math.abs(x)&&rt(k)},_=g=>{T.value=g.touches[0]},J=g=>{const F=g.shiftKey,k=Math.abs(g.deltaY)>=80;k&&!F||(g.shiftKey&&g.preventDefault(),clearTimeout(h),h=window.setTimeout(()=>{var x;if(k)rt(g.deltaY);else{const ee=((x=L.value[O.value[0]])==null?void 0:x.offsetLeft)||0;Le(ee)}},100))},Oe=()=>{a.value&&(i.value=a.value.scrollWidth,c.value=a.value.clientWidth,v.value=i.value>c.value,R.value=L.value.filter(g=>j(g,a.value)).length)},nt=()=>{const g={root:l==null?void 0:l.value,rootMargin:"0px 1px 0px 0px",threshold:1};m.value=new IntersectionObserver(F=>{let k=[];F.forEach(x=>{const ee=L.value.indexOf(x.target);x.isIntersecting?(k.push(ee),O.value.push(ee)):O.value=O.value.filter(ge=>ge!==ee),O.value.sort((ge,$t)=>ge-$t)}),f.value=O.value.includes(0),E.value=O.value.includes(L.value.length-1),k.length>0&&s("slidesAddedToView",k)},g),L.value.forEach(F=>{m.value&&m.value.observe(F)})},Wt=()=>{const g=()=>{a.value!==null&&(L.value=Array.from(a.value.children),nt())};A.value=new MutationObserver(g),a.value&&A.value.observe(a.value,{childList:!0})},rt=g=>{g<0?o.isScrollByPage?Ge():xe():o.isScrollByPage?we():Me()},Le=g=>{if(a.value===null)return;const F=g<=a.value.scrollLeft;u.value=F?u.value-1:u.value+1,a.value.scrollTo({behavior:"smooth",left:g}),qt(F)},we=()=>{var k;if(O.value.length===0||E.value)return;const g=O.value[O.value.length-1]+1,F=(k=L.value[g])==null?void 0:k.offsetLeft;Le(F)},Ge=()=>{var k;if(O.value.length===0||f.value)return;const g=O.value[0]-O.value.length,F=((k=L.value[g])==null?void 0:k.offsetLeft)||0;Le(F)},Me=()=>{if(O.value.length===0)return;const g=O.value.length>1?O.value[1]:O.value[0]+1;Le(L.value[g].offsetLeft)},xe=()=>{if(O.value.length===0)return;const g=O.value[0]-1;Le(L.value[g].offsetLeft)},qt=g=>{if(!d.value||I.value>=C.value)return;const k=I.value%2!==0||g?Math.floor(I.value/2)+1:Math.floor(I.value/2);d.value.scrollTo({behavior:"smooth",left:p.value<k?0:(p.value-k)*(lt+st)})};return e.onMounted(()=>{a.value!==null&&(L.value=Array.from(a.value.children),Oe(),nt(),Wt(),window&&window.addEventListener("resize",Oe))}),e.onUnmounted(()=>{var g,F;(g=m.value)==null||g.disconnect(),(F=A.value)==null||F.disconnect(),window.removeEventListener("resize",Oe)}),(g,F)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.ONE,e.unref(t).WIDTH.MAX_FULL]),ref_key:"carouselRef",ref:l},[!o.isFloating&&v.value||o.title?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,o.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[o.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[o.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([n.isHeadline1?e.unref(t).FONT.ROLE.HEADLINE_1:e.unref(t).FONT.ROLE.HEADLINE_2])},e.toDisplayString(o.title),3)):e.createCommentVNode("",!0),o.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(o.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),!o.isFloating&&v.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(z,{disabled:f.value,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).TERTIARY,onClick:F[0]||(F[0]=k=>n.isScrollByPage?Ge():xe())},null,8,["disabled","icon","priority"]),e.createVNode(z,{disabled:E.value,icon:e.unref(S).CHEVRON_RIGHT,priority:e.unref(V).TERTIARY,onClick:F[1]||(F[1]=k=>n.isScrollByPage?we():Me())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(g.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX])},[e.createElementVNode("ul",{class:e.normalizeClass(["tide-carousel-container",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON]),ref_key:"containerRef",ref:a,onTouchend:b,onTouchstartPassive:_,onWheel:J},[e.renderSlot(g.$slots,"default",{},void 0,!0)],34),n.hasDots&&C.value>1?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).MARGIN.BOTTOM.HALF,e.unref(t).WIDTH.FULL,e.unref(t).POINTER_EVENTS.OFF])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-carousel-dots-container"]),style:e.normalizeStyle({width:`${N.value}px`})},[e.createElementVNode("div",{class:e.normalizeClass(["tide-carousel-dots",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.START,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).POINTER_EVENTS.OFF,e.unref(t).SCROLLBAR.OFF]),ref_key:"dotsRef",ref:d},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(k,x)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-carousel-dot",e.unref(t).FLEX.SHRINK.OFF,e.unref(t).HEIGHT.ZERO,e.unref(t).WIDTH.ZERO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,w(x)]),key:x},null,2))),128))],2)],4)],2)):e.createCommentVNode("",!0),n.isFloating&&v.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.TOP,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,o.isHideawayButtons?"hideaway":""])},[e.createVNode(z,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:f.value,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:F[2]||(F[2]=k=>n.isScrollByPage?Ge():xe())},null,8,["class","disabled","icon","priority"]),e.createVNode(z,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:E.value,icon:e.unref(S).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:F[3]||(F[3]=k=>n.isScrollByPage?we():Me())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),Ct=D(pn,[["__scopeId","data-v-9682219b"]]),gn=e.defineComponent({__name:"TideChipAction",props:{element:{default:B.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const r=n,o=e.computed(()=>r.element===B.LINK?se:r.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.value),{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.REST.OFF]),href:r.href,target:r.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:n.element===e.unref(B).BUTTON?e.unref(B).BUTTON:void 0},{default:e.withCtx(()=>[e.createVNode(y,{icon:e.unref(S).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(r.label),1)]),_:1},8,["class","href","target","type"]))}}),Cn=D(gn,[["__scopeId","data-v-e16b3c85"]]),hn=e.defineComponent({__name:"TideChipFilter",props:e.mergeModels({label:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=e.useModel(n,"modelValue"),o=()=>{r.value=!r.value};return(s,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",r.value?["active",e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2]),onClick:o,type:"button"},[e.renderSlot(s.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}}),Sn=D(hn,[["__scopeId","data-v-d89702d4"]]),Fn=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2]),type:"button"},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),e.createVNode(y,{icon:e.unref(S).CLOSE},null,8,["icon"])],2))}}),Dn=D(Fn,[["__scopeId","data-v-ebaa5f06"]]),Bn={class:"tide-columns"},yn={class:"tide-columns-column"},Pn={class:"tide-columns-column"},bn={class:"tide-columns-column"},kn={class:"tide-columns-column"},Un=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("section",Bn,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(r.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",yn,[e.renderSlot(o.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",Pn,[e.renderSlot(o.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",bn,[e.renderSlot(o.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",kn,[e.renderSlot(o.$slots,"section4",{},void 0,!0)])],2)]))}}),_n=D(Un,[["__scopeId","data-v-c92a6639"]]),ht=Symbol("tide-form"),St=()=>{const n=e.ref(!1);return e.provide(ht,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},ye=()=>e.inject(ht),Vn=e.defineComponent({__name:"TideForm",emits:["submit"],setup(n,{emit:r}){const o=r,{revealValidationErrors:s}=St(),l=a=>{s(),o("submit",a)};return(a,i)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(l,["prevent"]),novalidate:""},[e.renderSlot(a.$slots,"default")],32))}}),ie={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},wn=["media","srcset"],Gn=["alt","fetchpriority","height","loading","src","width"],He="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",Mn=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:ie.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(n){const r=n,o=e.ref(),s=e.ref(),l=e.computed(()=>{switch(r.objectFit){case ie.CONTAIN:return t.OBJECT.CONTAIN;case ie.COVER:return t.OBJECT.COVER;case ie.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return ie.COVER}}),a=()=>{var d,c;const i=(d=s.value)==null?void 0:d.currentSrc,u=(c=o.value)==null?void 0:c.querySelector(`source[srcset="${i}"]`);i&&u?u.srcset=He:s.value&&(s.value.src=He)};return(i,u)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:o},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.sources,d=>(e.openBlock(),e.createElementBlock("source",{key:d.srcset,media:`(min-width:${d.media}px)`,srcset:d.srcset},null,8,wn))),128)),e.createElementVNode("img",{alt:n.alt,class:e.normalizeClass(["tide-image-img",!r.width&&e.unref(t).WIDTH.FULL,!r.height&&e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,l.value]),fetchpriority:n.isLazy?void 0:"high",height:r.height,loading:r.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:n.src??He,width:r.width,onError:a},null,42,Gn)],2))}}),Ft=D(Mn,[["__scopeId","data-v-3841f1c1"]]),xn=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-image-background",e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(Ft,{alt:r.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":r.isLazy,"object-fit":e.unref(ie).COVER,sources:r.sources,src:r.src},null,8,["alt","class","is-lazy","object-fit","sources","src"])],2),e.renderSlot(o.$slots,"default",{},void 0,!0)],2))}}),Hn=D(xn,[["__scopeId","data-v-8f2f8198"]]),zn={key:0,class:e.normalizeClass(["tide-indicator-label"])},Yn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",r.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,r.label&&r.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],r.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[r.label?(e.openBlock(),e.createElementBlock("div",zn,e.toDisplayString(r.label),1)):e.createCommentVNode("",!0)],2))}}),Xn=D(Yn,[["__scopeId","data-v-d402ac82"]]),Pe=e.defineComponent({__name:"TideInputSupportingText",props:{isError:{type:Boolean},message:{}},setup(n){return(r,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.LABEL_3,n.isError?[e.unref(t).FONT.COLOR.GLOBAL.ERROR]:[e.unref(t).FONT.COLOR.SURFACE.DEFAULT]])},[n.isError?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),Dt="Please enter a valid value",te={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},de=(n,r)=>o=>{let s=te.NO_ERROR;return o.trim().match(n)||(s={message:r??Dt,valid:!1}),s},Wn=({maxlength:n,minlength:r,required:o,value:s})=>{const l=s.length===0&&!o,a=n&&s.length>n;return!(!l&&r&&s.length<r)&&!a},qe=({errorFromProps:n,maxlength:r,minlength:o,required:s,validators:l,value:a})=>{var i;if(n!=="")return{message:n,valid:!1};if(l){const u=$n(a.value??"",l);if(!u.valid)return u}if(s&&((i=a.value)==null?void 0:i.trim())==="")return te.REQUIRED;if(r||o){const u=qn({maxlength:r,minlength:o,required:s,value:a.value});if(!u.valid)return u}return te.NO_ERROR},qn=({maxlength:n,minlength:r,required:o,value:s})=>{const l={message:"",valid:!0};return l.valid=Wn({maxlength:n,minlength:r,required:o,value:s}),l.valid||(l.message=Dt,n&&r?l.message=`Enter a value between ${$(r)} and ${$(n)} characters`:n?l.message=`Use ${$(n)} characters or fewer`:r&&(l.message=`Enter at least ${$(r)} characters`)),l};function $n(n,r){for(const o of r){const s=o(n);if(!s.valid)return s}return{message:"",valid:!0}}const Kn=["checked","disabled","name","id"],Qn=e.defineComponent({__name:"TideInputCheckbox",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0},required:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,l=e.useModel(n,"modelValue"),a=ye(),i=e.ref(!1),u=e.ref(te.NO_ERROR),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>l.value||o.indeterminate),f=e.computed(()=>E.value?!0:i.value?!u.value.valid:!1),E=e.computed(()=>o.error!==""),v=e.computed(()=>f.value&&u.value.message),m=()=>o.error!==""?{message:o.error,valid:!1}:!o.required||c.value?te.NO_ERROR:te.REQUIRED;return e.watchEffect(()=>{u.value=m()}),e.watch(l,()=>{l.value&&(i.value=!0)},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,L=>{L&&(i.value=!0)},{immediate:!0}),e.watch(u,()=>{s("valid",u.value.valid)},{deep:!0,immediate:!0}),(L,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER])},[e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).AXIS2.CENTER,e.unref(t).DISPLAY.FLEX,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).GAP.HALF,e.unref(t).USER_SELECT.NONE,f.value?e.unref(t).FONT.COLOR.GLOBAL.ERROR:e.unref(t).FONT.COLOR.SURFACE.DEFAULT,n.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]])},[e.withDirectives(e.createElementVNode("input",{checked:c.value,class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,ref:"input",id:n.inputId,type:"checkbox","onUpdate:modelValue":O[0]||(O[0]=A=>l.value=A)},null,8,Kn),[[e.vModelCheckbox,l.value]]),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).POSITION.RELATIVE,c.value?[f.value?e.unref(t).BG.GLOBAL.PRIMARY.ERROR:[e.unref(t).BG.SECONDARY,e.unref(t).BORDER.COLOR.HIGH]]:[f.value?[e.unref(t).BORDER.COLOR.GLOBAL.ERROR,e.unref(t).BG.GLOBAL.SURFACE.ERROR]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT]]])},[c.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(S).REMOVE:e.unref(S).CHECK,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(d.value),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2),v.value?(e.openBlock(),e.createBlock(Pe,{key:0,message:v.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),Zn=D(Qn,[["__scopeId","data-v-31774f71"]]),jn=["checked","disabled","name","id"],Jn=["for"],er={},tr=e.defineComponent({...er,__name:"TideInputCheckboxDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const r=n,o=e.computed(()=>r.checked||r.indeterminate);return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,n.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:o.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:r.disabled,name:r.name,ref:"input",onClick:l[0]||(l[0]=e.withModifiers(()=>{},["prevent"])),id:r.inputId,type:"checkbox"},null,10,jn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,o.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,o.value&&"checked",n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[o.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:r.indeterminate?e.unref(S).REMOVE:e.unref(S).CHECK,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:r.inputId,onClick:l[1]||(l[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(r.number))+") ",3)):e.createCommentVNode("",!0)],10,Jn)):e.createCommentVNode("",!0)],2))}}),nr=D(tr,[["__scopeId","data-v-345366c5"]]),rr=["for"],or=["disabled","name","value","id"],sr=e.defineComponent({__name:"TideInputRadio",props:e.mergeModels({disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{},number:{default:void 0},value:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=e.computed(()=>o.value===r.value);return(l,a)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).USER_SELECT.NONE,r.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]]),for:r.inputId},[e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,value:n.value,id:r.inputId,type:"radio","onUpdate:modelValue":a[0]||(a[0]=i=>o.value=i)},null,8,or),[[e.vModelRadio,o.value]]),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,s.value?[e.unref(t).BORDER.COLOR.HIGH]:[e.unref(t).BORDER.COLOR.DEFAULT],e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,s.value&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(r.number))+") ",3)):e.createCommentVNode("",!0)],2)],10,rr))}}),lr=D(sr,[["__scopeId","data-v-33fad71e"]]),ir=["checked","id"],ar=["for"],ur={},cr=e.defineComponent({...ur,__name:"TideInputRadioDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const r=n,o=e.ref(r.checked);return e.watch(()=>r.checked,(s,l)=>{(s!==l||s!==o.value)&&(o.value=s)}),(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,r.disabled&&"disabled"])},[e.createElementVNode("input",{checked:o.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:r.inputId,name:"",type:"radio",value:""},null,10,ir),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,o.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,o.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,r.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:r.inputId},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),r.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref($)(r.number))+") ",3)):e.createCommentVNode("",!0)],10,ar)],2))}}),dr=D(cr,[["__scopeId","data-v-bde66757"]]),fr={NUMBER:$,PHONE:jt,PRICE:Jt},le={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@(?!(?:[a-zA-Z0-9-]+\.)*(?<tld>[a-zA-Z]{2,})\.\k<tld>$)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,zip:/^\d{5}$/},Er={ALPHA_NUMBER_EMPTY:de(le.alphaNumberOrEmpty),ALPHA_SPACE:de(le.alphaSpace),EMAIL:de(le.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:de(le.numberFormatted,"Enter a valid number"),PHONE:de(le.phone,"Enter a valid phone number"),ZIP:de(le.zip,"Enter a valid Zip code")},ne={EAGER:"eager",LAZY:"lazy"},mr=["for"],vr=["disabled","name","required","id"],Or=["label"],Lr=["value"],Rr=["selected","value"],Ar=["selected","value"],Tr=e.defineComponent({__name:"TideInputSelect",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:ne.LAZY},label:{default:void 0},name:{default:void 0},optgroups:{default:void 0},options:{default:void 0},required:{type:Boolean,default:!1},supportingText:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,l=e.useModel(n,"modelValue"),a=ye(),i=e.ref(te.NO_ERROR),u=e.ref(!1),d=e.useId(),c=e.ref(!1),f=e.ref(null),E=e.computed(()=>o.required?`${o.label} *`:o.label),v=e.computed(()=>m.value?!0:c.value?!i.value.valid:!1),m=e.computed(()=>o.error!==""),L=e.computed(()=>u.value||!O.value),O=e.computed(()=>l.value===""),A=e.computed(()=>v.value&&i.value.message||o.supportingText),T=()=>{var I;const N=new MouseEvent("mousedown");(I=f==null?void 0:f.value)==null||I.dispatchEvent(N)},R=()=>{u.value=!0,o.errorDisplay===ne.EAGER&&(c.value=!0)},p=()=>{u.value=!1,o.errorDisplay===ne.LAZY&&(c.value=!0)};return e.watchEffect(()=>{i.value=qe({errorFromProps:o.error,required:o.required,value:l})}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,N=>{N&&(c.value=!0)},{immediate:!0}),e.watch(i,()=>{s("valid",i.value.valid)},{deep:!0,immediate:!0}),(N,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",v.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,o.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:T},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([L.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:e.unref(d)},e.toDisplayString(E.value),11,mr)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,name:n.name,ref_key:"selectElement",ref:f,required:n.required,onFocus:R,onFocusout:p,id:e.unref(d),"onUpdate:modelValue":I[0]||(I[0]=C=>l.value=C)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.optgroups,C=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[C.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:C.label,label:C.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.options,h=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:h.value,value:h.value},e.toDisplayString(h.label),11,Lr))),128))],10,Or)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:C.value,selected:l.value===C.value?!0:void 0,value:C.value},e.toDisplayString(C.label),11,Rr))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,C=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:C.value,selected:l.value===C.value?!0:void 0,value:C.value},e.toDisplayString(C.label),11,Ar))),128))],42,vr),[[e.vModelSelect,l.value]])],2),e.createVNode(y,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(S).EXPAND_MORE,size:e.unref(P).SMALL},null,8,["class","icon","size"])],2),A.value?(e.openBlock(),e.createBlock(Pe,{key:0,"is-error":v.value,message:A.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Ir=D(Tr,[["__scopeId","data-v-ba0a10fe"]]),Bt="Please enter a valid value.",$e=(n,r)=>typeof n=="string"&&n.length>0?n:typeof r=="string"&&r.length>0?r:Bt,Ke=(n,r)=>n!==!1||r!==!1,Nr=({maxlength:n,minlength:r,required:o,value:s})=>{const l=s.length===0&&!o,a=n&&s.length>n;return!(!l&&r&&s.length<r)&&!a},yt=({error:n,errorFromProps:r,maxlength:o,minlength:s,required:l=!1,validators:a,value:i})=>{if(n.value=r||!1,!n.value&&a){const u=gr((i==null?void 0:i.value)||"",a);u.valid||(n.value=u.message)}if(!n.value&&(o||s)){const u=pr({maxlength:o,minlength:s,required:l,value:(i==null?void 0:i.value)||""});u.valid||(n.value=u.message)}},pr=({maxlength:n,minlength:r,required:o=!1,value:s})=>{const l={message:"",valid:!0};return l.valid=Nr({maxlength:n,minlength:r,required:o,value:s}),l.valid||(l.message=Bt,n&&r?l.message=`Please enter a value between ${r} and ${n} characters in length.`:n?l.message=`Please enter a value no more than ${n} characters in length.`:r&&(l.message=`Please enter a value no less than ${r} characters in length.`)),l};function gr(n,r){for(const o of r){const s=o(n);if(!s.valid)return s}return{message:"",valid:!0}}const Cr=["for"],hr=["disabled","name","required","id"],Sr=["label"],Fr=["value"],Dr=["selected","value"],Br=["selected","value"],yr={},Pr=e.defineComponent({...yr,__name:"TideInputSelectDeprecated",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(n,{expose:r}){const o=n,s=e.ref(o.error),l=e.ref(!1),a=e.ref(null),i=e.ref(o.required),u=e.ref(o.value),d=e.computed(()=>$e(o.error,s.value)),c=e.computed(()=>o.required?`${o.label} *`:o.label),f=e.computed(()=>o.required&&!u.value||Ke(s.value,o.error)),E=e.computed(()=>l.value||!v.value),v=e.computed(()=>u.value===void 0),m=()=>{var T;const A=new MouseEvent("mousedown");(T=a==null?void 0:a.value)==null||T.dispatchEvent(A)},L=()=>{l.value=!0},O=()=>{l.value=!1};return e.watch(()=>o.value,(A,T)=>{(A!==T||A!==u.value)&&(u.value=A)}),r({error:s,value:u}),(A,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,o.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:m},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:o.inputId},e.toDisplayString(c.value),11,Cr)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,name:n.name,ref_key:"input",ref:a,required:i.value,onFocus:L,onFocusout:O,id:o.inputId,"onUpdate:modelValue":T[0]||(T[0]=R=>u.value=R)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.optgroups,R=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[R.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.label,label:R.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.options,p=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:p.value,value:p.value},e.toDisplayString(p.label),11,Fr))),128))],10,Sr)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.value,selected:u.value===R.value?!0:void 0,value:R.value},e.toDisplayString(R.label),11,Dr))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,R=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.value,selected:u.value===R.value?!0:void 0,value:R.value},e.toDisplayString(R.label),11,Br))),128))],42,hr),[[e.vModelSelect,u.value]])],2),e.createVNode(y,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(S).EXPAND_MORE,size:e.unref(P).SMALL},null,8,["class","icon","size"])],2),o.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([]),icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?d.value:o.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),br=D(Pr,[["__scopeId","data-v-4cfaa9a8"]]),U={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},fe={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},kr=(n,r)=>{if(r)return r;switch(n){case U.TEL:return fe.TEL;case U.SEARCH:return fe.SEARCH;case U.NUMBER:return fe.NUMERIC;case U.EMAIL:return fe.EMAIL;case U.URL:return fe.URL}},Ur=["for"],_r=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],Vr=e.defineComponent({__name:"TideInputText",props:e.mergeModels({autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:ne.LAZY},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},inputmode:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:U.TEXT},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,l=e.useModel(n,"modelValue"),a=ye(),i=e.ref(te.NO_ERROR),u=e.ref(!1),d=e.ref(null),c=e.ref(!1),f=e.ref(!1),E=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),v=e.computed(()=>m.value?!0:c.value?!i.value.valid:!1),m=e.computed(()=>o.error!==""),L=e.computed(()=>u.value||!T.value),O=e.computed(()=>kr(o.type,o.inputmode)),A=e.computed(()=>o.type===U.PASSWORD&&f.value===!0?U.TEXT:o.type),T=e.computed(()=>l.value===""),R=e.computed(()=>o.hasClear&&l.value&&o.type!==U.PASSWORD),p=e.computed(()=>o.type===U.PASSWORD),N=e.computed(()=>v.value&&i.value.message||o.supportingText),I=()=>{var b;l.value="",(b=d.value)==null||b.focus()},C=()=>{u.value=!0,o.errorDisplay===ne.EAGER&&(c.value=!0)},h=()=>{u.value=!1,o.errorDisplay===ne.LAZY&&(c.value=!0)},w=()=>{var b;(b=d.value)==null||b.focus()},j=b=>{u.value&&b.target!==d.value&&b.preventDefault()};return e.watchEffect(()=>{i.value=qe({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:l})}),e.watch([l,()=>o.transformValue],()=>{var _,J;if(!o.transformValue)return;const b=((J=(_=l.value)==null?void 0:_.match(/\d/g))==null?void 0:J.join(""))||void 0;l.value=b?o.transformValue(b):""},{immediate:!0}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,b=>{b&&(c.value=!0)},{immediate:!0}),e.watch(i,()=>{s("valid",i.value.valid)},{deep:!0,immediate:!0}),(b,_)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",v.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).PADDING.Y.HALF,R.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:w,onMousedown:j},[n.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,L.value?"":"offset"])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",L.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(E.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:n.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED]),disabled:n.disabled,inputmode:O.value,maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"inputElement",ref:d,required:n.required,type:A.value,onFocus:C,onFocusout:h,id:n.inputId,"onUpdate:modelValue":_[0]||(_[0]=J=>l.value=J)},null,42,_r),[[e.vModelDynamic,l.value]])],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,L.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),R.value?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:I,type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:_[1]||(_[1]=J=>f.value=!f.value),type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,Ur),N.value?(e.openBlock(),e.createBlock(Pe,{key:0,"is-error":v.value,message:N.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),wr=D(Vr,[["__scopeId","data-v-dd74fdf0"]]),Gr=["for"],Mr=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],xr={},Hr=e.defineComponent({...xr,__name:"TideInputTextDeprecated",props:{autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:U.TEXT},validators:{default:void 0},value:{default:void 0}},setup(n,{expose:r}){const o=n,s=e.ref(o.error),l=e.ref(!1),a=e.ref(null),i=e.ref(!1),u=e.ref(o.value),d=e.computed(()=>$e(o.error,s.value)),c=e.computed(()=>o.required&&o.label?`${o.label} *`:o.label),f=e.computed(()=>o.hasClear&&u.value),E=e.computed(()=>o.required&&u.value!==void 0&&!u.value||Ke(s.value,o.error)),v=e.computed(()=>l.value||!m.value),m=e.computed(()=>u.value===""||u.value===void 0),L=e.computed(()=>o.type===U.PASSWORD&&i.value===!0?U.TEXT:o.type),O=()=>{var I;u.value="",(I=a.value)==null||I.focus()},A=()=>{l.value=!0},T=()=>{l.value=!1,u.value||(u.value=""),p()},R=()=>{var I,C;if(o.transformValue){const h=((C=(I=u.value)==null?void 0:I.match(/\d/g))==null?void 0:C.join(""))||void 0;u.value=h?o.transformValue(h):""}},p=()=>{yt({error:s,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:u})},N=I=>{u.value=I};return e.watch(()=>o.value,(I,C)=>{(I!==C||I!==u.value)&&(u.value=I)}),r({error:s,required:o.required,updateValue:N,value:u}),(I,C)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,v.value?"":"offset"])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",v.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(c.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:n.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"input",ref:a,required:n.required,type:L.value,onChange:p,onFocus:A,onFocusout:T,onInput:R,id:n.inputId,"onUpdate:modelValue":C[0]||(C[0]=h=>u.value=h)},null,42,Mr),[[e.vModelDynamic,u.value]])],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,v.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&n.type!==e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:O,type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:C[1]||(C[1]=h=>i.value=!i.value),type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,Gr),n.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([]),icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?d.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),zr=D(Hr,[["__scopeId","data-v-dbb301e9"]]),Yr=["for"],Xr=["maxlength","minlength","name","required","rows","id"],Wr=e.defineComponent({__name:"TideInputTextarea",props:e.mergeModels({error:{default:""},errorDisplay:{default:ne.LAZY},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,l=e.useModel(n,"modelValue"),a=ye(),i=e.ref(te.NO_ERROR),u=e.ref(!1),d=e.ref(!1),c=e.ref(null),f=e.computed(()=>o.required?`${o.label} *`:o.label),E=e.computed(()=>v.value?!0:d.value?!i.value.valid:!1),v=e.computed(()=>o.error!==""),m=e.computed(()=>u.value||!L.value),L=e.computed(()=>l.value===""),O=e.computed(()=>E.value&&i.value.message||o.supportingText),A=()=>{u.value=!0,o.errorDisplay===ne.EAGER&&(d.value=!0)},T=()=>{u.value=!1,o.errorDisplay===ne.LAZY&&(d.value=!0)},R=()=>{var N;(N=c.value)==null||N.focus()},p=N=>{u.value&&N.target!==c.value&&N.preventDefault()};return e.watchEffect(()=>{i.value=qe({errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,validators:o.validators,value:l})}),e.watch(()=>a==null?void 0:a.forceShowErrors.value,N=>{N&&(d.value=!0)},{immediate:!0}),e.watch(i,()=>{s("valid",i.value.valid)},{deep:!0,immediate:!0}),(N,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,E.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:R,onMousedown:p},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",e.unref(t).PADDING.X.ONE,m.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(f.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"textareaElement",ref:c,required:n.required,rows:n.rows,onFocus:A,onFocusout:T,id:n.inputId,"onUpdate:modelValue":I[0]||(I[0]=C=>l.value=C)},null,42,Xr),[[e.vModelText,l.value]])],42,Yr),O.value?(e.openBlock(),e.createBlock(Pe,{key:0,"is-error":E.value,message:O.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),qr=D(Wr,[["__scopeId","data-v-234beffe"]]),$r=["for"],Kr=["maxlength","minlength","name","required","rows","id"],Qr={},Zr=e.defineComponent({...Qr,__name:"TideInputTextareaDeprecated",props:{error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(n,{expose:r}){const o=n,s=e.ref(o.error),l=e.ref(!1),a=e.ref(null),i=e.ref(o.value),u=e.computed(()=>$e(o.error,s.value)),d=e.computed(()=>o.required?`${o.label} *`:o.label),c=e.computed(()=>o.required&&i.value!==void 0&&!i.value||Ke(s.value,o.error)),f=e.computed(()=>l.value||!E.value),E=e.computed(()=>i.value===""||i.value===void 0),v=()=>{l.value=!0},m=()=>{l.value=!1,i.value||(i.value="")},L=()=>yt({error:s,errorFromProps:o.error,maxlength:o.maxlength,minlength:o.minlength,required:o.required,value:i});return e.watch(()=>o.value,(O,A)=>{(O!==A||O!==i.value)&&(i.value=O)}),r({error:s,required:o.required,value:i}),(O,A)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,c.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!c.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(d.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"input",ref:a,required:n.required,rows:n.rows,onChange:L,onFocus:v,onFocusout:m,id:n.inputId,"onUpdate:modelValue":A[0]||(A[0]=T=>i.value=T)},null,42,Kr),[[e.vModelText,i.value]])],10,$r),n.supportingText||c.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[c.value?(e.openBlock(),e.createBlock(y,{key:0,icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(c.value?u.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),jr=D(Zr,[["__scopeId","data-v-9b7af68f"]]),Jr={},eo=e.defineComponent({...Jr,__name:"TideMenuItem",props:{element:{default:B.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},iconTrailing:{default:void 0},label:{}},setup(n){return(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-menu-item",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.ZERO,e.unref(t).DISPLAY.FLEX,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).UNDERLINE.REST.OFF,e.unref(t).WIDTH.FULL]),href:n.href,target:n.isNewTab?e.unref(Y).BLANK:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(n.label),1),n.iconTrailing?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).MARGIN.LEFT.AUTO]),icon:n.iconTrailing,size:e.unref(P).LARGE},null,8,["class","icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),to=D(eo,[["__scopeId","data-v-da373674"]]),Pt={SM:"sm",MD:"md",LG:"lg",XL:"xl"},no={SM:768,MD:992,LG:1232,XL:1920},bt=async n=>{const r=document.body;if(n){if(!r.dataset.scrollLockY){const o=window.scrollY;r.dataset.scrollLockY=o.toString(),r.style.setProperty("--saved-scroll-y",`${o}px`),r.style.setProperty("inset","0"),r.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),r.style.setProperty("overflow-y","scroll"),r.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const o=parseInt(r.dataset.scrollLockY||"0");r.style.removeProperty("inset"),r.style.removeProperty("marginTop"),r.style.removeProperty("overflowY"),r.style.removeProperty("position"),r.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:o}),delete r.dataset.scrollLockY}},Ie="tide-top-layer",Qe=()=>{let n=document.getElementById(Ie);n||(n=document.createElement("div"),n.id=Ie,n.setAttribute("data-css-scope",""),document.body.appendChild(n)),n.style.isolation="isolate"},ro=["textContent"],oo=e.defineComponent({__name:"TideModal",props:e.mergeModels({beforeClose:{type:Function,default:void 0},isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},title:{default:void 0},width:{default:void 0}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["back"],["update:modelValue"]),setup(n,{emit:r}){const o=n,s=r,l=e.ref(),a=e.ref(),i=e.useModel(n,"modelValue"),u=()=>{var m;(m=a.value)==null||m.showModal()},d=()=>{var m;(m=a.value)==null||m.close()},c=()=>{e.nextTick(()=>{l.value&&(l.value.scrollTop=0)})},f=async()=>{o.beforeClose&&await o.beforeClose()===!1||(i.value=!1)},E=()=>{o.isDismissible&&f()},v=m=>{m.preventDefault(),o.isDismissible&&f()};return e.watch(i,()=>{a.value&&(i.value?(u(),c()):d(),bt(i.value))}),e.onBeforeMount(()=>{Qe()}),e.onMounted(()=>{i.value&&u()}),(m,L)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Ie)}`},[e.createElementVNode("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:a,style:e.normalizeStyle({"--modal-width":n.width}),onClick:e.withModifiers(E,["self"]),onClose:L[1]||(L[1]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(v,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(Pt).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[n.isBackButton?(e.openBlock(),e.createBlock(z,{key:0,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:L[0]||(L[0]=O=>s("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(n.title)},null,10,ro),n.isDismissible?(e.openBlock(),e.createBlock(z,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(S).CLOSE,priority:e.unref(V).QUATERNARY,onClick:f},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.Y.TWO,e.unref(t).WIDTH.FULL]),ref_key:"modalContent",ref:l},[e.renderSlot(m.$slots,"default",{},void 0,!0)],2),m.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(m.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38)],8,["to"]))}}),so=D(oo,[["__scopeId","data-v-0c7c9399"]]),lo=e.defineComponent({__name:"TidePagination",props:e.mergeModels({pageTotal:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=e.computed(()=>new Array(r.pageTotal).fill("").map((u,d)=>d+1)),l=u=>{o.value=u},a=()=>{o.value--},i=()=>{o.value++};return(u,d)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(z,{disabled:o.value<=1,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:a},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c},[e.createVNode(gt,{disabled:o.value===c,label:c,priority:e.unref(V).QUATERNARY,onClick:f=>l(c)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(z,{disabled:o.value>=s.value[s.value.length-1],icon:e.unref(S).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:i},null,8,["disabled","icon","priority"])],2))}}),io=["top","right","bottom","left"],it=["start","end"],at=io.reduce((n,r)=>n.concat(r,r+"-"+it[0],r+"-"+it[1]),[]),Fe=Math.min,ae=Math.max,De=Math.round,Ce=Math.floor,K=n=>({x:n,y:n}),ao={left:"right",right:"left",bottom:"top",top:"bottom"},uo={start:"end",end:"start"};function ut(n,r,o){return ae(n,Fe(r,o))}function be(n,r){return typeof n=="function"?n(r):n}function ve(n){return n.split("-")[0]}function re(n){return n.split("-")[1]}function kt(n){return n==="x"?"y":"x"}function Ut(n){return n==="y"?"height":"width"}function ke(n){return["top","bottom"].includes(ve(n))?"y":"x"}function _t(n){return kt(ke(n))}function co(n,r,o){o===void 0&&(o=!1);const s=re(n),l=_t(n),a=Ut(l);let i=l==="x"?s===(o?"end":"start")?"right":"left":s==="start"?"bottom":"top";return r.reference[a]>r.floating[a]&&(i=ct(i)),[i,ct(i)]}function fo(n){return n.replace(/start|end/g,r=>uo[r])}function ct(n){return n.replace(/left|right|bottom|top/g,r=>ao[r])}function Eo(n){return{top:0,right:0,bottom:0,left:0,...n}}function mo(n){return typeof n!="number"?Eo(n):{top:n,right:n,bottom:n,left:n}}function Be(n){const{x:r,y:o,width:s,height:l}=n;return{width:s,height:l,top:o,left:r,right:r+s,bottom:o+l,x:r,y:o}}function dt(n,r,o){let{reference:s,floating:l}=n;const a=ke(r),i=_t(r),u=Ut(i),d=ve(r),c=a==="y",f=s.x+s.width/2-l.width/2,E=s.y+s.height/2-l.height/2,v=s[u]/2-l[u]/2;let m;switch(d){case"top":m={x:f,y:s.y-l.height};break;case"bottom":m={x:f,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:E};break;case"left":m={x:s.x-l.width,y:E};break;default:m={x:s.x,y:s.y}}switch(re(r)){case"start":m[i]-=v*(o&&c?-1:1);break;case"end":m[i]+=v*(o&&c?-1:1);break}return m}const vo=async(n,r,o)=>{const{placement:s="bottom",strategy:l="absolute",middleware:a=[],platform:i}=o,u=a.filter(Boolean),d=await(i.isRTL==null?void 0:i.isRTL(r));let c=await i.getElementRects({reference:n,floating:r,strategy:l}),{x:f,y:E}=dt(c,s,d),v=s,m={},L=0;for(let O=0;O<u.length;O++){const{name:A,fn:T}=u[O],{x:R,y:p,data:N,reset:I}=await T({x:f,y:E,initialPlacement:s,placement:v,strategy:l,middlewareData:m,rects:c,platform:i,elements:{reference:n,floating:r}});f=R??f,E=p??E,m={...m,[A]:{...m[A],...N}},I&&L<=50&&(L++,typeof I=="object"&&(I.placement&&(v=I.placement),I.rects&&(c=I.rects===!0?await i.getElementRects({reference:n,floating:r,strategy:l}):I.rects),{x:f,y:E}=dt(c,v,d)),O=-1)}return{x:f,y:E,placement:v,strategy:l,middlewareData:m}};async function Vt(n,r){var o;r===void 0&&(r={});const{x:s,y:l,platform:a,rects:i,elements:u,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:f="viewport",elementContext:E="floating",altBoundary:v=!1,padding:m=0}=be(r,n),L=mo(m),A=u[v?E==="floating"?"reference":"floating":E],T=Be(await a.getClippingRect({element:(o=await(a.isElement==null?void 0:a.isElement(A)))==null||o?A:A.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(u.floating)),boundary:c,rootBoundary:f,strategy:d})),R=E==="floating"?{x:s,y:l,width:i.floating.width,height:i.floating.height}:i.reference,p=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u.floating)),N=await(a.isElement==null?void 0:a.isElement(p))?await(a.getScale==null?void 0:a.getScale(p))||{x:1,y:1}:{x:1,y:1},I=Be(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:R,offsetParent:p,strategy:d}):R);return{top:(T.top-I.top+L.top)/N.y,bottom:(I.bottom-T.bottom+L.bottom)/N.y,left:(T.left-I.left+L.left)/N.x,right:(I.right-T.right+L.right)/N.x}}function Oo(n,r,o){return(n?[...o.filter(l=>re(l)===n),...o.filter(l=>re(l)!==n)]:o.filter(l=>ve(l)===l)).filter(l=>n?re(l)===n||(r?fo(l)!==l:!1):!0)}const Lo=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(r){var o,s,l;const{rects:a,middlewareData:i,placement:u,platform:d,elements:c}=r,{crossAxis:f=!1,alignment:E,allowedPlacements:v=at,autoAlignment:m=!0,...L}=be(n,r),O=E!==void 0||v===at?Oo(E||null,m,v):v,A=await Vt(r,L),T=((o=i.autoPlacement)==null?void 0:o.index)||0,R=O[T];if(R==null)return{};const p=co(R,a,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(u!==R)return{reset:{placement:O[0]}};const N=[A[ve(R)],A[p[0]],A[p[1]]],I=[...((s=i.autoPlacement)==null?void 0:s.overflows)||[],{placement:R,overflows:N}],C=O[T+1];if(C)return{data:{index:T+1,overflows:I},reset:{placement:C}};const h=I.map(b=>{const _=re(b.placement);return[b.placement,_&&f?b.overflows.slice(0,2).reduce((J,Oe)=>J+Oe,0):b.overflows[0],b.overflows]}).sort((b,_)=>b[1]-_[1]),j=((l=h.filter(b=>b[2].slice(0,re(b[0])?2:3).every(_=>_<=0))[0])==null?void 0:l[0])||h[0][0];return j!==u?{data:{index:T+1,overflows:I},reset:{placement:j}}:{}}}};async function Ro(n,r){const{placement:o,platform:s,elements:l}=n,a=await(s.isRTL==null?void 0:s.isRTL(l.floating)),i=ve(o),u=re(o),d=ke(o)==="y",c=["left","top"].includes(i)?-1:1,f=a&&d?-1:1,E=be(r,n);let{mainAxis:v,crossAxis:m,alignmentAxis:L}=typeof E=="number"?{mainAxis:E,crossAxis:0,alignmentAxis:null}:{mainAxis:E.mainAxis||0,crossAxis:E.crossAxis||0,alignmentAxis:E.alignmentAxis};return u&&typeof L=="number"&&(m=u==="end"?L*-1:L),d?{x:m*f,y:v*c}:{x:v*c,y:m*f}}const Ao=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(r){var o,s;const{x:l,y:a,placement:i,middlewareData:u}=r,d=await Ro(r,n);return i===((o=u.offset)==null?void 0:o.placement)&&(s=u.arrow)!=null&&s.alignmentOffset?{}:{x:l+d.x,y:a+d.y,data:{...d,placement:i}}}}},To=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(r){const{x:o,y:s,placement:l}=r,{mainAxis:a=!0,crossAxis:i=!1,limiter:u={fn:A=>{let{x:T,y:R}=A;return{x:T,y:R}}},...d}=be(n,r),c={x:o,y:s},f=await Vt(r,d),E=ke(ve(l)),v=kt(E);let m=c[v],L=c[E];if(a){const A=v==="y"?"top":"left",T=v==="y"?"bottom":"right",R=m+f[A],p=m-f[T];m=ut(R,m,p)}if(i){const A=E==="y"?"top":"left",T=E==="y"?"bottom":"right",R=L+f[A],p=L-f[T];L=ut(R,L,p)}const O=u.fn({...r,[v]:m,[E]:L});return{...O,data:{x:O.x-o,y:O.y-s,enabled:{[v]:a,[E]:i}}}}}};function Ue(){return typeof window<"u"}function ce(n){return Ze(n)?(n.nodeName||"").toLowerCase():"#document"}function M(n){var r;return(n==null||(r=n.ownerDocument)==null?void 0:r.defaultView)||window}function Z(n){var r;return(r=(Ze(n)?n.ownerDocument:n.document)||window.document)==null?void 0:r.documentElement}function Ze(n){return Ue()?n instanceof Node||n instanceof M(n).Node:!1}function W(n){return Ue()?n instanceof Element||n instanceof M(n).Element:!1}function Q(n){return Ue()?n instanceof HTMLElement||n instanceof M(n).HTMLElement:!1}function ft(n){return!Ue()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof M(n).ShadowRoot}function pe(n){const{overflow:r,overflowX:o,overflowY:s,display:l}=q(n);return/auto|scroll|overlay|hidden|clip/.test(r+s+o)&&!["inline","contents"].includes(l)}function Io(n){return["table","td","th"].includes(ce(n))}function _e(n){return[":popover-open",":modal"].some(r=>{try{return n.matches(r)}catch{return!1}})}function je(n){const r=Je(),o=W(n)?q(n):n;return["transform","translate","scale","rotate","perspective"].some(s=>o[s]?o[s]!=="none":!1)||(o.containerType?o.containerType!=="normal":!1)||!r&&(o.backdropFilter?o.backdropFilter!=="none":!1)||!r&&(o.filter?o.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(o.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(o.contain||"").includes(s))}function No(n){let r=oe(n);for(;Q(r)&&!me(r);){if(je(r))return r;if(_e(r))return null;r=oe(r)}return null}function Je(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function me(n){return["html","body","#document"].includes(ce(n))}function q(n){return M(n).getComputedStyle(n)}function Ve(n){return W(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function oe(n){if(ce(n)==="html")return n;const r=n.assignedSlot||n.parentNode||ft(n)&&n.host||Z(n);return ft(r)?r.host:r}function wt(n){const r=oe(n);return me(r)?n.ownerDocument?n.ownerDocument.body:n.body:Q(r)&&pe(r)?r:wt(r)}function Ne(n,r,o){var s;r===void 0&&(r=[]),o===void 0&&(o=!0);const l=wt(n),a=l===((s=n.ownerDocument)==null?void 0:s.body),i=M(l);if(a){const u=We(i);return r.concat(i,i.visualViewport||[],pe(l)?l:[],u&&o?Ne(u):[])}return r.concat(l,Ne(l,[],o))}function We(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Gt(n){const r=q(n);let o=parseFloat(r.width)||0,s=parseFloat(r.height)||0;const l=Q(n),a=l?n.offsetWidth:o,i=l?n.offsetHeight:s,u=De(o)!==a||De(s)!==i;return u&&(o=a,s=i),{width:o,height:s,$:u}}function et(n){return W(n)?n:n.contextElement}function Ee(n){const r=et(n);if(!Q(r))return K(1);const o=r.getBoundingClientRect(),{width:s,height:l,$:a}=Gt(r);let i=(a?De(o.width):o.width)/s,u=(a?De(o.height):o.height)/l;return(!i||!Number.isFinite(i))&&(i=1),(!u||!Number.isFinite(u))&&(u=1),{x:i,y:u}}const po=K(0);function Mt(n){const r=M(n);return!Je()||!r.visualViewport?po:{x:r.visualViewport.offsetLeft,y:r.visualViewport.offsetTop}}function go(n,r,o){return r===void 0&&(r=!1),!o||r&&o!==M(n)?!1:r}function ue(n,r,o,s){r===void 0&&(r=!1),o===void 0&&(o=!1);const l=n.getBoundingClientRect(),a=et(n);let i=K(1);r&&(s?W(s)&&(i=Ee(s)):i=Ee(n));const u=go(a,o,s)?Mt(a):K(0);let d=(l.left+u.x)/i.x,c=(l.top+u.y)/i.y,f=l.width/i.x,E=l.height/i.y;if(a){const v=M(a),m=s&&W(s)?M(s):s;let L=v,O=We(L);for(;O&&s&&m!==L;){const A=Ee(O),T=O.getBoundingClientRect(),R=q(O),p=T.left+(O.clientLeft+parseFloat(R.paddingLeft))*A.x,N=T.top+(O.clientTop+parseFloat(R.paddingTop))*A.y;d*=A.x,c*=A.y,f*=A.x,E*=A.y,d+=p,c+=N,L=M(O),O=We(L)}}return Be({width:f,height:E,x:d,y:c})}function tt(n,r){const o=Ve(n).scrollLeft;return r?r.left+o:ue(Z(n)).left+o}function xt(n,r,o){o===void 0&&(o=!1);const s=n.getBoundingClientRect(),l=s.left+r.scrollLeft-(o?0:tt(n,s)),a=s.top+r.scrollTop;return{x:l,y:a}}function Co(n){let{elements:r,rect:o,offsetParent:s,strategy:l}=n;const a=l==="fixed",i=Z(s),u=r?_e(r.floating):!1;if(s===i||u&&a)return o;let d={scrollLeft:0,scrollTop:0},c=K(1);const f=K(0),E=Q(s);if((E||!E&&!a)&&((ce(s)!=="body"||pe(i))&&(d=Ve(s)),Q(s))){const m=ue(s);c=Ee(s),f.x=m.x+s.clientLeft,f.y=m.y+s.clientTop}const v=i&&!E&&!a?xt(i,d,!0):K(0);return{width:o.width*c.x,height:o.height*c.y,x:o.x*c.x-d.scrollLeft*c.x+f.x+v.x,y:o.y*c.y-d.scrollTop*c.y+f.y+v.y}}function ho(n){return Array.from(n.getClientRects())}function So(n){const r=Z(n),o=Ve(n),s=n.ownerDocument.body,l=ae(r.scrollWidth,r.clientWidth,s.scrollWidth,s.clientWidth),a=ae(r.scrollHeight,r.clientHeight,s.scrollHeight,s.clientHeight);let i=-o.scrollLeft+tt(n);const u=-o.scrollTop;return q(s).direction==="rtl"&&(i+=ae(r.clientWidth,s.clientWidth)-l),{width:l,height:a,x:i,y:u}}function Fo(n,r){const o=M(n),s=Z(n),l=o.visualViewport;let a=s.clientWidth,i=s.clientHeight,u=0,d=0;if(l){a=l.width,i=l.height;const c=Je();(!c||c&&r==="fixed")&&(u=l.offsetLeft,d=l.offsetTop)}return{width:a,height:i,x:u,y:d}}function Do(n,r){const o=ue(n,!0,r==="fixed"),s=o.top+n.clientTop,l=o.left+n.clientLeft,a=Q(n)?Ee(n):K(1),i=n.clientWidth*a.x,u=n.clientHeight*a.y,d=l*a.x,c=s*a.y;return{width:i,height:u,x:d,y:c}}function Et(n,r,o){let s;if(r==="viewport")s=Fo(n,o);else if(r==="document")s=So(Z(n));else if(W(r))s=Do(r,o);else{const l=Mt(n);s={x:r.x-l.x,y:r.y-l.y,width:r.width,height:r.height}}return Be(s)}function Ht(n,r){const o=oe(n);return o===r||!W(o)||me(o)?!1:q(o).position==="fixed"||Ht(o,r)}function Bo(n,r){const o=r.get(n);if(o)return o;let s=Ne(n,[],!1).filter(u=>W(u)&&ce(u)!=="body"),l=null;const a=q(n).position==="fixed";let i=a?oe(n):n;for(;W(i)&&!me(i);){const u=q(i),d=je(i);!d&&u.position==="fixed"&&(l=null),(a?!d&&!l:!d&&u.position==="static"&&!!l&&["absolute","fixed"].includes(l.position)||pe(i)&&!d&&Ht(n,i))?s=s.filter(f=>f!==i):l=u,i=oe(i)}return r.set(n,s),s}function yo(n){let{element:r,boundary:o,rootBoundary:s,strategy:l}=n;const i=[...o==="clippingAncestors"?_e(r)?[]:Bo(r,this._c):[].concat(o),s],u=i[0],d=i.reduce((c,f)=>{const E=Et(r,f,l);return c.top=ae(E.top,c.top),c.right=Fe(E.right,c.right),c.bottom=Fe(E.bottom,c.bottom),c.left=ae(E.left,c.left),c},Et(r,u,l));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function Po(n){const{width:r,height:o}=Gt(n);return{width:r,height:o}}function bo(n,r,o){const s=Q(r),l=Z(r),a=o==="fixed",i=ue(n,!0,a,r);let u={scrollLeft:0,scrollTop:0};const d=K(0);if(s||!s&&!a)if((ce(r)!=="body"||pe(l))&&(u=Ve(r)),s){const v=ue(r,!0,a,r);d.x=v.x+r.clientLeft,d.y=v.y+r.clientTop}else l&&(d.x=tt(l));const c=l&&!s&&!a?xt(l,u):K(0),f=i.left+u.scrollLeft-d.x-c.x,E=i.top+u.scrollTop-d.y-c.y;return{x:f,y:E,width:i.width,height:i.height}}function ze(n){return q(n).position==="static"}function mt(n,r){if(!Q(n)||q(n).position==="fixed")return null;if(r)return r(n);let o=n.offsetParent;return Z(n)===o&&(o=o.ownerDocument.body),o}function zt(n,r){const o=M(n);if(_e(n))return o;if(!Q(n)){let l=oe(n);for(;l&&!me(l);){if(W(l)&&!ze(l))return l;l=oe(l)}return o}let s=mt(n,r);for(;s&&Io(s)&&ze(s);)s=mt(s,r);return s&&me(s)&&ze(s)&&!je(s)?o:s||No(n)||o}const ko=async function(n){const r=this.getOffsetParent||zt,o=this.getDimensions,s=await o(n.floating);return{reference:bo(n.reference,await r(n.floating),n.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function Uo(n){return q(n).direction==="rtl"}const _o={convertOffsetParentRelativeRectToViewportRelativeRect:Co,getDocumentElement:Z,getClippingRect:yo,getOffsetParent:zt,getElementRects:ko,getClientRects:ho,getDimensions:Po,getScale:Ee,isElement:W,isRTL:Uo};function Yt(n,r){return n.x===r.x&&n.y===r.y&&n.width===r.width&&n.height===r.height}function Vo(n,r){let o=null,s;const l=Z(n);function a(){var u;clearTimeout(s),(u=o)==null||u.disconnect(),o=null}function i(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),a();const c=n.getBoundingClientRect(),{left:f,top:E,width:v,height:m}=c;if(u||r(),!v||!m)return;const L=Ce(E),O=Ce(l.clientWidth-(f+v)),A=Ce(l.clientHeight-(E+m)),T=Ce(f),p={rootMargin:-L+"px "+-O+"px "+-A+"px "+-T+"px",threshold:ae(0,Fe(1,d))||1};let N=!0;function I(C){const h=C[0].intersectionRatio;if(h!==d){if(!N)return i();h?i(!1,h):s=setTimeout(()=>{i(!1,1e-7)},1e3)}h===1&&!Yt(c,n.getBoundingClientRect())&&i(),N=!1}try{o=new IntersectionObserver(I,{...p,root:l.ownerDocument})}catch{o=new IntersectionObserver(I,p)}o.observe(n)}return i(!0),a}function wo(n,r,o,s){s===void 0&&(s={});const{ancestorScroll:l=!0,ancestorResize:a=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,c=et(n),f=l||a?[...c?Ne(c):[],...Ne(r)]:[];f.forEach(T=>{l&&T.addEventListener("scroll",o,{passive:!0}),a&&T.addEventListener("resize",o)});const E=c&&u?Vo(c,o):null;let v=-1,m=null;i&&(m=new ResizeObserver(T=>{let[R]=T;R&&R.target===c&&m&&(m.unobserve(r),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var p;(p=m)==null||p.observe(r)})),o()}),c&&!d&&m.observe(c),m.observe(r));let L,O=d?ue(n):null;d&&A();function A(){const T=ue(n);O&&!Yt(O,T)&&o(),O=T,L=requestAnimationFrame(A)}return o(),()=>{var T;f.forEach(R=>{l&&R.removeEventListener("scroll",o),a&&R.removeEventListener("resize",o)}),E==null||E(),(T=m)==null||T.disconnect(),m=null,d&&cancelAnimationFrame(L)}}const vt=Ao,Ot=Lo,Lt=To,Go=(n,r,o)=>{const s=new Map,l={platform:_o,...o},a={...l.platform,_c:s};return vo(n,r,{...l,platform:a})};function Mo(n){return n!=null&&typeof n=="object"&&"$el"in n}function Rt(n){if(Mo(n)){const r=n.$el;return Ze(r)&&ce(r)==="#comment"?null:r}return n}function Re(n){return typeof n=="function"?n():e.unref(n)}function Xt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function At(n,r){const o=Xt(n);return Math.round(r*o)/o}function xo(n,r,o){o===void 0&&(o={});const s=o.whileElementsMounted,l=e.computed(()=>{var h;return(h=Re(o.open))!=null?h:!0}),a=e.computed(()=>Re(o.middleware)),i=e.computed(()=>{var h;return(h=Re(o.placement))!=null?h:"bottom"}),u=e.computed(()=>{var h;return(h=Re(o.strategy))!=null?h:"absolute"}),d=e.computed(()=>{var h;return(h=Re(o.transform))!=null?h:!0}),c=e.computed(()=>Rt(n.value)),f=e.computed(()=>Rt(r.value)),E=e.ref(0),v=e.ref(0),m=e.ref(u.value),L=e.ref(i.value),O=e.shallowRef({}),A=e.ref(!1),T=e.computed(()=>{const h={position:m.value,left:"0",top:"0"};if(!f.value)return h;const w=At(f.value,E.value),j=At(f.value,v.value);return d.value?{...h,transform:"translate("+w+"px, "+j+"px)",...Xt(f.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:w+"px",top:j+"px"}});let R;function p(){if(c.value==null||f.value==null)return;const h=l.value;Go(c.value,f.value,{middleware:a.value,placement:i.value,strategy:u.value}).then(w=>{E.value=w.x,v.value=w.y,m.value=w.strategy,L.value=w.placement,O.value=w.middlewareData,A.value=h!==!1})}function N(){typeof R=="function"&&(R(),R=void 0)}function I(){if(N(),s===void 0){p();return}if(c.value!=null&&f.value!=null){R=s(c.value,f.value,p);return}}function C(){l.value||(A.value=!1)}return e.watch([a,i,u,l],p,{flush:"sync"}),e.watch([c,f],I,{flush:"sync"}),e.watch(l,C,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(N),{x:e.shallowReadonly(E),y:e.shallowReadonly(v),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(L),middlewareData:e.shallowReadonly(O),isPositioned:e.shallowReadonly(A),floatingStyles:T,update:p}}const Ho=(n,r)=>!(Array.isArray(r)?r:[r]).some(s=>s.contains(n.target)),zo=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(n){const r=n,o=e.ref(null),s=e.ref(null),l=e.ref(null),a=e.ref(!1),i=e.ref(!1),u=e.ref([Ot(),vt({mainAxis:r.offset}),Lt({padding:16})]),d=e.computed(()=>a.value||i.value),{floatingStyles:c}=xo(o,s,{middleware:u,strategy:"fixed",whileElementsMounted:wo}),f=N=>{!o.value||!s.value||Ho(N,[o.value,s.value])&&(i.value=!1,N.preventDefault(),N.stopImmediatePropagation())},E=()=>{a.value=!0},v=()=>{a.value=!1},m=N=>{N.preventDefault(),i.value?(i.value=!1,a.value=!1):i.value=!0},L=()=>{if(!o.value)return null;o.value.addEventListener("mouseover",E),o.value.addEventListener("mouseleave",v),o.value.addEventListener("click",m)},O=()=>{if(!o.value)return null;o.value.removeEventListener("mouseover",E),o.value.removeEventListener("mouseleave",v),o.value.removeEventListener("click",m)},A=N=>{N.key==="Escape"&&(i.value=!1)},T=()=>{l.value&&(l.value.addEventListener("click",f,!0),l.value.addEventListener("keydown",A))},R=()=>{l.value&&(l.value.removeEventListener("click",f,!0),l.value.removeEventListener("keydown",A))},p=()=>{o.value=document.getElementById(r.anchorId)};return e.watch(()=>i.value,N=>{N?T():R()}),e.watch(()=>r.anchorId,()=>{O(),p(),L()}),e.watchEffect(()=>{u.value=[Ot(),vt({mainAxis:r.offset}),Lt({padding:16})]}),e.onBeforeMount(()=>{Qe()}),e.onMounted(()=>{p(),l.value=document.documentElement,L()}),e.onUnmounted(()=>{O()}),(N,I)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Ie)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:s,style:e.normalizeStyle({...e.unref(c)})},[e.renderSlot(N.$slots,"default",{},void 0,!0)],6),[[e.vShow,d.value]])]),_:3})],8,["to"]))}}),Yo=D(zo,[["__scopeId","data-v-508322dc"]]),Xo=["onClick"],Wo=e.defineComponent({__name:"TideRating",props:e.mergeModels({description:{default:void 0},maxRating:{default:10},showRating:{type:Boolean,default:!1},title:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=e.computed(()=>Array.from({length:r.maxRating},(a,i)=>i+1)),l=a=>{o.value=a};return(a,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-rating",e.unref(t).WIDTH.FULL])},[e.createElementVNode("section",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.BOTTOM.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2])},e.toDisplayString(r.title),3),r.showRating?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(o.value)+"/"+e.toDisplayString(r.maxRating),3)):e.createCommentVNode("",!0)],2),r.description?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ELLIPSIS])},e.toDisplayString(r.description),3)):e.createCommentVNode("",!0),e.createElementVNode("section",{class:e.normalizeClass(["tide-rating-bar",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.ON])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,u=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-rating-segment",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.ON,e.unref(t).FLEX.BASIS.ZERO,e.unref(t).BORDER.FULL.ZERO,u===1&&["tide-rating-segment-first"],u===s.value.length&&["tide-rating-segment-last"],u<=o.value&&[e.unref(t).BG.SURFACE.GRADIENT]]),key:u,onClick:d=>l(u),type:"button"},null,10,Xo))),128))],2)],2))}}),qo=D(Wo,[["__scopeId","data-v-4cf4aad7"]]),$o={class:"tide-seo-links"},Ko=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const r=n;return(o,s)=>(e.openBlock(),e.createElementBlock("section",$o,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(r.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.links,l=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:l.label},[e.createVNode(se,{class:e.normalizeClass([e.unref(t).UNDERLINE.REST.OFF]),href:l.url,target:l.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.label),1)]),_:2},1032,["class","href","target"])],2))),128))],2)]))}}),Qo=D(Ko,[["__scopeId","data-v-5cd4472f"]]),Zo=e.defineComponent({__name:"TideSheet",props:e.mergeModels({isBackButton:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["back"],["update:modelValue"]),setup(n,{emit:r}){const o=r,s=e.ref(null),l=e.useModel(n,"modelValue"),a=()=>{var f;(f=s.value)==null||f.showModal()},i=()=>{var f;(f=s.value)==null||f.close()},u=()=>{l.value=!1},d=()=>{u()},c=f=>{f.preventDefault(),u()};return e.watch(l,()=>{s.value&&(l.value?a():i(),bt(l.value))}),e.onBeforeMount(()=>{Qe()}),e.onMounted(()=>{l.value&&a()}),(f,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Ie)}`},[e.createElementVNode("dialog",{class:e.normalizeClass(["tide-sheet",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"dialogElement",ref:s,onClick:e.withModifiers(d,["self"]),onClose:E[1]||(E[1]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(c,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).HEIGHT.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[e.createElementVNode("header",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.TOP.ONE,e.unref(t).PADDING.X.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[n.isBackButton?(e.openBlock(),e.createBlock(z,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:E[0]||(E[0]=v=>o("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(z,{class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(S).CLOSE,priority:e.unref(V).QUATERNARY,onClick:u},null,8,["class","icon","priority"])],2),e.createVNode(he),e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-content",e.unref(t).DISPLAY.GRID,e.unref(t).HEIGHT.FULL,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).WIDTH.FULL])},[e.renderSlot(f.$slots,"default",{},void 0,!0)],2)],2)],34)],8,["to"]))}}),jo=D(Zo,[["__scopeId","data-v-9d1728e7"]]),Jo=["disabled"],es=e.defineComponent({__name:"TideSwitch",props:e.mergeModels({disabled:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=n,o=e.useModel(n,"modelValue"),s=()=>{r.disabled||(o.value=!o.value)};return(l,a)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).FLEX.GROW.OFF,o.value?["active",e.unref(t).BG.SECONDARY]:[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.DEFAULT],n.disabled&&[e.unref(t).OPACITY.DISABLED]]),disabled:r.disabled,onClick:s,"aria-label":"Switch",type:"button"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,o.value?["active",e.unref(t).BG.SURFACE.DEFAULT]:[e.unref(t).BG.SECONDARY]])},[e.createVNode(y,{icon:e.unref(S).CHECK,size:e.unref(P).LARGE},null,8,["icon","size"])],2)],10,Jo))}}),ts=D(es,[["__scopeId","data-v-c2ce44bc"]]),ns=e.defineComponent({__name:"TideTabs",props:e.mergeModels({tabs:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const r=e.useModel(n,"modelValue"),o=s=>{r.value=s};return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-tabs",e.unref(t).DISPLAY.FLEX,e.unref(t).BORDER.BOTTOM.TWO,e.unref(t).BORDER.COLOR.LOW])},[e.createVNode(Ct,{"is-floating":!0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tabs,(a,i)=>(e.openBlock(),e.createElementBlock("li",{key:a.label},[e.createVNode(Se,{class:e.normalizeClass([i===r.value?e.unref(t).FONT.COLOR.SURFACE.BRAND:e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF]),element:e.unref(B).BUTTON,label:a.label,subtle:!0,onClick:u=>o(i)},null,8,["class","element","label","onClick"]),e.createElementVNode("div",{class:e.normalizeClass(["rounded-border",i===r.value&&"active"])},null,2)]))),128))]),_:1})],2))}}),rs=D(ns,[["__scopeId","data-v-9fb51e89"]]);exports.ALERT=G;exports.BADGE_COLOR=X;exports.BADGE_COLOR_DETAILS=Xe;exports.BADGE_TRUSTED=pt;exports.BREAKPOINT=Pt;exports.CSS=t;exports.ELEMENT=B;exports.ELEMENT_BROAD=H;exports.FORMAT=fr;exports.FORMAT_REGEX=le;exports.ICON=S;exports.ICON_REALM=en;exports.INPUT_MODE=fe;exports.MEDIA=no;exports.OBJECT_FIT=ie;exports.ORIENTATION=Ye;exports.PRIORITY=V;exports.REALM=Tt;exports.SIZE=P;exports.SIZE_BUTTON=Ae;exports.TARGET=Y;exports.TEXT_INPUT_TYPE=U;exports.TYPE_CARD=Te;exports.TideAccordionItem=rn;exports.TideAlert=an;exports.TideBadge=un;exports.TideBadgeTrustedPartner=cn;exports.TideBadgeVerifiedVehicle=fn;exports.TideBreadCrumbs=vn;exports.TideButton=On;exports.TideButtonIcon=z;exports.TideButtonPagination=gt;exports.TideButtonSegmented=Tn;exports.TideCard=Nn;exports.TideCarousel=Ct;exports.TideChipAction=Cn;exports.TideChipFilter=Sn;exports.TideChipInput=Dn;exports.TideColumns=_n;exports.TideDivider=he;exports.TideForm=Vn;exports.TideIcon=y;exports.TideImage=Ft;exports.TideImageBackground=Hn;exports.TideIndicator=Xn;exports.TideInputCheckbox=Zn;exports.TideInputCheckboxDeprecated=nr;exports.TideInputRadio=lr;exports.TideInputRadioDeprecated=dr;exports.TideInputSelect=Ir;exports.TideInputSelectDeprecated=br;exports.TideInputText=wr;exports.TideInputTextDeprecated=zr;exports.TideInputTextarea=qr;exports.TideInputTextareaDeprecated=jr;exports.TideLink=Se;exports.TideMenuItem=to;exports.TideModal=so;exports.TidePagination=lo;exports.TidePopover=Yo;exports.TideRating=qo;exports.TideSeoLinks=Qo;exports.TideSheet=jo;exports.TideSwitch=ts;exports.TideTabs=rs;exports.VALIDATOR=Er;exports.provideTideConfig=on;exports.useTideForm=St;
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcudHMiLCIuLi9zcmMvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTGluay52dWUiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVZlcmlmaWVkVmVoaWNsZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnJlYWRDcnVtYnMudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2VnbWVudGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9DYXJkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwQWN0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwRmlsdGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwSW5wdXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNvbHVtbnMudnVlIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUZvcm0udnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZUJhY2tncm91bmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW8udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW9EZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9Gb3JtYXR0ZWQudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHREZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhRGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTWVudUl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSYXRpbmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNlb0xpbmtzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTaGVldC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgSlVTVElGWTogJ3RpZGUtdGV4dC1qdXN0aWZ5JyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBJTklUSUFMOiAndGlkZS1hbGlnbi1pbml0aWFsJyxcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgICBTVFJFVENIOiAndGlkZS1heGlzMi1zdHJldGNoJyxcbiAgfSxcbiAgQkc6IHtcbiAgICBHTE9CQUw6IHtcbiAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXByaW1hcnktZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1wcmltYXJ5LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1wcmltYXJ5LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1wcmltYXJ5LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJnLXN1cmZhY2UtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1iZy1zdXJmYWNlLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYmctc3VyZmFjZS1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1iZy1zdXJmYWNlLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYmctc3VyZmFjZS1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJnLXN1cmZhY2UtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1iZy1zdXJmYWNlLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJnLXN1cmZhY2UtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYmctc3VyZmFjZS15ZWxsb3cnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIElOSVRJQUw6ICd0aWRlLWJnLWluaXRpYWwnLFxuICAgIEJMVVI6ICd0aWRlLWJnLWJsdXInLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgVkFSSUFOVDogJ3RpZGUtYmctc3VyZmFjZS12YXJpYW50JyxcbiAgICB9LFxuICAgIFRSQU5TUEFSRU5UOiB7XG4gICAgICBPTkVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMTAwJyxcbiAgICAgIFRXT19IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0yMDAnLFxuICAgICAgVEhSRUVfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMzAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtNDAwJyxcbiAgICB9LFxuICB9LFxuICBCT1JERVI6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1ib3JkZXItZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1ib3JkZXItaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJvcmRlci1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYm9yZGVyLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJvcmRlci1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJvcmRlci1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWJvcmRlci1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1ib3JkZXItb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1ib3JkZXItcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1ib3JkZXItcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1ib3JkZXItc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYm9yZGVyLXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWJvcmRlci15ZWxsb3cnLFxuICAgICAgfSxcbiAgICAgIElOSVRJQUw6ICd0aWRlLWJvcmRlci1jb2xvci1pbml0aWFsJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIFpFUk86ICd0aWRlLXJhZGl1cy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXJhZGl1cy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcmFkaXVzLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXJhZGl1cy0xJyxcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICB9LFxuICAgIFNUWUxFOiB7XG4gICAgICBEQVNIRUQ6ICd0aWRlLWJvcmRlci1kYXNoZWQnLFxuICAgICAgU09MSUQ6ICd0aWRlLWJvcmRlci1zb2xpZCcsXG4gICAgfSxcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1ib3R0b20tMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1ib3R0b20tMicsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWxlZnQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItcmlnaHQtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItdG9wLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItdG9wLTInLFxuICAgIH0sXG4gIH0sXG4gIEJPWF9TSVpJTkc6IHtcbiAgICBCT1JERVJfQk9YOiAndGlkZS1ib3gtYm9yZGVyJyxcbiAgICBDT05URU5UX0JPWDogJ3RpZGUtYm94LWNvbnRlbnQnLFxuICB9LFxuICBCUkVBS19JTlNJREU6IHtcbiAgICBBVk9JRF9DT0xVTU46ICd0aWRlLWJyZWFrLWluc2lkZS1hdm9pZC1jb2x1bW4nLFxuICB9LFxuICBCUkVBS19XT1JEOiB7XG4gICAgT0ZGOiAndGlkZS1icmVhay1pbml0aWFsJyxcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENPTFVNTlM6IHtcbiAgICBJTklUSUFMOiAndGlkZS1jb2x1bW5zLWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtY29sdW1ucy0xJyxcbiAgICBUV086ICd0aWRlLWNvbHVtbnMtMicsXG4gICAgVEhSRUU6ICd0aWRlLWNvbHVtbnMtMycsXG4gICAgRk9VUjogJ3RpZGUtY29sdW1ucy00JyxcbiAgfSxcbiAgQ1VSU09SOiB7XG4gICAgTk9UX0FMTE9XRUQ6ICd0aWRlLWN1cnNvci1ub3QtYWxsb3dlZCcsXG4gICAgUE9JTlRFUjogJ3RpZGUtY3Vyc29yLXBvaW50ZXInLFxuICAgIFRFWFQ6ICd0aWRlLWN1cnNvci10ZXh0JyxcbiAgfSxcbiAgRElTUExBWToge1xuICAgIEJMT0NLOiAndGlkZS1kaXNwbGF5LWJsb2NrJyxcbiAgICBDT05URU5UUzogJ3RpZGUtZGlzcGxheS1jb250ZW50cycsXG4gICAgRkxFWDogJ3RpZGUtZGlzcGxheS1mbGV4JyxcbiAgICBHUklEOiAndGlkZS1kaXNwbGF5LWdyaWQnLFxuICAgIElOSVRJQUw6ICd0aWRlLWRpc3BsYXktaW5pdGlhbCcsXG4gICAgSU5MSU5FOiAndGlkZS1kaXNwbGF5LWlubGluZScsXG4gICAgSU5MSU5FX0JMT0NLOiAndGlkZS1kaXNwbGF5LWlubGluZS1ibG9jaycsXG4gICAgSU5MSU5FX0ZMRVg6ICd0aWRlLWRpc3BsYXktaW5saW5lLWZsZXgnLFxuICAgIE5PTkU6ICd0aWRlLWRpc3BsYXktbm9uZScsXG4gIH0sXG4gIEVMTElQU0lTOiAndGlkZS1lbGxpcHNpcycsXG4gIEZMRVg6IHtcbiAgICBCQVNJUzoge1xuICAgICAgQVVUTzogJ3RpZGUtZmxleC1iYXNpcy1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLWZsZXgtYmFzaXMtMCcsXG4gICAgfSxcbiAgICBESVJFQ1RJT046IHtcbiAgICAgIENPTFVNTjogJ3RpZGUtZmxleC1jb2x1bW4nLFxuICAgICAgQ09MVU1OX1JFVkVSU0U6ICd0aWRlLWZsZXgtY29sdW1uLXJldmVyc2UnLFxuICAgICAgUk9XOiAndGlkZS1mbGV4LXJvdycsXG4gICAgICBST1dfUkVWRVJTRTogJ3RpZGUtZmxleC1yb3ctcmV2ZXJzZScsXG4gICAgfSxcbiAgICBHUk9XOiB7XG4gICAgICBPRkY6ICd0aWRlLWdyb3ctbm9uZScsXG4gICAgICBPTjogJ3RpZGUtZ3JvdycsXG4gICAgfSxcbiAgICBTSFJJTks6IHtcbiAgICAgIE9GRjogJ3RpZGUtc2hyaW5rLW5vbmUnLFxuICAgICAgT046ICd0aWRlLXNocmluaycsXG4gICAgfSxcbiAgICBXUkFQOiAndGlkZS1mbGV4LXdyYXAnLFxuICB9LFxuICBGT05UOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtZm9udC1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWZvbnQtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWZvbnQtc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWZvbnQtd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1mb250LWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtZm9udC1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtZm9udC10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXllbGxvdycsXG5cbiAgICAgICAgUFJJTUFSWToge1xuICAgICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1ibHVlJyxcbiAgICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1wcmltYXJ5LWdyZWVuJyxcbiAgICAgICAgICBMSU1FOiAndGlkZS1mb250LXByaW1hcnktbGltZScsXG4gICAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LXByaW1hcnktb3JhbmdlJyxcbiAgICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHJpbWFyeS1wdXJwbGUnLFxuICAgICAgICAgIFJFRDogJ3RpZGUtZm9udC1wcmltYXJ5LXJlZCcsXG4gICAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXByaW1hcnktc2FsbW9uJyxcbiAgICAgICAgICBURUFMOiAndGlkZS1mb250LXByaW1hcnktdGVhbCcsXG4gICAgICAgICAgWUVMTE9XOiAndGlkZS1mb250LXByaW1hcnkteWVsbG93JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBQUklNQVJZOiAndGlkZS1mb250LW9uLXByaW1hcnknLFxuICAgICAgU0VDT05EQVJZOiAndGlkZS1mb250LW9uLXNlY29uZGFyeScsXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEJSQU5EOiAndGlkZS1mb250LW9uLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgICBERUZBVUxUOiAndGlkZS1mb250LW9uLXN1cmZhY2UnLFxuICAgICAgICBJTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICAgIFZBUklBTlQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50JyxcbiAgICAgICAgVkFSSUFOVF9JTlZFUlNFOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudC1pbnZlcnNlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBST0xFOiB7XG4gICAgICBESVNQTEFZXzE6ICd0aWRlLXR5cG9ncmFwaHktZGlzcGxheS0xJyxcbiAgICAgIEhFQURMSU5FXzE6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMScsXG4gICAgICBIRUFETElORV8yOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTInLFxuICAgICAgSEVBRExJTkVfMzogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0zJyxcbiAgICAgIFRJVExFXzE6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMScsXG4gICAgICBUSVRMRV8yOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTInLFxuICAgICAgQk9EWV8xOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMScsXG4gICAgICBCT0RZXzI6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0yJyxcbiAgICAgIExBQkVMXzE6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMScsXG4gICAgICBMQUJFTF8xX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEtc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMjogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yJyxcbiAgICAgIExBQkVMXzJfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMi1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8zOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTMnLFxuICAgICAgTElOS18xOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMScsXG4gICAgICBMSU5LXzI6ICd0aWRlLXR5cG9ncmFwaHktbGluay0yJyxcbiAgICAgIExJTktfMzogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTMnLFxuICAgICAgQlVUVE9OXzE6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTEnLFxuICAgICAgQlVUVE9OXzI6ICd0aWRlLXR5cG9ncmFwaHktYnV0dG9uLTInLFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgVFdFTFZFOiAndGlkZS1mb250LTEyJyxcbiAgICAgIEZPVVJURUVOOiAndGlkZS1mb250LTE0JyxcbiAgICAgIFNJWFRFRU46ICd0aWRlLWZvbnQtMTYnLFxuICAgICAgVFdFTlRZOiAndGlkZS1mb250LTIwJyxcbiAgICAgIFRXRU5UWV9GT1VSOiAndGlkZS1mb250LTI0JyxcbiAgICAgIFRISVJUWV9UV086ICd0aWRlLWZvbnQtMzInLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNDAwJyxcbiAgICAgIEZJVkVfSFVORFJFRDogJ3RpZGUtZm9udC01MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICAgIFNFVkVOX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNzAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBaRVJPOiAndGlkZS1nYXAtMCcsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gICAgRk9VUjogJ3RpZGUtZ2FwLTQnLFxuICB9LFxuICBHUklEOiB7XG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi1oZWlnaHQtMCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgRElTQUJMRUQ6ICd0aWRlLW9wYWNpdHktZGlzYWJsZWQnLFxuICAgIE9GRjogJ3RpZGUtb3BhY2l0eS1ub25lJyxcbiAgICBPTjogJ3RpZGUtb3BhY2l0eScsXG4gIH0sXG4gIE9WRVJGTE9XOiB7XG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUteC1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteC1oaWRkZW4nLFxuICAgICAgU0NST0xMOiAndGlkZS14LXNjcm9sbCcsXG4gICAgfSxcbiAgICBYWToge1xuICAgICAgQVVUTzogJ3RpZGUteHktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXh5LWhpZGRlbicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBBVVRPOiAndGlkZS15LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS15LWhpZGRlbicsXG4gICAgfSxcbiAgfSxcbiAgUEFERElORzoge1xuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy15LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgUE9JTlRFUl9FVkVOVFM6IHtcbiAgICBPRkY6ICd0aWRlLXBvaW50ZXItZXZlbnRzLW5vbmUnLFxuICAgIE9OOiAndGlkZS1wb2ludGVyLWV2ZW50cycsXG4gIH0sXG4gIFBPU0lUSU9OOiB7XG4gICAgQUJTT0xVVEU6ICd0aWRlLXBvc2l0aW9uLWFic29sdXRlJyxcbiAgICBGSVhFRDogJ3RpZGUtcG9zaXRpb24tZml4ZWQnLFxuICAgIFJFTEFUSVZFOiAndGlkZS1wb3NpdGlvbi1yZWxhdGl2ZScsXG4gICAgU1RBVElDOiAndGlkZS1wb3NpdGlvbi1zdGF0aWMnLFxuICAgIFNUSUNLWTogJ3RpZGUtcG9zaXRpb24tc3RpY2t5JyxcbiAgfSxcbiAgUE9TSVRJT05JTkc6IHtcbiAgICBCT1RUT006ICd0aWRlLWJvdHRvbS0wJyxcbiAgICBMRUZUOiAndGlkZS1sZWZ0LTAnLFxuICAgIFJJR0hUOiAndGlkZS1yaWdodC0wJyxcbiAgICBUT1A6ICd0aWRlLXRvcC0wJyxcbiAgfSxcbiAgUkFUSU86IHtcbiAgICBPTkVfVE9fT05FOiAndGlkZS1yYXRpby0xLzEnLFxuICAgIFNJWFRFRU5fVE9fTklORTogJ3RpZGUtcmF0aW8tMTYvOScsXG4gICAgVEhSRUVfVE9fVFdPOiAndGlkZS1yYXRpby0zLzInLFxuICB9LFxuICBTQ1JPTExCQVI6IHtcbiAgICBPRkY6ICd0aWRlLXNjcm9sbGJhci1ub25lJyxcbiAgfSxcbiAgU0hBRE9XOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtc2hhZG93LWluaXRpYWwnLFxuICAgIEJPVFRPTTogJ3RpZGUtc2hhZG93LWJvdHRvbScsXG4gICAgVE9QOiAndGlkZS1zaGFkb3ctdG9wJyxcbiAgICBURVhUOiAndGlkZS1zaGFkb3ctdGV4dCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc2Nyb2xsLXNuYXAnLFxuICB9LFxuICBTTkFQX0FMSUdOOiB7XG4gICAgU1RBUlQ6ICd0aWRlLXNjcm9sbC1zbmFwLXN0YXJ0JyxcbiAgfSxcbiAgU1RSSUtFVEhST1VHSDoge1xuICAgIE9GRjogJ3RpZGUtc3RyaWtldGhyb3VnaC1ub25lJyxcbiAgICBPTjogJ3RpZGUtc3RyaWtldGhyb3VnaCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ob3Zlci1ub25lJyxcbiAgICB9LFxuICAgIFJFU1Q6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUnLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgfSxcbiAgfSxcbiAgVVNFUl9TRUxFQ1Q6IHtcbiAgICBJTklUSUFMOiAndGlkZS11c2VyLXNlbGVjdC1pbml0aWFsJyxcbiAgICBOT05FOiAndGlkZS11c2VyLXNlbGVjdC1ub25lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEFVVE86ICd0aWRlLXdpZHRoLWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gICAgTUlOX1pFUk86ICd0aWRlLW1pbi13aWR0aC0wJyxcbiAgfSxcbiAgWl9JTkRFWDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXotaW5kZXgtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS16LWluZGV4LTEnLFxuICB9LFxufSBhcyBjb25zdDtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IE9SSUVOVEFUSU9OIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9yaWVudGF0aW9uIH0gZnJvbSAnQC90eXBlcy9PcmllbnRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb3JpZW50YXRpb246IE9SSUVOVEFUSU9OLkhPUklaT05UQUwsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtZGl2aWRlciddXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgcHJvcHMub3JpZW50YXRpb24gPT09IE9SSUVOVEFUSU9OLkhPUklaT05UQUxcbiAgICAgICAgICA/IFtDU1MuTUFSR0lOLlkuSEFMRiwgQ1NTLkJPUkRFUi5CT1RUT00uT05FLCBDU1MuV0lEVEguRlVMTF1cbiAgICAgICAgICA6IFtDU1MuTUFSR0lOLlguSEFMRiwgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsIENTUy5IRUlHSFQuRlVMTF0sXG4gICAgICBdXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWRpdmlkZXIge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcblxuICAgICAgY29uc3QgbG9hZGVyID0gcmVhbG1Gb2xkZXJcbiAgICAgICAgPyAoKSA9PiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvcmVhbG0vJHtyZWFsbUZvbGRlcn0vSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApXG4gICAgICAgIDogKCkgPT4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcblxuICAgICAgY29uc3QgbW9kID0gYXdhaXQgbG9hZGVyKCk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhtb2QuZGVmYXVsdCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZSwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIj5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgOmlzPVwiaW5uZXJTVkdcIlxuICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZT5cbiAgLnRpZGUtaWNvbiB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24uc21hbGwge1xuICAgIHdpZHRoOiAxLjI1cmVtO1xuICAgIGhlaWdodDogMS4yNXJlbTtcbiAgfVxuXG4gIC50aWRlLWljb24gc3ZnIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBJQ09OID0ge1xuICBBQ0NPVU5UX0JBTEFOQ0U6ICdhY2NvdW50LWJhbGFuY2UnLFxuICBBQ1VURTogJ2FjdXRlJyxcbiAgQUREOiAnYWRkJyxcbiAgQUlfREVTQ1JJUFRJT046ICdhaS1kZXNjcmlwdGlvbicsXG4gIEFMSUdOX1NQQUNFX0VWRU46ICdhbGlnbi1zcGFjZS1ldmVuJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19DWUNMRTogJ2Fycm93LWN5Y2xlJyxcbiAgQVJST1dfRk9SV0FSRDogJ2Fycm93LWZvcndhcmQnLFxuICBBUlJPV19SSUdIVDogJ2Fycm93LXJpZ2h0JyxcbiAgQVJST1dfVVA6ICdhcnJvdy11cCcsXG4gIEFTU0lHTk1FTlQ6ICdhc3NpZ25tZW50JyxcbiAgQVRUQUNIX01PTkVZOiAnYXR0YWNoLW1vbmV5JyxcbiAgQVVUT19SRU5FVzogJ2F1dG8tcmVuZXcnLFxuICBBV0FSRF9TVEFSOiAnYXdhcmQtc3RhcicsXG4gIEJFRDogJ2JlZCcsXG4gIEJPTFQ6ICdib2x0JyxcbiAgQk9PS01BUks6ICdib29rbWFyaycsXG4gIEJVTktIT1VTRTogJ2J1bmtob3VzZScsXG4gIENBTEVOREFSX01PTlRIOiAnY2FsZW5kYXItbW9udGgnLFxuICBDQUxMOiAnY2FsbCcsXG4gIENBTExfUVVBTElUWTogJ2NhbGwtcXVhbGl0eScsXG4gIENBUl9SRU5UQUw6ICdjYXItcmVudGFsJyxcbiAgQ0hFQ0s6ICdjaGVjaycsXG4gIENIRVZST05fTEVGVDogJ2NoZXZyb24tbGVmdCcsXG4gIENIRVZST05fUklHSFQ6ICdjaGV2cm9uLXJpZ2h0JyxcbiAgQ0xFQVI6ICdjbGVhcicsXG4gIENMT1NFOiAnY2xvc2UnLFxuICBDT05UUkFDVDogJ2NvbnRyYWN0JyxcbiAgQ1JBU0g6ICdjcmFzaCcsXG4gIERBU0hCT0FSRF9DVVNUT01JWkU6ICdkYXNoYm9hcmQtY3VzdG9taXplJyxcbiAgREVMRVRFOiAnZGVsZXRlJyxcbiAgRElBTU9ORDogJ2RpYW1vbmQnLFxuICBESVJFQ1RJT05TX0JPQVQ6ICdkaXJlY3Rpb25zLWJvYXQnLFxuICBET01BSU46ICdkb21haW4nLFxuICBEUkFGVDogJ2RyYWZ0JyxcbiAgRURJVDogJ2VkaXQnLFxuICBFTkdJTkU6ICdlbmdpbmUnLFxuICBFTkdJTkVFUklORzogJ2VuZ2luZWVyaW5nJyxcbiAgRVJST1I6ICdlcnJvcicsXG4gIEVYUEFORF9DT05URU5UOiAnZXhwYW5kLWNvbnRlbnQnLFxuICBFWFBBTkRfTEVTUzogJ2V4cGFuZC1sZXNzJyxcbiAgRVhQQU5EX01PUkU6ICdleHBhbmQtbW9yZScsXG4gIEZBQ0VCT09LOiAnZmFjZWJvb2snLFxuICBGQVZPUklURTogJ2Zhdm9yaXRlJyxcbiAgRkFWT1JJVEVfRklMTEVEOiAnZmF2b3JpdGUtZmlsbGVkJyxcbiAgRkxBRzogJ2ZsYWcnLFxuICBGT1JNQVRfQk9MRDogJ2Zvcm1hdC1ib2xkJyxcbiAgRk9STUFUX0lUQUxJQzogJ2Zvcm1hdC1pdGFsaWMnLFxuICBGT1JNQVRfTElTVF9CVUxMRVRFRDogJ2Zvcm1hdC1saXN0LWJ1bGxldGVkJyxcbiAgRk9SVU06ICdmb3J1bScsXG4gIEdBUzogJ2dhcycsXG4gIEdBVkVMOiAnZ2F2ZWwnLFxuICBHRUFSUzogJ2dlYXJzJyxcbiAgR0xPQkVfTE9DQVRJT05fUElOOiAnZ2xvYmUtbG9jYXRpb24tcGluJyxcbiAgR09PR0xFOiAnZ29vZ2xlJyxcbiAgR09PR0xFX1BBWTogJ2dvb2dsZS1wYXknLFxuICBHUklEOiAnZ3JpZCcsXG4gIEhBTkRTSEFLRTogJ2hhbmRzaGFrZScsXG4gIEhBTkRZTUFOOiAnaGFuZHltYW4nLFxuICBIRUlHSFQ6ICdoZWlnaHQnLFxuICBIRUxQOiAnaGVscCcsXG4gIElORk86ICdpbmZvJyxcbiAgSU5GT1JNQVRJT046ICdpbmZvcm1hdGlvbicsXG4gIElOU0VSVF9URVhUOiAnaW5zZXJ0LXRleHQnLFxuICBJTlNUQUdSQU06ICdpbnN0YWdyYW0nLFxuICBJT1NfU0hBUkU6ICdpb3Mtc2hhcmUnLFxuICBMQVlPVVQ6ICdsYXlvdXQnLFxuICBMRVZFTExJTkdfSkFDSzogJ2xldmVsbGluZy1qYWNrJyxcbiAgTElOS0VEX0lOOiAnbGlua2VkIGluJyxcbiAgTE9DQUxfU0hJUFBJTkc6ICdsb2NhbC1zaGlwcGluZycsXG4gIExPQ0s6ICdsb2NrJyxcbiAgTUFJTDogJ21haWwnLFxuICBNRU5VOiAnbWVudScsXG4gIE1PTkVZX0JBRzogJ21vbmV5LWJhZycsXG4gIE1PUkVfSE9SSVo6ICdtb3JlLWhvcml6JyxcbiAgTk9USUZJQ0FUSU9OUzogJ25vdGlmaWNhdGlvbnMnLFxuICBPRE9NRVRFUjogJ29kb21ldGVyJyxcbiAgT1BFTl9JTl9ORVc6ICdvcGVuLWluLW5ldycsXG4gIFBBTEVUVEU6ICdwYWxldHRlJyxcbiAgUEFZUEFMOiAncGF5cGFsJyxcbiAgUEVSU09OOiAncGVyc29uJyxcbiAgUEVSU09OX1NFQVJDSDogJ3BlcnNvbi1zZWFyY2gnLFxuICBQSE9UT19DQU1FUkE6ICdwaG90by1jYW1lcmEnLFxuICBQSU5URVJFU1Q6ICdwaW50ZXJlc3QnLFxuICBQTEFZX0FSUk9XOiAncGxheS1hcnJvdycsXG4gIFBPTElDWTogJ3BvbGljeScsXG4gIFBPV0VSOiAncG93ZXInLFxuICBQT1dFUl9PRkY6ICdwb3dlci1vZmYnLFxuICBQUklPUklUWV9ISUdIOiAncHJpb3JpdHktaGlnaCcsXG4gIFJFTU9WRTogJ3JlbW92ZScsXG4gIFJFUVVFU1RfUVVPVEU6ICdyZXF1ZXN0LXF1b3RlJyxcbiAgUkVTRVRfV1JFTkNIOiAncmVzZXQtd3JlbmNoJyxcbiAgUk9BRDogJ3JvYWQnLFxuICBST1VOREVEX0NPUk5FUjogJ3JvdW5kZWQtY29ybmVyJyxcbiAgUlVMRVI6ICdydWxlcicsXG4gIFNBSUxJTkc6ICdzYWlsaW5nJyxcbiAgU0NIT09MOiAnc2Nob29sJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgU0VBVElORzogJ3NlYXRpbmcnLFxuICBTRUxMOiAnc2VsbCcsXG4gIFNFTlNPUlM6ICdzZW5zb3JzJyxcbiAgU0VUVElOR1M6ICdzZXR0aW5ncycsXG4gIFNIQVJFOiAnc2hhcmUnLFxuICBTSElFTERfQ0hFQ0s6ICdzaGllbGQtY2hlY2snLFxuICBTSE9QUElOR19DQVJUOiAnc2hvcHBpbmctY2FydCcsXG4gIFNMRUVQUzogJ3NsZWVwcycsXG4gIFNNUzogJ3NtcycsXG4gIFNOT1dGTEFLRTogJ3Nub3dmbGFrZScsXG4gIFNUQVI6ICdzdGFyJyxcbiAgU1RBUl9GSUxMRUQ6ICdzdGFyLWZpbGxlZCcsXG4gIFNUQVJfSEFMRjogJ3N0YXItaGFsZicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzQm90dG9tRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0JvdHRvbURpdmlkZXI6IGZhbHNlLFxuICAgIGhhc1RvcERpdmlkZXI6IGZhbHNlLFxuICAgIGlzT3B0aW9uYWw6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0V4cGFuZGVkID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVUb2dnbGVDbGljayA9ICgpID0+IHtcbiAgICBpc0V4cGFuZGVkLnZhbHVlID0gIWlzRXhwYW5kZWQudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taXRlbSddXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLFxuICAgICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlVG9nZ2xlQ2xpY2tcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xEXVwiPlxuICAgICAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJywgQ1NTLkRJU1BMQVkuR1JJRF1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTiwgQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJwcm9wcy5oYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24taXRlbSB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDFmcik7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5jb2xsYXBzZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDBweCwgMGZyKTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9CUk9BRCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudEJyb2FkID0gKHR5cGVvZiBFTEVNRU5UX0JST0FEKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9CUk9BRF07XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVDb25maWcgPSB7XG4gIGxpbmtDb21wb25lbnQ6IENvbXBvbmVudCB8IHR5cGVvZiBFTEVNRU5ULkxJTks7XG59O1xuXG5jb25zdCB0aWRlQ29uZmlnRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IGxpbmtDb21wb25lbnQ6IEVMRU1FTlQuTElOSyB9O1xuXG5jb25zdCBDT05GSUdfS0VZID0gU3ltYm9sKCd0aWRlLWNvbmZpZycpO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZVRpZGVDb25maWcgPSAoY29uZmlnOiBQYXJ0aWFsPFRpZGVDb25maWc+ID0ge30pID0+IHtcbiAgY29uc3QgY29uZmlnV2l0aERlZmF1bHRzOiBUaWRlQ29uZmlnID0geyAuLi50aWRlQ29uZmlnRGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xuXG4gIHByb3ZpZGU8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgY29uZmlnV2l0aERlZmF1bHRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlQ29uZmlnID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVDb25maWc+KENPTkZJR19LRVksIHRpZGVDb25maWdEZWZhdWx0cyk7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUNvbmZpZyB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZyc7XG5cbiAgY29uc3QgeyBsaW5rQ29tcG9uZW50IH0gPSB1c2VUaWRlQ29uZmlnKCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cImxpbmtDb21wb25lbnRcIj5cbiAgICA8c2xvdCAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uOiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwicHJvcHMuaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgcHJvcHMucHJpb3JpdHkgJiYgYHRpZGUtYnV0dG9uLSR7cHJvcHMucHJpb3JpdHl9YCxcbiAgICAgIFtDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBDU1MuUEFERElORy5GVUxMLkhBTEZdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgcHJvcHMuZGlzYWJsZWRcIlxuICAgIDpocmVmPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIHByb3BzLmhyZWYgPyBwcm9wcy5ocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIHByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uU2l6ZT86IFNpemU7XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25TaXplOiBTSVpFLlNNQUxMLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbGluaycsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkUsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgc3VidGxlID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkYsIENTUy5VTkRFUkxJTkUuSE9WRVIuT05dIDogW0NTUy5VTkRFUkxJTkUuUkVTVC5PTiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PRkZdLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICA6c2l6ZT1cImljb25TaXplXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuQUxJR04uWS5NSURETEVdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ29tbWVudCwgY29tcHV0ZWQsIHVzZVNsb3RzIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlTGluay52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBBbGVydCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBjdGFMYWJlbD86IHN0cmluZztcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcbiAgICB0eXBlPzogQWxlcnQ7XG4gIH07XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdjbG9zZScpOiB2b2lkO1xuICAgIChldmVudDogJ2N0YUNsaWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjdGFMYWJlbDogdW5kZWZpbmVkLFxuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcbiAgY29uc3Qgc2xvdHMgPSB1c2VTbG90cygpO1xuICBjb25zdCBoYXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gc2xvdHMuZGVmYXVsdD8uKCk7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIG5vZGVzLnNvbWUoXG4gICAgICAobm9kZSkgPT4gbm9kZS50eXBlICE9PSBDb21tZW50ICYmICh0eXBlb2Ygbm9kZS5jaGlsZHJlbiAhPT0gJ3N0cmluZycgfHwgbm9kZS5jaGlsZHJlbi50cmltKCkubGVuZ3RoID4gMClcbiAgICApO1xuICB9KTtcblxuICBjb25zdCBpY29uVHlwZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IpIHJldHVybiBJQ09OLlBSSU9SSVRZX0hJR0g7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MpIHJldHVybiBJQ09OLkNIRUNLO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HKSByZXR1cm4gSUNPTi5XQVJOSU5HO1xuICAgIHJldHVybiBJQ09OLklORk9STUFUSU9OO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1IsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuSU5GT10gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1NcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNVQ0NFU1NdXG4gICAgICAgIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5XQVJOSU5HXVxuICAgICAgICA6ICcnLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksIENTUy5TSEFET1cuQk9UVE9NXSA6IENTUy5CT1JERVIuTEVGVC5UV08sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgICB2LWlmPVwiIXByb3BzLmlzVG9hc3RcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImljb25UeXBlXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWhlYWRpbmcnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uUk9XLFxuICAgICAgICAhaGFzQm9keSA/IFtDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLk1BUkdJTi5SSUdIVC5IQUxGXSA6ICcnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXCI+e3sgcHJvcHMuaGVhZGluZyB9fTwvc3Bhbj5cblxuICAgICAgPFRpZGVMaW5rXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmICFoYXNCb2R5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsICFwcm9wcy5pc1RvYXN0ICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgIDxzbG90IC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uVE9QLkhBTEZdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsICYmIGhhc0JvZHlcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFsZXJ0IHtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2ljb24gaGVhZGluZyBjbG9zZSdcbiAgICAgICcuIGJvZHkgLic7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLXRpZGUtc2FmZS1mcikgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfMjA6ICcyMCcsXG4gIFlFQVJTXzI1OiAnMjUnLFxuICBZRUFSU18zMDogJzMwJyxcbiAgWUVBUlNfMzU6ICczNScsXG4gIFlFQVJTXzU6ICc1Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJhZGdlQ29sb3IgPSAodHlwZW9mIEJBREdFX0NPTE9SKVtrZXlvZiB0eXBlb2YgQkFER0VfQ09MT1JdO1xuZXhwb3J0IHR5cGUgQmFkZ2VUcnVzdGVkWWVhcnMgPSAodHlwZW9mIEJBREdFX1RSVVNURUQpW2tleW9mIHR5cGVvZiBCQURHRV9UUlVTVEVEXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQkFER0VfQ09MT1JfREVUQUlMUyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjb2xvcj86IEJhZGdlQ29sb3I7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjb2xvcjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlJyxcbiAgICAgIHByb3BzLmlzRmxvYXRpbmcgfHwgcHJvcHMuY29sb3IgPyBbQ1NTLkJHLlNVUkZBQ0UuRkxPQVRJTkcsIENTUy5TSEFET1cuQk9UVE9NXSA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBwcm9wcy5jb2xvciAmJiBbQ1NTLkJPUkRFUi5MRUZULlRXTywgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uYm9yZGVyQ29sb3JdLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBwcm9wcy5jb2xvciAmJiBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5pY29uQ29sb3JdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9UUlVTVEVEIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZVRydXN0ZWRZZWFycyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgeWVhcnM/OiBCYWRnZVRydXN0ZWRZZWFycztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHllYXJzOiBCQURHRV9UUlVTVEVELllFQVJTXzUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXRydXN0ZWQtcGFydG5lcicsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5ELFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uQVdBUkRfU1RBUlwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj5cbiAgICAgIDxzcGFuPnt7IHByb3BzLnllYXJzIH19IHllYXIgdHJ1c3RlZCBwYXJ0bmVyPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS12ZXJpZmllZC12ZWhpY2xlJyxcbiAgICAgIENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uVkVSSUZJRURcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlZlcmlmaWVkIHZlaGljbGU8L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtaW5mby1wcmltYXJ5KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCcmVhZENydW1iIH0gZnJvbSAnQC90eXBlcy9CcmVhZENydW1iJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBicmVhZENydW1iczogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDx1bCA6Y2xhc3M9XCJbJ3RpZGUtYnJlYWQtY3J1bWJzJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICA8dGVtcGxhdGVcbiAgICAgIDprZXk9XCJjcnVtYi5sYWJlbFwiXG4gICAgICB2LWZvcj1cIihjcnVtYiwgaW5kZXgpIGluIHByb3BzLmJyZWFkQ3J1bWJzXCJcbiAgICA+XG4gICAgICA8bGkgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8yXVwiPlxuICAgICAgICA8SW50ZXJuYWxCYXNlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICA6aHJlZj1cImNydW1iLnVybFwiXG4gICAgICAgICAgdi1pZj1cImNydW1iLnVybFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L0ludGVybmFsQmFzZUxpbms+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIHYtaWY9XCJwcm9wcy5icmVhZENydW1icyAmJiBpbmRleCA8IHByb3BzLmJyZWFkQ3J1bWJzLmxlbmd0aCAtIDFcIj5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkFSUk9XX1JJR0hUXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3VsPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFLCBTSVpFX0JVVFRPTiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBTaXplQnV0dG9uIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBCdXR0b25UeXBlIH0gZnJvbSAnQC90eXBlcy9UeXBlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gICAgc2l6ZT86IFNpemVCdXR0b247XG4gICAgdHlwZT86IEJ1dHRvblR5cGU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gICAgc2l6ZTogU0laRV9CVVRUT04uTEFSR0UsXG4gICAgdHlwZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCB0eXBlQXR0cmlidXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gcHJvcHMudHlwZSA/PyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFxuICApO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uJyxcbiAgICAgIHByb3BzLnByaW9yaXR5ICYmIGB0aWRlLWJ1dHRvbi0ke3Byb3BzLnByaW9yaXR5fWAsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVhdIDogW0NTUy5ESVNQTEFZLkZMRVhdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gQ1NTLlVOREVSTElORS5SRVNULk9GRiA6ICcnLFxuICAgICAgc2l6ZSA9PT0gU0laRV9CVVRUT04uU01BTExcbiAgICAgICAgPyBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUl1cbiAgICAgICAgOiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSwgQ1NTLlBBRERJTkcuWC5UV08sIENTUy5QQURESU5HLlkuT05FLCBDU1MuQk9SREVSLlJBRElVUy5IQUxGXSxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cInR5cGVBdHRyaWJ1dGVcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAge3sgcHJvcHMubGFiZWwgfX1cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5ULCBFTEVNRU5UX0JST0FEIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudEJyb2FkO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX0JST0FELkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBDU1MuUEFERElORy5GVUxMLkhBTEZdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkRJViA/IFtDU1MuQ1VSU09SLlBPSU5URVJdIDogJycsXG4gICAgICBbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8zXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHRhYnM6IFRhYltdIHwgcmVhZG9ubHkgVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudEluZGV4ID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUgPSBpbmRleDtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gY3VycmVudEluZGV4XG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgVFlQRV9DQVJEIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHsgRUxFTUVOVF9CUk9BRCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBDYXJkVHlwZSB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGhlYWRpbmc6IHN0cmluZztcbiAgICBpY29uPzogSWNvbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgdHlwZT86IENhcmRUeXBlO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZDxFbGVtZW50QnJvYWQgfCB0eXBlb2YgSW50ZXJuYWxCYXNlTGluaz4oKCkgPT5cbiAgICBwcm9wcy5ocmVmID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLnR5cGUgPT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMID8gRUxFTUVOVF9CUk9BRC5ESVYgOiBFTEVNRU5UX0JST0FELkRJVlxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcmQnLFxuICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICB0eXBlICE9PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCAmJiAnaG92ZXJhYmxlJyxcbiAgICAgIHR5cGUgPT09IFRZUEVfQ0FSRC5TRUxFQ1RBQkxFICYmIHNlbGVjdGVkICYmICdzZWxlY3RlZCcsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dHlwZT1cInJvb3RFbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiA/IEVMRU1FTlRfQlJPQUQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5BWElTMi5TVEFSVCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IGhlYWRpbmcgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2FyZC5ob3ZlcmFibGU6bm90KC5zZWxlY3RlZCk6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItcmVzdCk7XG4gIH1cbiAgLnRpZGUtY2FyZC5zZWxlY3RlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGFzRG90cz86IGJvb2xlYW47XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG4gICAgbWF4RG90cz86IG51bWJlcjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhhc0RvdHM6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgICBpc0hlYWRsaW5lMTogZmFsc2UsXG4gICAgaXNIaWRlYXdheUJ1dHRvbnM6IHRydWUsXG4gICAgaXNTY3JvbGxCeVBhZ2U6IHRydWUsXG4gICAgbWF4RG90czogNSxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY2Fyb3VzZWxSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGRvdHNSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZnJhbWVXaWR0aCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHRvdWNoU3RhcnQgPSByZWY8VG91Y2ggfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHNsaWRlc0luVmlld0NvdW50ID0gcmVmPG51bWJlcj4oMSk7XG5cbiAgY29uc3QgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMSk7XG4gIGNvbnN0IGRvdENvbnRhaW5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gZG90Q291bnRWaXNpYmxlLnZhbHVlICogZG90V2lkdGggKyAoZG90Q291bnRWaXNpYmxlLnZhbHVlIC0gMSkgKiBkb3RHYXApO1xuICBjb25zdCBkb3RDb3VudFZpc2libGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubWF4RG90cyA+IHRvdGFsUGFnZXMudmFsdWUgPyB0b3RhbFBhZ2VzLnZhbHVlIDogcHJvcHMubWF4RG90cykpO1xuICBjb25zdCB0b3RhbFBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghc2xpZGVzLnZhbHVlLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgaWYgKCFwcm9wcy5pc1Njcm9sbEJ5UGFnZSkgcmV0dXJuIHNsaWRlcy52YWx1ZS5sZW5ndGg7XG5cbiAgICBjb25zdCBxdW90aWVudCA9IE1hdGguZmxvb3Ioc2xpZGVzLnZhbHVlLmxlbmd0aCAvIHNsaWRlc0luVmlld0NvdW50LnZhbHVlKTtcbiAgICBjb25zdCByZW1haW5kZXIgPSBzbGlkZXMudmFsdWUubGVuZ3RoICUgc2xpZGVzSW5WaWV3Q291bnQudmFsdWU7XG5cbiAgICByZXR1cm4gcmVtYWluZGVyID8gcXVvdGllbnQgKyAxIDogcXVvdGllbnQ7XG4gIH0pO1xuXG4gIGNvbnN0IGRvdEdhcDogbnVtYmVyID0gODtcbiAgY29uc3QgZG90V2lkdGg6IG51bWJlciA9IDg7XG4gIGxldCBzY3JvbGxUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgZ2V0RG90Q2xhc3MgPSAoZG90SW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGxldCBjbGFzc05hbWUgPSAnJztcblxuICAgIGlmIChkb3RJbmRleCA9PT0gY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSc7XG4gICAgaWYgKE1hdGguYWJzKGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSBkb3RJbmRleCkgPT09IDEpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvcic7XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29udGFpbmVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmlnaHQgPSBjb250YWluZXJSZWN0LmxlZnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbGVtZW50UmlnaHQgPSBlbGVtZW50UmVjdC5sZWZ0ICsgZWxlbWVudFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gZWxlbWVudFJpZ2h0IDw9IGNvbnRhaW5lclJpZ2h0ICYmIGVsZW1lbnRSZWN0LmxlZnQgPj0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoRW5kID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0b3VjaFN0YXJ0LnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCB0b3VjaEVuZCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgIGNvbnN0IGRlbHRhWCA9IHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WCAtIHRvdWNoRW5kLmNsaWVudFg7XG4gICAgY29uc3QgZGVsdGFZID0gdG91Y2hFbmQuY2xpZW50WSAtIHRvdWNoU3RhcnQudmFsdWUuY2xpZW50WTtcblxuICAgIGlmIChNYXRoLmFicyhkZWx0YVgpID4gTWF0aC5hYnMoZGVsdGFZKSkgc2Nyb2xsQnlEZWx0YShkZWx0YVgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICB0b3VjaFN0YXJ0LnZhbHVlID0gZXZlbnQudG91Y2hlc1swXTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVXaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgIGNvbnN0IGlzU2hpZnRLZXlEb3duID0gZXZlbnQuc2hpZnRLZXk7XG4gICAgY29uc3QgaXNXaGVlbCA9IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgPj0gODA7XG5cbiAgICBpZiAoaXNXaGVlbCAmJiAhaXNTaGlmdEtleURvd24pIHJldHVybjtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjbGVhclRpbWVvdXQoc2Nyb2xsVGltZW91dCk7XG5cbiAgICBzY3JvbGxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzV2hlZWwpIHtcbiAgICAgICAgc2Nyb2xsQnlEZWx0YShldmVudC5kZWx0YVkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZVswXV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgICAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5lclJlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29udGVudFdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGZyYW1lV2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuY2xpZW50V2lkdGg7XG4gICAgc2hvd0J1dHRvbnMudmFsdWUgPSBjb250ZW50V2lkdGgudmFsdWUgPiBmcmFtZVdpZHRoLnZhbHVlO1xuXG4gICAgc2xpZGVzSW5WaWV3Q291bnQudmFsdWUgPSBzbGlkZXMudmFsdWUuZmlsdGVyKChzbGlkZSkgPT5cbiAgICAgIGdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lcihzbGlkZSwgY29udGFpbmVyUmVmLnZhbHVlIGFzIEhUTUxFbGVtZW50KVxuICAgICkubGVuZ3RoO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNhcm91c2VsUmVmPy52YWx1ZSxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMXB4IDBweCAwcHgnLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBsZXQgc2xpZGVzQWRkZWRUb1ZpZXc6IG51bWJlcltdID0gW107XG5cbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVJbmRleCA9IHNsaWRlcy52YWx1ZS5pbmRleE9mKGVudHJ5LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgc2xpZGVzQWRkZWRUb1ZpZXcucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUucHVzaChzbGlkZUluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuZmlsdGVyKChzbGlkZSkgPT4gc2xpZGUgIT09IHNsaWRlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgIH0pO1xuXG4gICAgICBpc0ZpcnN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoMCk7XG4gICAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcyhzbGlkZXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cbiAgICAgIGlmIChzbGlkZXNBZGRlZFRvVmlldy5sZW5ndGggPiAwKSBlbWl0KCdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0FkZGVkVG9WaWV3KTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHNsaWRlcy52YWx1ZS5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKHNsaWRlT2JzZXJ2ZXIudmFsdWUpIHNsaWRlT2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjaGlsZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsb3QgPSAoKSA9PiB7XG4gICAgY29uc3Qgb2JzZXJ2ZXJDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgfTtcblxuICAgIHNsb3RPYnNlcnZlci52YWx1ZSA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9ic2VydmVyQ2FsbGJhY2spO1xuXG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSkgc2xvdE9ic2VydmVyLnZhbHVlLm9ic2VydmUoY29udGFpbmVyUmVmLnZhbHVlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxCeURlbHRhID0gKGRlbHRhOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSBkZWx0YSA8IDA7XG5cbiAgICBpZiAoaXNTY3JvbGxpbmdMZWZ0KSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLmlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gdGFyZ2V0IDw9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxMZWZ0O1xuXG4gICAgY3VycmVudFBhZ2VJbmRleC52YWx1ZSA9IGlzU2Nyb2xsaW5nTGVmdCA/IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgLSAxIDogY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDE7XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICAgIHVwZGF0ZURvdHMoaXNTY3JvbGxpbmdMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNMYXN0U2xpZGUudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW25leHRTbGlkZV0/Lm9mZnNldExlZnQ7XG5cbiAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1BhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDAgfHwgaXNGaXJzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXT8ub2Zmc2V0TGVmdCB8fCAwO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFNsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPiAxID8gc2xpZGVzSW5WaWV3LnZhbHVlWzFdIDogc2xpZGVzSW5WaWV3LnZhbHVlWzBdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1NsaWRlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZURvdHMgPSAoaXNTY3JvbGxpbmdMZWZ0OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFkb3RzUmVmLnZhbHVlIHx8IGRvdENvdW50VmlzaWJsZS52YWx1ZSA+PSB0b3RhbFBhZ2VzLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBpc09kZERvdENvdW50ID0gZG90Q291bnRWaXNpYmxlLnZhbHVlICUgMiAhPT0gMDtcbiAgICBjb25zdCBjZW50ZXJEb3QgPVxuICAgICAgaXNPZGREb3RDb3VudCB8fCBpc1Njcm9sbGluZ0xlZnRcbiAgICAgICAgPyBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpICsgMVxuICAgICAgICA6IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMik7XG5cbiAgICBkb3RzUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IGN1cnJlbnRQYWdlLnZhbHVlIDwgY2VudGVyRG90ID8gMCA6IChjdXJyZW50UGFnZS52YWx1ZSAtIGNlbnRlckRvdCkgKiAoZG90V2lkdGggKyBkb3RHYXApLFxuICAgIH0pO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBtZWFzdXJlRG9tKCk7XG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG5cbiAgICBpZiAod2luZG93KSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gICAgfVxuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW2lzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cIiFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzbG90IG5hbWU9XCJtaXNjXCIgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkRJU1BMQVkuRkxFWF1cIj5cbiAgICAgIDx1bFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtY29udGFpbmVyJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEB0b3VjaGVuZD1cImhhbmRsZVRvdWNoRW5kXCJcbiAgICAgICAgQHRvdWNoc3RhcnQucGFzc2l2ZT1cImhhbmRsZVRvdWNoU3RhcnRcIlxuICAgICAgICBAd2hlZWw9XCJoYW5kbGVXaGVlbFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L3VsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgICAgQ1NTLk1BUkdJTi5CT1RUT00uSEFMRixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImhhc0RvdHMgJiYgdG90YWxQYWdlcyA+IDFcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsLWRvdHMtY29udGFpbmVyJ11cIlxuICAgICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICAgIHdpZHRoOiBgJHtkb3RDb250YWluZXJXaWR0aH1weGAsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdHMnLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuU1RBUlQsXG4gICAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgcmVmPVwiZG90c1JlZlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90JyxcbiAgICAgICAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICAgICAgICAgIENTUy5IRUlHSFQuWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuV0lEVEguWkVSTyxcbiAgICAgICAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgICAgICAgZ2V0RG90Q2xhc3MoaW5kZXgpLFxuICAgICAgICAgICAgICBdXCJcbiAgICAgICAgICAgICAgOmtleT1cImluZGV4XCJcbiAgICAgICAgICAgICAgdi1mb3I9XCIoXywgaW5kZXgpIGluIHRvdGFsUGFnZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdCB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90LWFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgICAudGlkZS1jYXJvdXNlbCAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWFjdGlvbicsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MSU5LXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5TRUFSQ0hcIiAvPlxuXG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1hY3Rpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgaXNBY3RpdmVcbiAgICAgICAgPyBbJ2FjdGl2ZScsIENTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cbiAgICAgICAgOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c2xvdCAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkZdXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogQm9yZGVyIG11c3QgYWx3YXlzIGV4aXN0IHRvIHByZXZlbnQgcmVzaXplIG9uIGhvdmVyIHN0YXRlLCBidXQgbWF0Y2ggYmFja2dyb3VuZCBjb2xvciBvbiByZXN0IHN0YXRlIHRvIGJsZW5kIGluLiAqL1xuICAudGlkZS1jaGlwLWZpbHRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlci5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWlucHV0JyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLWNvbHVtbnNcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjFcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjJcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjNcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjRcIiAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxudHlwZSBUaWRlRm9ybUNvbnRleHQgPSB7XG4gIGZvcmNlU2hvd0Vycm9yczogUmVmPGJvb2xlYW4+O1xufTtcblxuY29uc3QgRk9STV9LRVkgPSBTeW1ib2woJ3RpZGUtZm9ybScpO1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZUZvcm0gPSAoKSA9PiB7XG4gIGNvbnN0IGZvcmNlU2hvd0Vycm9ycyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdmlkZTxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZLCB7IGZvcmNlU2hvd0Vycm9ycyB9KTtcblxuICBjb25zdCByZXZlYWxWYWxpZGF0aW9uRXJyb3JzID0gKCkgPT4ge1xuICAgIGZvcmNlU2hvd0Vycm9ycy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db250ZXh0ID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVkpO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHVzZVRpZGVGb3JtIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdzdWJtaXQnLCBlOiBTdWJtaXRFdmVudCk6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfSA9IHVzZVRpZGVGb3JtKCk7XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFN1Ym1pdEV2ZW50KSA9PiB7XG4gICAgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIGVtaXQoJ3N1Ym1pdCcsIGUpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGZvcm1cbiAgICBAc3VibWl0LnByZXZlbnQ9XCJoYW5kbGVTdWJtaXRcIlxuICAgIG5vdmFsaWRhdGVcbiAgPlxuICAgIDxzbG90IC8+XG4gIDwvZm9ybT5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgT0JKRUNUX0ZJVCA9IHtcbiAgQ09OVEFJTjogJ2NvbnRhaW4nLFxuICBDT1ZFUjogJ2NvdmVyJyxcbiAgU0NBTEVfRE9XTjogJ3NjYWxlLWRvd24nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0Rml0ID0gKHR5cGVvZiBPQkpFQ1RfRklUKVtrZXlvZiB0eXBlb2YgT0JKRUNUX0ZJVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9iamVjdEZpdCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBvYmplY3RGaXQ/OiBPYmplY3RGaXQ7XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9iamVjdEZpdDogT0JKRUNUX0ZJVC5DT1ZFUixcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMudGlsYWJzLmlvL21hcmtldHBsYWNlL2NvbW1vbi9pbWFnZS1jb21pbmctc29vbi5zdmcnO1xuXG4gIGNvbnN0IG9iamVjdEZpdENsYXNzTmFtZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMub2JqZWN0Rml0KSB7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09OVEFJTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09OVEFJTjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT1ZFUjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09WRVI7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuU0NBTEVfRE9XTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuU0NBTEVfRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPQkpFQ1RfRklULkNPVkVSO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHBpY3R1cmVTb3VyY2UgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yKGBzb3VyY2Vbc3Jjc2V0PVwiJHtjdXJyZW50U3JjfVwiXWApO1xuXG4gICAgaWYgKGN1cnJlbnRTcmMgJiYgcGljdHVyZVNvdXJjZSkge1xuICAgICAgcGljdHVyZVNvdXJjZS5zcmNzZXQgPSBpbWFnZURlZmF1bHQ7XG4gICAgfSBlbHNlIGlmIChpbWcudmFsdWUpIHtcbiAgICAgIGltZy52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHBpY3R1cmVcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuRElTUExBWS5CTE9DS11cIlxuICAgIHJlZj1cInBpY3R1cmVcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWltYWdlLWltZycsXG4gICAgICAgICFwcm9wcy53aWR0aCAmJiBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgIXByb3BzLmhlaWdodCAmJiBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICAgICAgICBvYmplY3RGaXRDbGFzc05hbWUsXG4gICAgICBdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpoZWlnaHQ9XCJwcm9wcy5oZWlnaHRcIlxuICAgICAgOmxvYWRpbmc9XCJwcm9wcy5pc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICAgIHJlZj1cImltZ1wiXG4gICAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgICA6d2lkdGg9XCJwcm9wcy53aWR0aFwiXG4gICAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgICAvPlxuICA8L3BpY3R1cmU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbWFnZS1pbWcge1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUltYWdlIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlJztcbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UtYmFja2dyb3VuZCcsIENTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLklTT0xBVElPTi5JU09MQVRFXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJbWFnZVxuICAgICAgICA6YWx0PVwicHJvcHMuYWx0XCJcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTExdXCJcbiAgICAgICAgOmlzLWxhenk9XCJwcm9wcy5pc0xhenlcIlxuICAgICAgICA6b2JqZWN0LWZpdD1cIk9CSkVDVF9GSVQuQ09WRVJcIlxuICAgICAgICA6c291cmNlcz1cInByb3BzLnNvdXJjZXNcIlxuICAgICAgICA6c3JjPVwicHJvcHMuc3JjXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8c2xvdCAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIDpkZWVwKC50aWRlLWltYWdlKSB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBsYWJlbD86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWluZGljYXRvcicsXG4gICAgICBwcm9wcy5sYWJlbCA/ICcnIDogJ2RvdCcsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssXG4gICAgICBDU1MuQUxJR04uWC5DRU5URVIsXG4gICAgICBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMubGFiZWwgJiYgcHJvcHMubGFiZWwudG9TdHJpbmcoKS5sZW5ndGggPiAxID8gW0NTUy5QQURESU5HLlguSEFMRl0gOiBbXSxcbiAgICAgIHByb3BzLmxhYmVsXG4gICAgICAgID8gW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0VdXG4gICAgICAgIDogW0NTUy5CT1JERVIuRlVMTC5PTkVdLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWluZGljYXRvci1sYWJlbCddXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5sYWJlbFwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbmRpY2F0b3I6bm90KC5kb3QpIHtcbiAgICBtaW4td2lkdGg6IDFyZW07XG4gICAgbWluLWhlaWdodDogMXJlbTtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci5kb3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ncmF5LTEwMCk7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLWxhYmVsIHtcbiAgICAvKiBVc2UgYm90dG9tLXdlaWdodGluZyB0byBvZmZzZXQgdGhlIG1hdGhlbWF0aWNhbCBjZW50ZXIgdG8gdGhlIG9wdGljYWwgY2VudGVyLiAqL1xuICAgIG1hcmdpbi10b3A6IC0xcHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNFcnJvcjogYm9vbGVhbjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIH07XG4gIGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLFxuICAgICAgaXNFcnJvciA/IFtDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1JdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpc0Vycm9yXCJcbiAgICAvPlxuXG4gICAgPGRpdj5cbiAgICAgIHt7IG1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZSc7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX1JFU1VMVCA9IHtcbiAgTk9fRVJST1I6IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfSxcbiAgUkVRVUlSRUQ6IHtcbiAgICBtZXNzYWdlOiAnUGxlYXNlIGZpbGwgb3V0IHRoaXMgZmllbGQnLFxuICAgIHZhbGlkOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPz8gZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0ID0gKHtcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yRnJvbVByb3BzOiBzdHJpbmc7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZTogUmVmPHN0cmluZz47XG59KTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmIChlcnJvckZyb21Qcm9wcyAhPT0gJycpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGVycm9yRnJvbVByb3BzLFxuICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgLy8gY3VzdG9tIHZhbGlkYXRvciBwcm9wIGVycm9ycyBmcm9tIGhhdmUgc2Vjb25kIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICBpZiAodmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlID8/ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gYWxsIG90aGVyIHByb3AtYmFzZWQgZXJyb3JzIGNvbWUgbGFzdFxuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUudmFsdWU/LnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH1cblxuICBpZiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb247XG4gICAgfVxuICB9XG4gIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGEgdmFsdWUgYmV0d2VlbiAke2Zvcm1hdE51bWJlcihtaW5sZW5ndGgpfSBhbmQgJHtmb3JtYXROdW1iZXIobWF4bGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBVc2UgJHtmb3JtYXROdW1iZXIobWF4bGVuZ3RoKX0gY2hhcmFjdGVycyBvciBmZXdlcmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhdCBsZWFzdCAke2Zvcm1hdE51bWJlcihtaW5sZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxUIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgdmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKTtcblxuICBjb25zdCBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQgPSAoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgaWYgKHByb3BzLmVycm9yICE9PSAnJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IHByb3BzLmVycm9yLFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIGlmICghcHJvcHMucmVxdWlyZWQgfHwgaXNDaGVja2VkLnZhbHVlKSByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCgpO1xuICB9KTtcblxuICB3YXRjaChcbiAgICBtb2RlbFZhbHVlLFxuICAgICgpID0+IHtcbiAgICAgIGlmIChtb2RlbFZhbHVlLnZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1jaGVja2JveCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUl1cIj5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICAgIHNob3dFcnJvciA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUiA6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW0NTUy5DVVJTT1IuUE9JTlRFUl0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIGlzQ2hlY2tlZFxuICAgICAgICAgICAgPyBbc2hvd0Vycm9yID8gQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SIDogW0NTUy5CRy5TRUNPTkRBUlksIENTUy5CT1JERVIuQ09MT1IuSElHSF1dXG4gICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICBzaG93RXJyb3JcbiAgICAgICAgICAgICAgICAgID8gW0NTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SLCBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1JdXG4gICAgICAgICAgICAgICAgICA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICAgIDppY29uPVwiaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgZm9ybWF0dGVkTGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cIm51bWJlclwiXG4gICAgICAgID5cbiAgICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKG51bWJlcikgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIGlzLWVycm9yXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94IHtcbiAgICBhbGlnbi1zZWxmOiBzdGFydDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRDaGVja2JveC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICByZWY9XCJpbnB1dFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSCwgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgaXNDaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09IHByb3BzLnZhbHVlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxsYWJlbFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICBwcm9wcy5kaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICBdXCJcbiAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgOnZhbHVlPVwidmFsdWVcIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSF0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIGlzQ2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCI+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9sYWJlbD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0UmFkaW8udnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuY2hlY2tlZCxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICAgIGNoZWNrZWQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQaG9uZSwgZm9ybWF0UHJpY2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXR0ZWQgPSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVCA9IHtcbiAgTlVNQkVSOiBmb3JtYXROdW1iZXIsXG4gIFBIT05FOiBmb3JtYXRQaG9uZSxcbiAgUFJJQ0U6IGZvcm1hdFByaWNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVF9SRUdFWCA9IHtcbiAgYWxwaGE6IC9eW2EtekEtWl0rJC9nLFxuICBhbHBoYU51bWJlck9yRW1wdHk6IC9eJHxeW2EtejAtOV0rJC9pLFxuICBhbHBoYVNwYWNlOiAvXlthLXpBLVogXSskL2csXG4gIGVtYWlsOlxuICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKD8hKD86W2EtekEtWjAtOS1dK1xcLikqKD88dGxkPlthLXpBLVpdezIsfSlcXC5cXGs8dGxkPiQpKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVowLTktXStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICB6aXA6IC9eXFxkezV9JC8sXG59O1xuIiwiaW1wb3J0IHsgRk9STUFUX1JFR0VYIH0gZnJvbSAnQC90eXBlcy9Gb3JtYXR0ZWQnO1xuaW1wb3J0IHsgY2hlY2tGb3JtYXQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRPUiA9IHtcbiAgQUxQSEFfTlVNQkVSX0VNUFRZOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFOdW1iZXJPckVtcHR5KSxcbiAgQUxQSEFfU1BBQ0U6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYVNwYWNlKSxcbiAgRU1BSUw6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5lbWFpbCwgJ0VudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyAoZS5nLiBuYW1lQGV4YW1wbGUuY29tKScpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQsICdFbnRlciBhIHZhbGlkIG51bWJlcicpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lLCAnRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInKSxcbiAgWklQOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguemlwLCAnRW50ZXIgYSB2YWxpZCBaaXAgY29kZScpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0RJU1BMQVkgPSB7XG4gIEVBR0VSOiAnZWFnZXInLFxuICBMQVpZOiAnbGF6eScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFcnJvckRpc3BsYXkgPSAodHlwZW9mIEVSUk9SX0RJU1BMQVkpW2tleW9mIHR5cGVvZiBFUlJPUl9ESVNQTEFZXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHVzZUlkLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBvcHRncm91cHM/OiAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW10gfCByZWFkb25seSAoU2VsZWN0T3B0aW9uIHwgU2VsZWN0T3B0aW9uR3JvdXApW107XG4gICAgb3B0aW9ucz86IFNlbGVjdE9wdGlvbltdIHwgcmVhZG9ubHkgU2VsZWN0T3B0aW9uW107XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgb3B0Z3JvdXBzOiB1bmRlZmluZWQsXG4gICAgb3B0aW9uczogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dElkID0gdXNlSWQoKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2VsZWN0RWxlbWVudCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIHNlbGVjdEVsZW1lbnQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cInNlbGVjdEVsZW1lbnRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbnR5cGUgUmFuZ2VEYXRhID0ge1xuICBtaW46IG51bWJlciB8IG51bGw7XG4gIG1heDogbnVtYmVyIHwgbnVsbDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHApID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IG5vRXJyb3I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0T3B0aW9uc0Zyb21TdHJpbmdzID0gKHN0cmluZ3M6IHN0cmluZ1tdKSA9PlxuICBzdHJpbmdzLm1hcChcbiAgICAob3B0aW9uKSA9PlxuICAgICAgKHtcbiAgICAgICAgbGFiZWw6IG9wdGlvbixcbiAgICAgICAgdmFsdWU6IG9wdGlvbixcbiAgICAgIH0gYXMgU2VsZWN0T3B0aW9uKVxuICApO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7XG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWx1ZSxcbn06IFZhbGlkYXRpb25MZW5ndGgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG5cbiAgcmVzcG9uc2UudmFsaWQgPSBnZXRGaWVsZExlbmd0aElzVmFsaWQoe1xuICAgIG1heGxlbmd0aCxcbiAgICBtaW5sZW5ndGgsXG4gICAgcmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuXG4gIGlmIChyZXNwb25zZS52YWxpZCkgcmV0dXJuIHJlc3BvbnNlO1xuXG4gIHJlc3BvbnNlLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VEZWZhdWx0O1xuXG4gIGlmIChtYXhsZW5ndGggJiYgbWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7bWlubGVuZ3RofSBhbmQgJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBtb3JlIHRoYW4gJHttYXhsZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBubyBsZXNzIHRoYW4gJHttaW5sZW5ndGh9IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLmA7XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0U2VsZWN0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGREZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvcHMgZXh0ZW5kcyBTZWxlY3RGaWVsZCB7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgfVxuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTFNlbGVjdEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcmVxdWlyZWQgPSByZWYocHJvcHMucmVxdWlyZWQpO1xuICBjb25zdCB2YWx1ZSA9IHJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcikpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIGlucHV0Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBwcm9wcy5vcHRncm91cHNcIj5cbiAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICA6bGFiZWw9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VsZWN0IHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBnZXRUZXh0SW5wdXRNb2RlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybXMnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgaW5wdXRtb2RlPzogSW5wdXRNb2RlO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzaG91bGRTaG93Q2xlYXJCdXR0b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiBtb2RlbFZhbHVlLnZhbHVlICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFxuICApO1xuICBjb25zdCBzaG91bGRTaG93UGFzc3dvcmRCdXR0b24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICBtb2RlbFZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSBpbnB1dEVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgW21vZGVsVmFsdWUsICgpID0+IHByb3BzLnRyYW5zZm9ybVZhbHVlXSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIXByb3BzLnRyYW5zZm9ybVZhbHVlKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGRpZ2l0cyA9IG1vZGVsVmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcbiAgICAgIG1vZGVsVmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBzaG91bGRTaG93Q2xlYXJCdXR0b24gPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOmlucHV0bW9kZT1cImlucHV0TW9kZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0RWxlbWVudFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwic2hvdWxkU2hvd0NsZWFyQnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwic2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0VGV4dC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdXBkYXRlVmFsdWUsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtbGFiZWwnLFxuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHRleHRhcmVhRWxlbWVudCA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGV4dGFyZWFFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0ZXh0YXJlYUVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIHNob3dFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5QQURESU5HLlguT05FLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cInRleHRhcmVhRWxlbWVudFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHRhcmVhLnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBoYXNFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBnZW5lcmljIG1lbnUgaXRlbSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIG5hdmlnYXRpb24gbWVudXMgb3IgZHJvcGRvd25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlbWVudWl0ZW0tLWRvY3MpIGZvciBUaWRlTWVudUl0ZW1cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHJlbmRlciB0aGUgcm9vdCBlbGVtZW50IGFzLiAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFRoZSBocmVmIGF0dHJpYnV0ZSB0byBhcHBseSB3aGVuIHRoZSBlbGVtZW50IGlzIGEgbGluay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiBsaW5rIGluIGEgbmV3IHRhYi4gKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogSWNvbiB0byBzaG93IGFmdGVyIHRoZSBsYWJlbC4gKi9cbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuXG4gICAgLyoqIFRoZSBsYWJlbCB0byBiZSBkaXNwbGF5ZWQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbWVudS1pdGVtJyxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5aRVJPLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLlVOREVSTElORS5SRVNULk9GRixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOnRhcmdldD1cImlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJlbGVtZW50XCJcbiAgPlxuICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgIDppY29uPVwiaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICB2LWlmPVwiaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1lbnUtaXRlbSB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICB9XG5cbiAgLnRpZGUtbWVudS1pdGVtOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cbjwvc3R5bGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBCUkVBS1BPSU5UID0ge1xuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBNRURJQSA9IHtcbiAgU006IDc2OCxcbiAgTUQ6IDk5MixcbiAgTEc6IDEyMzIsXG4gIFhMOiAxOTIwLFxufTtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuZXhwb3J0IHR5cGUgTWVkaWEgPSAodHlwZW9mIE1FRElBKVtrZXlvZiB0eXBlb2YgTUVESUFdO1xuIiwiaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIERpcmVjdGx5IG1vZGlmaWVzIHRoZSBgPGJvZHk+YCBlbGVtZW50IHRvIGFwcGx5IG9yIHJlbW92ZSBzY3JvbGwgbG9jay5cbiAqIFdoZW4gYGZhbHNlYCBpcyBwcm92aWRlZCwgaXQgb25seSB1bmxvY2tzIHNjcm9sbCBpZiB0aGVyZSBhcmUgbm8gb3BlblxuICogSFRNTCBkaWFsb2cgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTY3JvbGxMb2NrID0gYXN5bmMgKGlzTG9ja2VkOiBib29sZWFuKSA9PiB7XG4gIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gIC8vIGNvbnN0IEJPRFlfTE9DS19DTEFTUyA9ICdib2R5LXNjcm9sbC1sb2NrJztcblxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnaW5zZXQnLCAnMCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGBjYWxjKDBweCAtIHZhcigtLXNhdmVkLXNjcm9sbC15LCAwcHgpKWApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdzY3JvbGwnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZ1tvcGVuXScpKSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFkgPSBwYXJzZUludChib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgfHwgJzAnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0xPQ0tfQ0xBU1MpO1xuXG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdpbnNldCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luVG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvd1knKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGUtdG9wLWxheWVyJztcblxuZXhwb3J0IGNvbnN0IGluaXRGYXV4VG9wTGF5ZXIgPSAoKSA9PiB7XG4gIGxldCB0b3BMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRPUF9MQVlFUl9JRCk7XG4gIGlmICghdG9wTGF5ZXIpIHtcbiAgICB0b3BMYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRvcExheWVyLmlkID0gVE9QX0xBWUVSX0lEO1xuICAgIHRvcExheWVyLnNldEF0dHJpYnV0ZSgnZGF0YS1jc3Mtc2NvcGUnLCAnJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQlJFQUtQT0lOVCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKipcbiAgICAgKiBDYWxsZWQgYmVmb3JlIHRoZSBtb2RhbCBjbG9zZXMuXG4gICAgICpcbiAgICAgKiBSZXR1cm4gYGZhbHNlYCB0byBjYW5jZWwgdGhlIGNsb3NlIGV2ZW50LlxuICAgICAqL1xuICAgIGJlZm9yZUNsb3NlPzogKCkgPT4gdm9pZCB8IGJvb2xlYW4gfCBQcm9taXNlPHZvaWQgfCBib29sZWFuPjtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYmVmb3JlQ2xvc2U6IHVuZGVmaW5lZCxcbiAgICBpc0JhY2tCdXR0b246IGZhbHNlLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RhbENvbnRlbnQ6IFJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcbiAgY29uc3QgbW9kYWxEaWFsb2c6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcblxuICBjb25zdCBpc09wZW4gPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAocHJvcHMuYmVmb3JlQ2xvc2UpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3BzLmJlZm9yZUNsb3NlKCk7XG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgY2xvc2UoKTtcbiAgfTtcblxuICB3YXRjaChpc09wZW4sICgpID0+IHtcbiAgICBpZiAoIW1vZGFsRGlhbG9nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gICAgc2V0U2Nyb2xsTG9jayhpc09wZW4udmFsdWUpO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+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/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgYW5jaG9yLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuYW5jaG9ySWQpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGlzVG9nZ2xlZE9wZW4udmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290KCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmFuY2hvcklkLFxuICAgICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gICAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgICB9XG4gICk7XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIG1pZGRsZXdhcmUudmFsdWUgPSBbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV07XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgcm9vdC52YWx1ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxUcmFuc2l0aW9uPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcG9wb3ZlcicsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJmbG9hdGluZ1wiXG4gICAgICAgIDpzdHlsZT1cInsgLi4uZmxvYXRpbmdTdHlsZXMgfVwiXG4gICAgICAgIHYtc2hvdz1cImlzU2hvd1BvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcG9wb3ZlciB7XG4gICAgbWF4LXdpZHRoOiAyNTZweDtcbiAgfVxuICAudi1lbnRlci1mcm9tLFxuICAudi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAudi1lbnRlci1hY3RpdmUsXG4gIC52LWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG1heFJhdGluZz86IG51bWJlcjtcbiAgICBzaG93UmF0aW5nPzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgbWF4UmF0aW5nOiAxMCxcbiAgICBzaG93UmF0aW5nOiBmYWxzZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCByYXRpbmdWYWx1ZSA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBzZWdtZW50cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHByb3BzLm1heFJhdGluZyB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKHNlZ21lbnQ6IG51bWJlcikgPT4ge1xuICAgIHJhdGluZ1ZhbHVlLnZhbHVlID0gc2VnbWVudDtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLXJhdGluZycsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEZdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJdXCI+XG4gICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5zaG93UmF0aW5nXCJcbiAgICAgID5cbiAgICAgICAge3sgcmF0aW5nVmFsdWUgfX0ve3sgcHJvcHMubWF4UmF0aW5nIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMiwgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLkVMTElQU0lTXVwiXG4gICAgICB2LWlmPVwicHJvcHMuZGVzY3JpcHRpb25cIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmRlc2NyaXB0aW9uIH19XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gOmNsYXNzPVwiWyd0aWRlLXJhdGluZy1iYXInLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLlFVQVJURVIsIENTUy5GTEVYLkdST1cuT04sIENTUy5GTEVYLlNIUklOSy5PTl1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXJhdGluZy1zZWdtZW50JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICAgICAgICAgIENTUy5GTEVYLkJBU0lTLlpFUk8sXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlpFUk8sXG4gICAgICAgICAgc2VnbWVudCA9PT0gMSAmJiBbJ3RpZGUtcmF0aW5nLXNlZ21lbnQtZmlyc3QnXSxcbiAgICAgICAgICBzZWdtZW50ID09PSBzZWdtZW50cy5sZW5ndGggJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWxhc3QnXSxcbiAgICAgICAgICBzZWdtZW50IDw9IHJhdGluZ1ZhbHVlICYmIFtDU1MuQkcuU1VSRkFDRS5HUkFESUVOVF0sXG4gICAgICAgIF1cIlxuICAgICAgICA6a2V5PVwic2VnbWVudFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHNlZ21lbnQpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwic2VnbWVudCBpbiBzZWdtZW50c1wiXG4gICAgICAvPlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1yYXRpbmctYmFyIHtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudCB7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDg4JSAxMDAlLCAwIDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQtZmlyc3Qge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDk5OTlweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWxhc3Qge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDk5OTlweDtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTIlIDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBMaW5rIH0gZnJvbSAnQC90eXBlcy9MaW5rJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gICAgbGlua3M6IExpbmtbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1zZW8tbGlua3NcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zZW8tbGluaycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCJcbiAgICAgICAgOmtleT1cImxpbmsubGFiZWxcIlxuICAgICAgICB2LWZvcj1cImxpbmsgaW4gcHJvcHMubGlua3NcIlxuICAgICAgPlxuICAgICAgICA8SW50ZXJuYWxCYXNlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXVwiXG4gICAgICAgICAgOmhyZWY9XCJsaW5rLnVybFwiXG4gICAgICAgICAgOnRhcmdldD1cImxpbmsuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgIDwvSW50ZXJuYWxCYXNlTGluaz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogVE9ETzogUmVmYWN0b3IgdG8gYWNjZXB0IGJyZWFrcG9pbnQgcHJvcCBpbiBvcmRlciB0byBhY2NvbXBsaXNoIHRoaXMgd2l0aCBuZWl0aGVyIGN1c3RvbSBicmVha3BvaW50cyBub3IgZGVwZW5kZW5jeSBvbiBWaWV3cG9ydFN0b3JlLiAqL1xuICAudGlkZS1zZW8tbGluayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgfTtcblxuICB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBpc0JhY2tCdXR0b246IGZhbHNlLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBkaWFsb2dFbGVtZW50OiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcblxuICBjb25zdCBpc09wZW4gPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIGRpYWxvZ0VsZW1lbnQudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICAgIHNldFNjcm9sbExvY2soaXNPcGVuLnZhbHVlKTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2hlZXQnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwiZGlhbG9nRWxlbWVudFwiXG4gICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgICAgQGNsb3NlLnByZXZlbnRcbiAgICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXNoZWV0LWJvZHknLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJjbG9zZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPFRpZGVEaXZpZGVyIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXNoZWV0LWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc2hlZXQge1xuICAgIC0tc2hlZXQtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMSk7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBqdXN0aWZ5LWl0ZW1zOiByaWdodDtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtYm9keSB7XG4gICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDB2dyAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSksIDMxMXB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tc2hlZXQtcGFkZGluZy14KSB2YXIoLS10aWRlLXNhZmUtZnIpIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlQ2Fyb3VzZWwgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUnO1xuICBpbXBvcnQgVGlkZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICB0YWJzOiBUYWJbXTtcbiAgfTtcblxuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50VGFiID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjdXJyZW50VGFiLnZhbHVlID0gaW5kZXg7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS10YWJzJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkJPUkRFUi5CT1RUT00uVFdPLCBDU1MuQk9SREVSLkNPTE9SLkxPV11cIj5cbiAgICA8VGlkZUNhcm91c2VsIDppcy1mbG9hdGluZz1cInRydWVcIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5CUkFORCA6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZWxlbWVudD1cIkVMRU1FTlQuQlVUVE9OXCJcbiAgICAgICAgICA6bGFiZWw9XCJ0YWIubGFiZWxcIlxuICAgICAgICAgIDpzdWJ0bGU9XCJ0cnVlXCJcbiAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhpbmRleClcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IDpjbGFzcz1cIlsncm91bmRlZC1ib3JkZXInLCBpbmRleCA9PT0gY3VycmVudFRhYiAmJiAnYWN0aXZlJ11cIiAvPlxuICAgICAgPC9saT5cbiAgICA8L1RpZGVDYXJvdXNlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAucm91bmRlZC1ib3JkZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXRpZGUtcmFkaXVzLWZ1bGwpIHZhcigtLXRpZGUtcmFkaXVzLWZ1bGwpIDAgMDtcbiAgICBib3JkZXItdG9wLXdpZHRoOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlLWJyYW5kKTtcbiAgfVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJtb2QiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiX2NyZWF0ZUJsb2NrIiwiX3Jlc29sdmVEeW5hbWljQ29tcG9uZW50IiwiSUNPTiIsIklDT05fUkVBTE0iLCJpc0V4cGFuZGVkIiwiX3VzZU1vZGVsIiwiaGFuZGxlVG9nZ2xlQ2xpY2siLCJUaWRlRGl2aWRlciIsIl90b0Rpc3BsYXlTdHJpbmciLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJBTEVSVCIsImVtaXQiLCJfX2VtaXQiLCJzbG90cyIsInVzZVNsb3RzIiwiaGFzQm9keSIsIm5vZGVzIiwiX2EiLCJub2RlIiwiQ29tbWVudCIsImljb25UeXBlIiwiVGlkZUxpbmsiLCJUaWRlQnV0dG9uSWNvbiIsIkJBREdFX0NPTE9SIiwiQkFER0VfQ09MT1JfREVUQUlMUyIsIkJBREdFX1RSVVNURUQiLCJfRnJhZ21lbnQiLCJjcnVtYiIsImluZGV4IiwiX2NyZWF0ZVRleHRWTm9kZSIsIl9ob2lzdGVkXzIiLCJjdXJyZW50SW5kZXgiLCJoYW5kbGVDbGljayIsIl9yZW5kZXJMaXN0IiwidGFiIiwiJGV2ZW50IiwiVFlQRV9DQVJEIiwiZG90R2FwIiwiZG90V2lkdGgiLCJjYXJvdXNlbFJlZiIsImNvbnRhaW5lclJlZiIsImNvbnRlbnRXaWR0aCIsImN1cnJlbnRQYWdlSW5kZXgiLCJkb3RzUmVmIiwiZnJhbWVXaWR0aCIsImlzRmlyc3RTbGlkZSIsImlzTGFzdFNsaWRlIiwic2hvd0J1dHRvbnMiLCJzbGlkZU9ic2VydmVyIiwic2xpZGVzIiwic2xpZGVzSW5WaWV3Iiwic2xvdE9ic2VydmVyIiwidG91Y2hTdGFydCIsInNsaWRlc0luVmlld0NvdW50IiwiY3VycmVudFBhZ2UiLCJkb3RDb250YWluZXJXaWR0aCIsImRvdENvdW50VmlzaWJsZSIsInRvdGFsUGFnZXMiLCJxdW90aWVudCIsInNjcm9sbFRpbWVvdXQiLCJnZXREb3RDbGFzcyIsImRvdEluZGV4IiwiY2xhc3NOYW1lIiwiZ2V0SXNFbGVtZW50V2l0aGluQ29udGFpbmVyIiwiZWxlbWVudCIsImNvbnRhaW5lciIsImNvbnRhaW5lclJlY3QiLCJjb250YWluZXJSaWdodCIsImVsZW1lbnRSZWN0IiwiaGFuZGxlVG91Y2hFbmQiLCJldmVudCIsInRvdWNoRW5kIiwiZGVsdGFYIiwiZGVsdGFZIiwic2Nyb2xsQnlEZWx0YSIsImhhbmRsZVRvdWNoU3RhcnQiLCJoYW5kbGVXaGVlbCIsImlzU2hpZnRLZXlEb3duIiwiaXNXaGVlbCIsIm9mZnNldCIsInNjcm9sbFRvT2Zmc2V0IiwibWVhc3VyZURvbSIsInNsaWRlIiwib2JzZXJ2ZVNsaWRlcyIsIm9wdGlvbnMiLCJlbnRyaWVzIiwic2xpZGVzQWRkZWRUb1ZpZXciLCJlbnRyeSIsInNsaWRlSW5kZXgiLCJhIiwiYiIsImNoaWxkIiwib2JzZXJ2ZVNsb3QiLCJvYnNlcnZlckNhbGxiYWNrIiwiZGVsdGEiLCJzaG93UHJldmlvdXNQYWdlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJzaG93TmV4dFBhZ2UiLCJzaG93TmV4dFNsaWRlIiwidGFyZ2V0IiwiaXNTY3JvbGxpbmdMZWZ0IiwidXBkYXRlRG90cyIsIm5leHRTbGlkZSIsInByZXZpb3VzU2xpZGUiLCJjZW50ZXJEb3QiLCJvbk1vdW50ZWQiLCJvblVubW91bnRlZCIsIl9iIiwiX2NhY2hlIiwiX25vcm1hbGl6ZVN0eWxlIiwiXyIsImlzQWN0aXZlIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwiaW1hZ2VEZWZhdWx0IiwicGljdHVyZSIsImltZyIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwicGljdHVyZVNvdXJjZSIsInNvdXJjZSIsIlRpZGVJbWFnZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJWQUxJREFUSU9OX1JFU1VMVCIsImNoZWNrRm9ybWF0IiwiZm9ybWF0IiwibWVzc2FnZSIsInZhbHVlIiwicmVzdWx0IiwiZ2V0RmllbGRMZW5ndGhJc1ZhbGlkIiwibWF4bGVuZ3RoIiwibWlubGVuZ3RoIiwicmVxdWlyZWQiLCJpc0VtcHR5QW5kVW5yZXF1aXJlZCIsImlzVG9vTG9uZyIsImdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCIsImVycm9yRnJvbVByb3BzIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RoVmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJtb2RlbFZhbHVlIiwiZm9ybUNvbnRleHQiLCJpc1ZhbGlkYXRpbmciLCJlcnJvclJlZiIsImZvcm1hdHRlZExhYmVsIiwiaXNDaGVja2VkIiwic2hvd0Vycm9yIiwiaGFzRXJyb3JGcm9tUHJvcCIsInN1cHBvcnRpbmdUZXh0TWVzc2FnZSIsImdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCIsIndhdGNoRWZmZWN0IiwibmV3VmFsdWUiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsIl9fZGVmYXVsdF9fIiwiY2hlY2tlZCIsIm9sZFZhbHVlIiwiRk9STUFUIiwiRk9STUFUX1JFR0VYIiwiVkFMSURBVE9SIiwiRVJST1JfRElTUExBWSIsImhhc0ZvY3VzIiwiaW5wdXRJZCIsInVzZUlkIiwic2VsZWN0RWxlbWVudCIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIm9wdGdyb3VwIiwib3B0aW9uIiwiX2hvaXN0ZWRfNiIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsImVycm9yTWVzc2FnZSIsImhhc0Vycm9yIiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJJTlBVVF9NT0RFIiwiZ2V0VGV4dElucHV0TW9kZSIsInR5cGUiLCJpbnB1dG1vZGUiLCJpbnB1dEVsZW1lbnQiLCJzaG93UGFzc3dvcmQiLCJpbnB1dE1vZGVBdHRyaWJ1dGUiLCJpbnB1dFR5cGUiLCJzaG91bGRTaG93Q2xlYXJCdXR0b24iLCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b24iLCJoYW5kbGVDbGVhciIsImhhbmRsZUZpZWxkQ2xpY2siLCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biIsImhhc0NsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJ0ZXh0YXJlYUVsZW1lbnQiLCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsImlzT3BlbiIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiY2xvc2UiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiaGFuZGxlRXNjYXBlS2V5ZG93biIsIm9uQmVmb3JlTW91bnQiLCJfVGVsZXBvcnQiLCIkc2xvdHMiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwiaGFuZGxlUHJldmlvdXNDbGljayIsImhhbmRsZU5leHRDbGljayIsInBhZ2luYXRpb25CdXR0b24iLCJUaWRlQnV0dG9uUGFnaW5hdGlvbiIsInNpZGVzIiwiYWxpZ25tZW50cyIsInBsYWNlbWVudHMiLCJhY2MiLCJzaWRlIiwibWluIiwibWF4Iiwicm91bmQiLCJmbG9vciIsImNyZWF0ZUNvb3JkcyIsInYiLCJvcHBvc2l0ZVNpZGVNYXAiLCJvcHBvc2l0ZUFsaWdubWVudE1hcCIsImNsYW1wIiwic3RhcnQiLCJlbmQiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZSIsInBsYWNlbWVudCIsImdldEFsaWdubWVudCIsImdldE9wcG9zaXRlQXhpcyIsImF4aXMiLCJnZXRBeGlzTGVuZ3RoIiwiZ2V0U2lkZUF4aXMiLCJnZXRBbGlnbm1lbnRBeGlzIiwiZ2V0QWxpZ25tZW50U2lkZXMiLCJyZWN0cyIsInJ0bCIsImFsaWdubWVudCIsImFsaWdubWVudEF4aXMiLCJsZW5ndGgiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQiLCJleHBhbmRQYWRkaW5nT2JqZWN0IiwicGFkZGluZyIsImdldFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsInNpZGVBeGlzIiwiYWxpZ25MZW5ndGgiLCJpc1ZlcnRpY2FsIiwiY29tbW9uWCIsImNvbW1vblkiLCJjb21tb25BbGlnbiIsImNvb3JkcyIsImNvbXB1dGVQb3NpdGlvbiIsInN0cmF0ZWd5IiwibWlkZGxld2FyZSIsInBsYXRmb3JtIiwidmFsaWRNaWRkbGV3YXJlIiwic3RhdGVmdWxQbGFjZW1lbnQiLCJtaWRkbGV3YXJlRGF0YSIsInJlc2V0Q291bnQiLCJpIiwiZm4iLCJuZXh0WCIsIm5leHRZIiwiZGF0YSIsInJlc2V0IiwiZGV0ZWN0T3ZlcmZsb3ciLCJzdGF0ZSIsIl9hd2FpdCRwbGF0Zm9ybSRpc0VsZSIsImVsZW1lbnRzIiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0b1ZhbHVlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJfVHJhbnNpdGlvbiIsInJhdGluZ1ZhbHVlIiwic2VnbWVudHMiLCJzZWdtZW50IiwibGluayIsImRpYWxvZ0VsZW1lbnQiLCJjdXJyZW50VGFiIiwiVGlkZUNhcm91c2VsIl0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixRQUFTLG9CQUNULEtBQU0saUJBQ04sTUFBTyxpQkFBQSxFQUVULEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQUEsQ0FDVixFQUVGLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQUEsRUFFVCxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxtQkFDUCxRQUFTLG9CQUFBLEVBRVgsR0FBSSxDQUNGLE9BQVEsQ0FDTixRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUyx5QkFBQSxFQUVYLFFBQVMsQ0FDUCxNQUFPLHdCQUNQLEtBQU0sdUJBQ04sUUFBUywwQkFDVCxRQUFTLDBCQUVULEtBQU0sdUJBQ04sTUFBTyx3QkFDUCxLQUFNLHVCQUNOLE9BQVEseUJBQ1IsT0FBUSx5QkFDUixJQUFLLHNCQUNMLE9BQVEseUJBQ1IsS0FBTSx1QkFDTixP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QSxFQUFNLFFBQW1CLENBQUFwRCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQU8sTUFBdUJJLEVBQU0sU0FBV0EsRUFBTSxPQUFTTyxFQUFBQSxNQUFBb0QsQ0FBQSxFQUFNLFFBQW1CLENBQUFwRCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQU8sS0FBc0JJLEVBQU0sUUFBTyxDQUFJTyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxVQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFVBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sRUFBSVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxHQUFBLEtBNkJsd0JJLEVBQU0sbURBWGZHLEVBQUFBLG1CQWlCTSxNQUFBLE9BaEJILE1BQUtHLEVBQUFBLGVBQUEsbUJBQXVDQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLFFBQWlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxRQUFpQkksRUFBTSxPQUFTTyxRQUFBb0QsQ0FBQSxFQUFNLE9BQVNwRCxRQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsTUFBZUksRUFBTSxPQUFTTyxRQUFBb0QsQ0FBQSxFQUFNLE1BQVFwRCxRQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsS0FBY0ksRUFBTSxPQUFTTyxRQUFBb0QsQ0FBQSxFQUFNLFNBQVdwRCxRQUFBWCxDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVEsUUFBaUJJLEVBQU0sT0FBU08sUUFBQW9ELENBQUEsRUFBTSxTQUFXcEQsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLE9BQUEsS0FZeFowQyxFQUFBQSxZQUdFQyxFQUFBLENBRkMsS0FBTThCLEVBQUEsTUFDTixLQUFNOUQsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsK0JBSWhCSixFQUFBQSxtQkFrQk0sTUFBQSxDQWpCSCxNQUFLQyxFQUFBQSxlQUFBLHNCQUEwQ0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsSUFBY29FLEVBQUEsTUFBbUQsR0FBNUMsQ0FBSXpELEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSSxDQUFBLEtBUXhMUyxFQUFBQSxtQkFBd0UsT0FBQSxDQUFqRSx1QkFBT0UsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQSxFQUFLeUMsa0JBQUFyQyxFQUFNLE9BQU8sRUFBQSxDQUFBLEVBT3REQSxFQUFNLFVBQVEsQ0FBS2dFLEVBQUEscUJBTDNCbkMsRUFBQUEsWUFNRXlDLEdBQUEsT0FMQyx3QkFBUS9ELFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBLEVBQzVCLFFBQVNXLEVBQUFBLE1BQUFtQyxDQUFBLEVBQVEsT0FDakIsTUFBTzFDLEVBQU0sU0FDYix1QkFBTzRELEVBQUksVUFBQSxFQUFBLHVFQVdSM0QsRUFBQSw2QkFOUjRCLEVBQUFBLFlBT0UwQyxFQUFBLE9BTkMsTUFBS2pFLEVBQUFBLGVBQUEsQ0FBQSxtQkFBdUJDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsRUFDNUUsS0FBTVcsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLHVCQUFPTyxFQUFJLE9BQUEsR0FDWixhQUFXLGFBQUEsbUVBSWJ2RCxFQUFBQSxtQkFlTSxNQUFBLENBZkEsTUFBS0MsRUFBQUEsZUFBQSxDQUFBLGtCQUFzQkMsRUFBQUEsU0FBSSxLQUFLLEtBQUssT0FBTSxDQUFHUCxFQUFNLFNBQVdPLEVBQUFBLFNBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsR0FDckdpQyxFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLEVBSUF6QyxFQUFNLFVBQVlnRSxFQUFBLHFCQUYxQjdELEVBQUFBLG1CQVdNLE1BQUEsT0FWSCx3QkFBUUksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sSUFBSSxJQUFJLENBQUEsQ0FBQSxHQVFwQkksRUFBTSx3QkFMZDZCLEVBQUFBLFlBTUV5QyxHQUFBLE9BTEMsd0JBQVEvRCxRQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQSxFQUM1QixRQUFTVyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLE9BQ2pCLE1BQU8xQyxFQUFNLFNBQ2IsdUJBQU80RCxFQUFJLFVBQUEsRUFBQSwySkNwSVRZLEVBQWMsQ0FDekIsTUFBTyxRQUNQLEtBQU0sT0FDTixNQUFPLFFBQ1AsS0FBTSxPQUNOLE9BQVEsU0FDUixPQUFRLFNBQ1IsSUFBSyxNQUNMLE9BQVEsU0FDUixLQUFNLE9BQ04sT0FBUSxRQUNWLEVBRWFDLEdBTVQsQ0FDRixDQUFDRCxFQUFZLEtBQUssRUFBRyxDQUNuQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sS0FDOUIsVUFBV0EsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFBLEVBRXBDLENBQUM0RSxFQUFZLElBQUksRUFBRyxDQUNsQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sT0FBTyxLQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsSUFBQSxFQUUzQyxDQUFDNEUsRUFBWSxLQUFLLEVBQUcsQ0FDbkIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLE9BQU8sTUFDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLEtBQUEsRUFFM0MsQ0FBQzRFLEVBQVksSUFBSSxFQUFHLENBQ2xCLFlBQWE1RSxFQUFJLE9BQU8sTUFBTSxPQUFPLEtBQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxJQUFBLEVBRTNDLENBQUM0RSxFQUFZLE1BQU0sRUFBRyxDQUNwQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sT0FBTyxPQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsTUFBQSxFQUUzQyxDQUFDNEUsRUFBWSxNQUFNLEVBQUcsQ0FDcEIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLE1BQUEsRUFFM0MsQ0FBQzRFLEVBQVksR0FBRyxFQUFHLENBQ2pCLFlBQWE1RSxFQUFJLE9BQU8sTUFBTSxPQUFPLElBQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxHQUFBLEVBRTNDLENBQUM0RSxFQUFZLE1BQU0sRUFBRyxDQUNwQixZQUFhNUUsRUFBSSxPQUFPLE1BQU0sT0FBTyxPQUNyQyxVQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVEsTUFBQSxFQUUzQyxDQUFDNEUsRUFBWSxJQUFJLEVBQUcsQ0FDbEIsWUFBYTVFLEVBQUksT0FBTyxNQUFNLE9BQU8sS0FDckMsVUFBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLElBQUEsRUFFM0MsQ0FBQzRFLEVBQVksTUFBTSxFQUFHLENBQ3BCLFlBQWE1RSxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQ3JDLFVBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUSxNQUFBLENBRTdDLEVBRWE4RSxHQUFnQixDQUMzQixTQUFVLEtBQ1YsU0FBVSxLQUNWLFNBQVUsS0FDVixTQUFVLEtBQ1YsU0FBVSxLQUNWLFNBQVUsS0FDVixRQUFTLEdBQ1gsOEpDekRFLE1BQU0xRSxFQUFRQyw4QkFRZEUsRUFBQUEsbUJBdUJNLE1BQUEsQ0F0QkgsTUFBS0csRUFBQUEsZUFBQSxjQUE4Qk4sRUFBTSxZQUFjQSxFQUFNLE1BQUssQ0FBSU8sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxTQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLEVBQUEsQ0FBS1csUUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLEVBQVNXLFFBQUFYLENBQUEsRUFBSSxRQUFRLFlBQW1CVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFZSSxFQUFNLE9BQUssQ0FBS08sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFLVyxFQUFBQSxNQUFBa0UsRUFBQSxFQUFvQnpFLEVBQU0sS0FBSyxFQUFFLFdBQVcsRUFBU08sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQWVXLFFBQUFYLENBQUEsRUFBSSxnQkFBZ0IsR0FBQSxLQWtCbGRJLEVBQU0sMkJBSGQ2QixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsd0JBQVFoQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLElBQUtJLEVBQU0sT0FBU08sRUFBQUEsTUFBQWtFLEVBQUEsRUFBb0J6RSxFQUFNLEtBQUssRUFBRSxTQUFTLENBQUEsRUFDdEYsS0FBTUEsRUFBTSxXQUFBLHdEQUlmSyxFQUFBQSxtQkFBc0QsT0FBQSxDQUEvQyxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLENBQUEsQ0FBQSxFQUFNeUMsa0JBQUFyQyxFQUFNLEtBQUssRUFBQSxDQUFBLENBQUEsNEdDakM5QyxNQUFNQSxFQUFRQyw4QkFNZEUsRUFBQUEsbUJBb0JNLE1BQUEsQ0FuQkgsTUFBS0csRUFBQUEsZUFBQSw4QkFBOENDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxNQUFhVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxZQUFtQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQWVXLFFBQUFYLENBQUEsRUFBSSxnQkFBZ0IsR0FBQSxLQVczTzBDLEVBQUFBLFlBR0VDLEVBQUEsQ0FGQyx3QkFBUWhDLFFBQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBLEVBQzNCLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssVUFBQSwyQkFHZDFCLEVBQUFBLG1CQUVNLE1BQUEsQ0FGQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLENBQUEsQ0FBQSxHQUN4QlMsRUFBQUEsbUJBQW1ELE9BQUEsS0FBQWdDLEVBQUFBLGdCQUExQ3JDLEVBQU0sS0FBSyxFQUFHLHdCQUFxQixDQUFBLENBQUEsMEdDN0JoREcsRUFBQUEsbUJBc0JNLE1BQUEsQ0FyQkgsTUFBS0csRUFBQUEsZUFBQSwrQkFBK0NDLFFBQUFYLENBQUEsRUFBSSxHQUFHLFVBQWlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sVUFBaUJXLFFBQUFYLENBQUEsRUFBSSxRQUFRLFlBQW1CVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxnQkFBZ0IsR0FBQSxLQWV4VjBDLEVBQUFBLFlBR0VDLEVBQUEsQ0FGQyx3QkFBUWhDLFFBQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBLEVBQzNCLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssUUFBQSwyQkFHZDFCLEVBQUFBLG1CQUFxRCxPQUFBLENBQTlDLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsQ0FBQSxDQUFBLEVBQUcsbUJBQWdCLENBQUEsQ0FBQSw4S0NmaEQsTUFBTUksRUFBUUMsOEJBTWRFLEVBQUFBLG1CQStCSyxLQUFBLENBL0JBLE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxvQkFBd0JDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksYUFBYSxHQUFHLENBQUEsQ0FBQSxJQUN6R00sRUFBQUEsVUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQTZCV3dFLDZCQTNCZ0IzRSxFQUFNLFlBQVcsQ0FBbEM0RSxFQUFPQyxvREFEVCxJQUFBRCxFQUFNLEtBQUEsR0FHWnZFLEVBQUFBLG1CQWlCSyxLQUFBLENBakJBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQSxDQUFBLEdBS3ZCZ0YsRUFBTSxtQkFKZC9DLEVBQUFBLFlBT21CNkIsR0FBQSxPQU5oQix3QkFBUW5ELEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxFQUM1RCxhQUFZZ0YsRUFBTSxXQUFhLE9BQy9CLEtBQU1BLEVBQU0sR0FBQSxxQkFHYixJQUFpQixDQUFkRSxFQUFBQSxnQkFBQXpDLEVBQUFBLGdCQUFBdUMsRUFBTSxLQUFLLEVBQUEsQ0FBQSxDQUFBLDREQUdoQnpFLEVBQUFBLG1CQU1PLE9BQUEsT0FMSix3QkFBUUksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLEVBQzdELGFBQVlnRixFQUFNLFdBQWEsTUFBQSxFQUc3QnZDLEVBQUFBLGdCQUFBdUMsRUFBTSxLQUFLLEVBQUEsR0FBQXhFLEVBQUEsRUFBQSxLQUlSSixFQUFNLGFBQWU2RSxFQUFRN0UsRUFBTSxZQUFZLE9BQU0saUJBQS9ERyxxQkFLSyxLQUFBNEUsR0FBQSxDQUpIekMsRUFBQUEsWUFHRUMsRUFBQSxDQUZDLEtBQU1oQyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFlBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLDZaQ2hCcEIsTUFBTVQsRUFBUUMsRUFhUnNELEVBQWdCQyxFQUFBQSxTQUE2QixJQUNqRHhELEVBQU0sVUFBWTBDLEVBQVEsT0FBUzFDLEVBQU0sTUFBUTBDLEVBQVEsT0FBUyxNQUFBLEVBRzlEZSxFQUFjRCxXQUFTLElBQU94RCxFQUFNLFVBQVkwQyxFQUFRLEtBQU9nQixHQUFtQjFELEVBQU0sT0FBUSxnQkFJdEdFLEVBQUFBLFlBQUEyQixFQUFBQSxZQWlDWUMsRUFBQUEsd0JBZkwyQixFQUFBLEtBQVcsRUFBQSxDQWpCZixNQUFLbkQsRUFBQUEsZUFBQSxlQUErQk4sRUFBTSxVQUFRLGVBQW1CQSxFQUFNLFFBQVEsR0FBVUEsRUFBTSxVQUFZTyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLEtBQUksQ0FBSW5DLFFBQUFYLENBQUEsRUFBSSxRQUFRLFdBQVcsRUFBQSxDQUFLVyxFQUFBQSxTQUFJLFFBQVEsSUFBSSxFQUFTUCxFQUFNLFVBQVlPLFFBQUFtQyxDQUFBLEVBQVEsS0FBT25DLFFBQUFYLENBQUEsRUFBSSxVQUFVLEtBQUssSUFBRyxHQUFhSyxFQUFBLE9BQVNNLFFBQUFHLEVBQUEsRUFBWSxNQUFpQixDQUFBSCxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFNBQVVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLE9BQU8sRUFBYSxDQUFBVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFNBQVVXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLElBQUksRUFBU1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxnQkFBQSxHQWFsakIsU0FBVUksRUFBTSxVQUFZTyxFQUFBQSxNQUFBbUMsQ0FBQSxFQUFRLFFBQVUxQyxFQUFNLFNBQ3BELEtBQU1BLEVBQU0sVUFBWU8sRUFBQUEsU0FBUSxNQUFRUCxFQUFNLEtBQU9BLEVBQU0sS0FBTyxPQUNsRSxPQUFRQSxFQUFNLFVBQVlPLEVBQUFBLE1BQUFtQyxDQUFBLEVBQVEsTUFBUTFDLEVBQU0sU0FBV08sRUFBQUEsTUFBQStDLENBQUEsRUFBTyxNQUFRL0MsRUFBQUEsTUFBQStDLENBQUEsRUFBTyxLQUNqRixLQUFNQyxFQUFBLEtBQUEscUJBR1AsSUFJRSxDQURNdkQsRUFBTSwyQkFIZDZCLEVBQUFBLFlBSUVVLEVBQUEsT0FIQyxLQUFNdkMsRUFBTSxZQUNaLEtBQU1DLEVBQUEsT0FBU00sRUFBQUEsTUFBQUcsRUFBQSxFQUFZLE1BQVFILEVBQUFBLE1BQUFFLENBQUEsRUFBSyxNQUFRRixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSx1REFFdERxRSxFQUFBQSxnQkFBQSxJQUVGekMsa0JBQUdyQyxFQUFNLEtBQUssRUFBRyxJQUVqQixDQUFBLEVBR1FBLEVBQU0sNEJBSGQ2QixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsS0FBTXZDLEVBQU0sYUFDWixLQUFNQyxFQUFBLE9BQVNNLEVBQUFBLE1BQUFHLEVBQUEsRUFBWSxNQUFRSCxFQUFBQSxNQUFBRSxDQUFBLEVBQUssTUFBUUYsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsaVNDakUxRCxNQUFNVCxFQUFRQyxFQU9Sd0QsRUFBY0QsV0FBUyxJQUFPeEQsRUFBTSxVQUFZMEMsRUFBUSxLQUFPZ0IsR0FBbUIxRCxFQUFNLE9BQVEsZ0JBSXRHRSxFQUFBQSxZQUFBMkIsRUFBQUEsWUFnQllDLEVBQUFBLHdCQUxMMkIsRUFBQSxLQUFXLEVBQUEsQ0FWZixNQUFLbkQsRUFBQUEsZUFBQSxvQkFBcUMsQ0FBQUMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsYUFBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFNVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLElBQUksRUFBU0ksRUFBTSxVQUFZTyxFQUFBQSxNQUFBb0MsQ0FBQSxFQUFjLEtBQUksQ0FBSXBDLFFBQUFYLENBQUEsRUFBSSxVQUFVLEtBQUssR0FBRyxFQUFBLEdBQWNJLEVBQU0sVUFBWU8sUUFBQW9DLENBQUEsRUFBYyxJQUFHLENBQUlwQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEVBQUEsR0FBZSxDQUFBVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQSxHQU90UyxTQUFVSSxFQUFNLFVBQVlPLEVBQUFBLE1BQUFvQyxDQUFBLEVBQWMsUUFBVTNDLEVBQU0sU0FDMUQsS0FBTUEsRUFBTSxVQUFZTyxFQUFBQSxTQUFjLE1BQVFQLEVBQU0sS0FBT0EsRUFBTSxLQUFPLE9BQ3hFLEtBQU1DLEVBQUEsVUFBWU0sUUFBQW9DLENBQUEsRUFBYyxPQUFTcEMsRUFBQUEsTUFBQW9DLENBQUEsRUFBYyxPQUFTLE1BQUEscUJBR2pFLElBRU8sQ0FGUHRDLEVBQUFBLG1CQUVPLE9BQUEsQ0FGQSxnQ0FBaUJFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLFNBQUksTUFBTSxNQUFNLENBQUEsQ0FBQSxFQUN2RThCLGtCQUFBckMsRUFBTSxLQUFLLEVBQUEsQ0FBQSxDQUFBLDZSQzlCbEIsTUFBTWdGLEVBQWU5QyxFQUFBQSx1QkFBc0MsRUFFckQrQyxFQUFlSixHQUFrQixDQUNyQ0csRUFBYSxNQUFRSCxDQUN2Qiw4QkFJQTFFLEVBQUFBLG1CQTRDTSxNQUFBLENBM0NILE1BQUtHLEVBQUFBLGVBQUEseUJBQXlDQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxJQUFXVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssT0FBQSxNQVdsT00sRUFBQUEsVUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQStCU3dFLFdBQUEsS0FBQU8sRUFBQUEsV0FaZ0JqRixFQUFBLEtBQUksQ0FBbkJrRixFQUFLTixtQkFuQmYxRSxFQUFBQSxtQkErQlMsU0FBQSxDQTlCTixNQUFLRyxFQUFBQSxlQUFBLDZCQUFpRHVFLElBQVVHLEVBQUEsT0FBMEJ6RSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQVNXLEVBQUFBLFNBQUksS0FBSyxNQUFNLFFBQVEsUUFBU0EsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxFQUEyQixDQUFBLFdBQUFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLEVBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEdBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssU0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLGdCQUFnQixJQUFhVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFBLEdBY3BjLGFBQVl1RixFQUFJLFdBQWEsT0FDN0IsSUFBS0EsRUFBSSxNQUNULFFBQUtDLEdBQUVILEVBQVlKLENBQUssRUFDekIsS0FBSyxRQUFBLEdBR0x4RSxFQUFBQSxtQkFFTyxPQUFBLENBRkEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssZ0JBQWdCLENBQUEsQ0FBQSxFQUN4Q3lDLGtCQUFBOEMsRUFBSSxLQUFLLEVBQUEsQ0FBQSxFQUtOQSxFQUFJLE9BQVNBLEVBQUksTUFBSyxpQkFGOUJoRixFQUFBQSxtQkFLTyxPQUFBLE9BSkosd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssZ0JBQWdCLENBQUEsQ0FBQSxFQUV4QyxLQUNFeUMsa0JBQUc4QyxFQUFJLEtBQUssRUFBRyxLQUNsQixDQUFBLGtHQzdET0UsR0FBWSxDQUN2QixXQUFZLFNBQ1osY0FBZSxnQkFDZixXQUFZLFFBQ2Qsc05DbUJFLE1BQU1yRixFQUFRQyxFQVFSd0QsRUFBY0QsRUFBQUEsU0FBaUQsSUFDbkV4RCxFQUFNLEtBQU8wRCxJQUFtQjFELEVBQU0sT0FBU3FGLEdBQVUsY0FBZ0IxQyxFQUFjLElBQW9CLGdCQUs3R3pDLEVBQUFBLFlBQUEyQixFQUFBQSxZQXNDWUMsRUFBQUEsd0JBckJMMkIsRUFBQSxLQUFXLEVBQUEsQ0FoQmYsTUFBS25ELEVBQUFBLGVBQUEsYUFBNkJDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssSUFBV1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sRUFBRSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQWNLLEVBQUEsT0FBU00sRUFBQUEsTUFBQThFLEVBQUEsRUFBVSxlQUFhLFlBQXVCcEYsRUFBQSxPQUFTTSxRQUFBOEUsRUFBQSxFQUFVLFlBQWNwRixFQUFBLFVBQVEsVUFBQSxHQWM5VyxLQUFNQSxFQUFBLEtBQ04sS0FBTXdELEVBQUEsUUFBZ0JsRCxRQUFBb0MsQ0FBQSxFQUFjLE9BQVNwQyxFQUFBQSxNQUFBb0MsQ0FBQSxFQUFjLE9BQVMsTUFBQSxxQkFHckUsSUFLRSxDQURNMUMsRUFBQSxvQkFKUjRCLEVBQUFBLFlBS0VVLEVBQUEsT0FKQyxNQUFLakMsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLElBQUtXLEVBQUFBLFNBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQSxFQUM5QyxLQUFNTixFQUFBLEtBQ04sS0FBTU0sRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsK0RBSWRKLEVBQUFBLG1CQVdNLE1BQUEsQ0FYQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE1BQU9XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBSSxDQUFBLENBQUEsR0FDdEZTLEVBQUFBLG1CQUVNLE1BQUEsQ0FGQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxpQkFBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsQ0FBQSxvQkFDdkVLLEVBQUEsT0FBTyxFQUFBLENBQUEsRUFLSkEsRUFBQSwyQkFGUkUsRUFBQUEsbUJBS00sTUFBQSxPQUpILHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsQ0FBQSxvQkFHM0RLLEVBQUEsV0FBVyxFQUFBLENBQUEsb0hDUGRxRixHQUFpQixFQUNqQkMsR0FBbUIsK1dBL0N6QixNQUFNdkYsRUFBUUMsRUFlUjJELEVBQU9DLEVBRVAyQixFQUFjcEUsRUFBQUEsSUFBMkIsSUFBSSxFQUM3Q3FFLEVBQWVyRSxFQUFBQSxJQUEyQixJQUFJLEVBQzlDc0UsRUFBZXRFLEVBQUFBLElBQVksQ0FBQyxFQUM1QnVFLEVBQW1CdkUsRUFBQUEsSUFBWSxDQUFDLEVBQ2hDd0UsRUFBVXhFLEVBQUFBLElBQTJCLElBQUksRUFDekN5RSxFQUFhekUsRUFBQUEsSUFBWSxDQUFDLEVBQzFCMEUsRUFBZTFFLEVBQUFBLElBQWEsRUFBSSxFQUNoQzJFLEVBQWMzRSxFQUFBQSxJQUFhLEVBQUssRUFDaEM0RSxFQUFjNUUsRUFBQUEsSUFBYSxFQUFJLEVBQy9CNkUsRUFBZ0I3RSxFQUFBQSxJQUFpQyxJQUFJLEVBQ3JEOEUsRUFBUzlFLEVBQUFBLElBQW1CLEVBQUUsRUFDOUIrRSxFQUFlL0UsRUFBQUEsSUFBYyxFQUFFLEVBQy9CZ0YsRUFBZWhGLEVBQUFBLElBQTZCLElBQUksRUFDaERpRixFQUFhakYsRUFBQUEsSUFBdUIsTUFBUyxFQUM3Q2tGLEVBQW9CbEYsRUFBQUEsSUFBWSxDQUFDLEVBRWpDbUYsRUFBYy9DLEVBQUFBLFNBQVMsSUFBTW1DLEVBQWlCLE1BQVEsQ0FBQyxFQUN2RGEsRUFBb0JoRCxFQUFBQSxTQUFTLElBQU1pRCxFQUFnQixNQUFRbEIsSUFBWWtCLEVBQWdCLE1BQVEsR0FBS25CLEVBQU0sRUFDMUdtQixFQUFrQmpELEVBQUFBLFNBQVMsSUFBT3hELEVBQU0sUUFBVTBHLEVBQVcsTUFBUUEsRUFBVyxNQUFRMUcsRUFBTSxPQUFRLEVBQ3RHMEcsRUFBYWxELEVBQUFBLFNBQVMsSUFBTSxDQUNoQyxHQUFJLENBQUMwQyxFQUFPLE1BQU0sT0FBUSxNQUFPLEdBQ2pDLEdBQUksQ0FBQ2xHLEVBQU0sZUFBZ0IsT0FBT2tHLEVBQU8sTUFBTSxPQUUvQyxNQUFNUyxFQUFXLEtBQUssTUFBTVQsRUFBTyxNQUFNLE9BQVNJLEVBQWtCLEtBQUssRUFHekUsT0FGa0JKLEVBQU8sTUFBTSxPQUFTSSxFQUFrQixNQUV2Q0ssRUFBVyxFQUFJQSxDQUNwQyxDQUFDLEVBSUQsSUFBSUMsRUFFSixNQUFNQyxFQUFlQyxHQUFxQixDQUN4QyxJQUFJQyxFQUFZLEdBRWhCLE9BQUlELElBQWFuQixFQUFpQixRQUFPb0IsRUFBWSw0QkFDakQsS0FBSyxJQUFJcEIsRUFBaUIsTUFBUW1CLENBQVEsSUFBTSxJQUFHQyxFQUFZLDhCQUU1REEsQ0FDVCxFQUVNQyxFQUE4QixDQUFDQyxFQUFzQkMsSUFBMkIsQ0FDcEYsTUFBTUMsRUFBZ0JELEVBQVUsc0JBQUEsRUFDMUJFLEVBQWlCRCxFQUFjLEtBQU9BLEVBQWMsTUFDcERFLEdBQWNKLEVBQVEsc0JBQUEsRUFHNUIsT0FGcUJJLEdBQVksS0FBT0EsR0FBWSxPQUU3QkQsR0FBa0JDLEdBQVksTUFBUUYsRUFBYyxJQUM3RSxFQUVNRyxFQUFrQkMsR0FBc0IsQ0FDNUMsR0FBSSxDQUFDbEIsRUFBVyxNQUFPLE9BRXZCLE1BQU1tQixFQUFXRCxFQUFNLGVBQWUsQ0FBQyxFQUNqQ0UsRUFBU3BCLEVBQVcsTUFBTSxRQUFVbUIsRUFBUyxRQUM3Q0UsRUFBU0YsRUFBUyxRQUFVbkIsRUFBVyxNQUFNLFFBRS9DLEtBQUssSUFBSW9CLENBQU0sRUFBSSxLQUFLLElBQUlDLENBQU0sR0FBR0MsR0FBY0YsQ0FBTSxDQUMvRCxFQUVNRyxFQUFvQkwsR0FBc0IsQ0FDOUNsQixFQUFXLE1BQVFrQixFQUFNLFFBQVEsQ0FBQyxDQUNwQyxFQUVNTSxFQUFlTixHQUFzQixDQUN6QyxNQUFNTyxFQUFpQlAsRUFBTSxTQUN2QlEsRUFBVSxLQUFLLElBQUlSLEVBQU0sTUFBTSxHQUFLLEdBRXRDUSxHQUFXLENBQUNELElBQ1pQLEVBQU0sVUFBVUEsRUFBTSxlQUFBLEVBRTFCLGFBQWFYLENBQWEsRUFFMUJBLEVBQWdCLE9BQU8sV0FBVyxJQUFNLE9BQ3RDLEdBQUltQixFQUNGSixHQUFjSixFQUFNLE1BQU0sTUFDckIsQ0FDTCxNQUFNUyxLQUFTOUQsRUFBQWdDLEVBQU8sTUFBTUMsRUFBYSxNQUFNLENBQUMsQ0FBQyxJQUFsQyxZQUFBakMsRUFBcUMsYUFBYyxFQUVsRStELEdBQWVELEVBQU0sQ0FDdkIsQ0FDRixFQUFHLEdBQUcsRUFDUixFQUVNRSxHQUFhLElBQU0sQ0FDbEJ6QyxFQUFhLFFBRWxCQyxFQUFhLE1BQVFELEVBQWEsTUFBTSxZQUN4Q0ksRUFBVyxNQUFRSixFQUFhLE1BQU0sWUFDdENPLEVBQVksTUFBUU4sRUFBYSxNQUFRRyxFQUFXLE1BRXBEUyxFQUFrQixNQUFRSixFQUFPLE1BQU0sT0FBUWlDLEdBQzdDbkIsRUFBNEJtQixFQUFPMUMsRUFBYSxLQUFvQixDQUFBLEVBQ3BFLE9BQ0osRUFFTTJDLEdBQWdCLElBQU0sQ0FDMUIsTUFBTUMsRUFBVSxDQUNkLEtBQU03QyxHQUFBLFlBQUFBLEVBQWEsTUFDbkIsV0FBWSxrQkFDWixVQUFXLENBQUEsRUFHYlMsRUFBYyxNQUFRLElBQUkscUJBQXNCcUMsR0FBWSxDQUMxRCxJQUFJQyxFQUE4QixDQUFBLEVBRWxDRCxFQUFRLFFBQVNFLEdBQVUsQ0FDekIsTUFBTUMsR0FBYXZDLEVBQU8sTUFBTSxRQUFRc0MsRUFBTSxNQUFxQixFQUUvREEsRUFBTSxnQkFDUkQsRUFBa0IsS0FBS0UsRUFBVSxFQUNqQ3RDLEVBQWEsTUFBTSxLQUFLc0MsRUFBVSxHQUVsQ3RDLEVBQWEsTUFBUUEsRUFBYSxNQUFNLE9BQVFnQyxJQUFVQSxLQUFVTSxFQUFVLEVBR2hGdEMsRUFBYSxNQUFNLEtBQUssQ0FBQ3VDLEdBQUdDLEtBQU1ELEdBQUlDLEVBQUMsQ0FDekMsQ0FBQyxFQUVEN0MsRUFBYSxNQUFRSyxFQUFhLE1BQU0sU0FBUyxDQUFDLEVBQ2xESixFQUFZLE1BQVFJLEVBQWEsTUFBTSxTQUFTRCxFQUFPLE1BQU0sT0FBUyxDQUFDLEVBRW5FcUMsRUFBa0IsT0FBUyxHQUFHM0UsRUFBSyxvQkFBcUIyRSxDQUFpQixDQUMvRSxFQUFHRixDQUFPLEVBRVZuQyxFQUFPLE1BQU0sUUFBUzBDLEdBQVUsQ0FDMUIzQyxFQUFjLE9BQU9BLEVBQWMsTUFBTSxRQUFRMkMsQ0FBSyxDQUM1RCxDQUFDLENBQ0gsRUFFTUMsR0FBYyxJQUFNLENBQ3hCLE1BQU1DLEVBQW1CLElBQU0sQ0FDekJyRCxFQUFhLFFBQVUsT0FFM0JTLEVBQU8sTUFBUSxNQUFNLEtBQUtULEVBQWEsTUFBTSxRQUFRLEVBQ3JEMkMsR0FBQSxFQUNGLEVBRUFoQyxFQUFhLE1BQVEsSUFBSSxpQkFBaUIwQyxDQUFnQixFQUV0RHJELEVBQWEsT0FBT1csRUFBYSxNQUFNLFFBQVFYLEVBQWEsTUFBTyxDQUFFLFVBQVcsR0FBTSxDQUM1RixFQUVNa0MsR0FBaUJvQixHQUFrQixDQUNmQSxFQUFRLEVBRzlCL0ksRUFBTSxlQUFpQmdKLEdBQUEsRUFBcUJDLEdBQUEsRUFFNUNqSixFQUFNLGVBQWlCa0osR0FBQSxFQUFpQkMsR0FBQSxDQUU1QyxFQUVNbEIsR0FBa0JtQixHQUFtQixDQUN6QyxHQUFJM0QsRUFBYSxRQUFVLEtBQU0sT0FFakMsTUFBTTRELEVBQWtCRCxHQUFVM0QsRUFBYSxNQUFNLFdBRXJERSxFQUFpQixNQUFRMEQsRUFBa0IxRCxFQUFpQixNQUFRLEVBQUlBLEVBQWlCLE1BQVEsRUFFakdGLEVBQWEsTUFBTSxTQUFTLENBQzFCLFNBQVUsU0FDVixLQUFNMkQsQ0FBQSxDQUNQLEVBQ0RFLEdBQVdELENBQWUsQ0FDNUIsRUFFTUgsR0FBZSxJQUFNLE9BQ3pCLEdBQUkvQyxFQUFhLE1BQU0sU0FBVyxHQUFLSixFQUFZLE1BQU8sT0FFMUQsTUFBTXdELEVBQW9CcEQsRUFBYSxNQUFNQSxFQUFhLE1BQU0sT0FBUyxDQUFDLEVBQUksRUFDeEU2QixHQUFTOUQsRUFBQWdDLEVBQU8sTUFBTXFELENBQVMsSUFBdEIsWUFBQXJGLEVBQXlCLFdBRXhDK0QsR0FBZUQsQ0FBTSxDQUN2QixFQUVNZ0IsR0FBbUIsSUFBTSxPQUM3QixHQUFJN0MsRUFBYSxNQUFNLFNBQVcsR0FBS0wsRUFBYSxNQUFPLE9BRTNELE1BQU0wRCxFQUF3QnJELEVBQWEsTUFBTSxDQUFDLEVBQUlBLEVBQWEsTUFBTSxPQUNuRTZCLElBQVM5RCxFQUFBZ0MsRUFBTyxNQUFNc0QsQ0FBYSxJQUExQixZQUFBdEYsRUFBNkIsYUFBYyxFQUUxRCtELEdBQWVELENBQU0sQ0FDdkIsRUFFTW1CLEdBQWdCLElBQU0sQ0FDMUIsR0FBSWhELEVBQWEsTUFBTSxTQUFXLEVBQUcsT0FFckMsTUFBTW9ELEVBQW9CcEQsRUFBYSxNQUFNLE9BQVMsRUFBSUEsRUFBYSxNQUFNLENBQUMsRUFBSUEsRUFBYSxNQUFNLENBQUMsRUFBSSxFQUUxRzhCLEdBQWUvQixFQUFPLE1BQU1xRCxDQUFTLEVBQUUsVUFBVSxDQUNuRCxFQUVNTixHQUFvQixJQUFNLENBQzlCLEdBQUk5QyxFQUFhLE1BQU0sU0FBVyxFQUFHLE9BRXJDLE1BQU1xRCxFQUF3QnJELEVBQWEsTUFBTSxDQUFDLEVBQUksRUFFdEQ4QixHQUFlL0IsRUFBTyxNQUFNc0QsQ0FBYSxFQUFFLFVBQVUsQ0FDdkQsRUFFTUYsR0FBY0QsR0FBNkIsQ0FDL0MsR0FBSSxDQUFDekQsRUFBUSxPQUFTYSxFQUFnQixPQUFTQyxFQUFXLE1BQU8sT0FHakUsTUFBTStDLEVBRGdCaEQsRUFBZ0IsTUFBUSxJQUFNLEdBRWpDNEMsRUFDYixLQUFLLE1BQU01QyxFQUFnQixNQUFRLENBQUMsRUFBSSxFQUN4QyxLQUFLLE1BQU1BLEVBQWdCLE1BQVEsQ0FBQyxFQUUxQ2IsRUFBUSxNQUFNLFNBQVMsQ0FDckIsU0FBVSxTQUNWLEtBQU1XLEVBQVksTUFBUWtELEVBQVksR0FBS2xELEVBQVksTUFBUWtELElBQWNsRSxHQUFXRCxHQUFBLENBQ3pGLENBQ0gsRUFFQW9FLE9BQUFBLEVBQUFBLFVBQVUsSUFBTSxDQUNWakUsRUFBYSxRQUFVLE9BRTNCUyxFQUFPLE1BQVEsTUFBTSxLQUFLVCxFQUFhLE1BQU0sUUFBUSxFQUVyRHlDLEdBQUEsRUFDQUUsR0FBQSxFQUNBUyxHQUFBLEVBRUksUUFDRixPQUFPLGlCQUFpQixTQUFVWCxFQUFVLEVBRWhELENBQUMsRUFFRHlCLEVBQUFBLFlBQVksSUFBTSxVQUNoQnpGLEVBQUErQixFQUFjLFFBQWQsTUFBQS9CLEVBQXFCLGNBQ3JCMEYsRUFBQXhELEVBQWEsUUFBYixNQUFBd0QsRUFBb0IsYUFDcEIsT0FBTyxvQkFBb0IsU0FBVTFCLEVBQVUsQ0FDakQsQ0FBQyx3QkFJRC9ILEVBQUFBLG1CQTJKVSxVQUFBLENBMUpQLE1BQUtHLEVBQUFBLGVBQUEsaUJBQWlDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxJQUFXVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFBLFdBUXRKLGNBQUosSUFBSTRGLENBQUEsR0FJTSxDQUFBeEYsRUFBTSxZQUFjZ0csU0FBZ0JoRyxFQUFNLHFCQUZwREcsRUFBQUEsbUJBeUNVLFVBQUEsT0F4Q1AsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNSSxFQUFNLE1BQVFPLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLFFBQVVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLElBQUksQ0FBQSxDQUFBLEdBS3BHSSxFQUFNLHFCQUZkRyxFQUFBQSxtQkFpQk0sTUFBQSxPQWhCSCxNQUFLRyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxRQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxHQUFHLENBQUEsQ0FBQSxHQUsvREksRUFBTSxxQkFGZEcsRUFBQUEsbUJBS00sTUFBQSxPQUpILHdCQUFRRixFQUFBLFlBQWNNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssV0FBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxVQUFVLENBQUEsQ0FBQSxFQUd2RXlDLEVBQUFBLGdCQUFBckMsRUFBTSxLQUFLLEVBQUEsQ0FBQSwrQkFLUkEsRUFBTSx3QkFGZEcsRUFBQUEsbUJBS00sTUFBQSxPQUpILHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsQ0FBQSxFQUczRHlDLEVBQUFBLGdCQUFBckMsRUFBTSxRQUFRLEVBQUEsQ0FBQSxpRUFNWkEsRUFBTSxZQUFjZ0csRUFBQSxxQkFGN0I3RixFQUFBQSxtQkFpQk0sTUFBQSxPQWhCSCx3QkFBUUksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsU0FBSSxJQUFJLEdBQUcsQ0FBQSxDQUFBLEdBR3hEK0IsRUFBQUEsWUFLRWlDLEVBQUEsQ0FKQyxTQUFVdUIsRUFBQSxNQUNWLEtBQU12RixFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLGFBQ1gsU0FBVXhCLEVBQUFBLE1BQUE4QyxDQUFBLEVBQVMsU0FDbkIsUUFBS3dHLEVBQUEsQ0FBQSxJQUFBQSxFQUFBLENBQUEsRUFBQXpFLEdBQUVuRixFQUFBLGVBQWlCK0ksR0FBQSxFQUFxQkMsR0FBQSxFQUFpQix5Q0FHakUzRyxFQUFBQSxZQUtFaUMsRUFBQSxDQUpDLFNBQVV3QixFQUFBLE1BQ1YsS0FBTXhGLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssY0FDWCxTQUFVeEIsRUFBQUEsTUFBQThDLENBQUEsRUFBUyxTQUNuQixRQUFLd0csRUFBQSxDQUFBLElBQUFBLEVBQUEsQ0FBQSxFQUFBekUsR0FBRW5GLEVBQUEsZUFBaUJpSixHQUFBLEVBQWlCQyxHQUFBLEVBQWEsMkdBSzdEM0csRUFBQUEsV0FBb0JDLEVBQUEsT0FBQSxPQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsRUFFcEJwQyxFQUFBQSxtQkFrR00sTUFBQSxDQWxHQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLFNBQVVXLFFBQUFYLENBQUEsRUFBSSxRQUFRLElBQUksQ0FBQSxDQUFBLEdBQ25EUyxFQUFBQSxtQkFnQkssS0FBQSxDQWZGLE1BQUtDLEVBQUFBLGVBQUEsMkJBQW1EQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLGFBQWEsSUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxPQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFVBQVUsSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLEtBQUssRUFBQSxXQVMvTSxlQUFKLElBQUk2RixFQUNILFdBQVU2QixzQkFDVU0sRUFDcEIsUUFBT0MsQ0FBQSxHQUVSckYsRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLE1BYUZ4QyxFQUFBLFNBQVd5RyxFQUFBLE1BQVUsaUJBVjdCdkcsRUFBQUEsbUJBOENNLE1BQUEsT0E3Q0gsTUFBS0csRUFBQUEsZUFBQSxDQUFjQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksT0FBa0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWdCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQUEsS0FXOU5TLEVBQUFBLG1CQWlDTSxNQUFBLENBaENILHVCQUFPLENBQUEsOEJBQUEsQ0FBZ0MsRUFDdkMsTUFBS3lKLEVBQUFBLGVBQUEsVUFBMEJ0RCxFQUFBLEtBQWlCLElBQUEsS0FJakRuRyxFQUFBQSxtQkEwQk0sTUFBQSxDQXpCSCxNQUFLQyxFQUFBQSxlQUFBLHNCQUFzREMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBb0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE1BQXFCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFzQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBb0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsT0FBc0JXLFFBQUFYLENBQUEsRUFBSSxlQUFlLElBQW1CVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxHQUFBLFdBVTVRLFVBQUosSUFBSWdHLENBQUEsSUFFSjFGLEVBQUFBLFVBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkFZRXdFLFdBQUEsS0FBQU8sRUFBQUEsV0FEcUJ3QixFQUFBLE1BQVUsQ0FBdkJxRCxFQUFHbEYsbUJBWGIxRSxFQUFBQSxtQkFZRSxNQUFBLENBWEMsTUFBS0csRUFBQUEsZUFBQSxxQkFBeURDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBcUJXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQXNCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFzQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFzQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUF5QmlILEVBQVloQyxDQUFLLENBQUEsR0FTclEsSUFBS0EsQ0FBQSwyREFvQk41RSxFQUFBLFlBQWMrRixFQUFBLHFCQWJ0QjdGLEVBQUFBLG1CQThCTSxNQUFBLE9BN0JILE1BQUtHLEVBQUFBLGVBQUEsZ0NBQXdEQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLFFBQW1CVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQWdCVyxRQUFBWCxDQUFBLEVBQUksZUFBZSxJQUFlSSxFQUFNLGtCQUFpQixXQUFBLEVBQUEsS0FjalVzQyxFQUFBQSxZQU1FaUMsRUFBQSxDQUxDLE1BQUtqRSxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGVBQWUsRUFBRSxDQUFBLEVBQ2xELFNBQVVrRyxFQUFBLE1BQ1YsS0FBTXZGLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssYUFDWCxTQUFVeEIsRUFBQUEsTUFBQThDLENBQUEsRUFBUyxXQUNuQixRQUFLd0csRUFBQSxDQUFBLElBQUFBLEVBQUEsQ0FBQSxFQUFBekUsR0FBRW5GLEVBQUEsZUFBaUIrSSxHQUFBLEVBQXFCQyxHQUFBLEVBQWlCLGlEQUdqRTNHLEVBQUFBLFlBTUVpQyxFQUFBLENBTEMsTUFBS2pFLEVBQUFBLGVBQUEsQ0FBR0MsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksZUFBZSxFQUFFLENBQUEsRUFDbkQsU0FBVW1HLEVBQUEsTUFDVixLQUFNeEYsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxjQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQUt3RyxFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF6RSxHQUFFbkYsRUFBQSxlQUFpQmlKLEdBQUEsRUFBaUJDLEdBQUEsRUFBYSxtU0N2Wi9ELE1BQU1uSixFQUFRQyxFQU1Sd0QsRUFBY0QsV0FBUyxJQUFPeEQsRUFBTSxVQUFZMEMsRUFBUSxLQUFPZ0IsR0FBbUIxRCxFQUFNLE9BQVEsZ0JBSXRHRSxFQUFBQSxZQUFBMkIsRUFBQUEsWUF1QllDLEVBQUFBLHdCQUxMMkIsRUFBQSxLQUFXLEVBQUEsQ0FqQmYsTUFBS25ELEVBQUFBLGVBQUEsb0JBQW9DQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsUUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFVBQVUsS0FBSyxHQUFBLEdBYzVVLEtBQU1JLEVBQU0sS0FDWixPQUFRQSxFQUFNLFNBQVdPLFFBQUErQyxDQUFBLEVBQU8sTUFBUS9DLEVBQUFBLE1BQUErQyxDQUFBLEVBQU8sS0FDL0MsS0FBTXJELEVBQUEsVUFBWU0sUUFBQW1DLENBQUEsRUFBUSxPQUFTbkMsRUFBQUEsTUFBQW1DLENBQUEsRUFBUSxPQUFTLE1BQUEscUJBR3JELElBQWdDLENBQWhDSixFQUFBQSxZQUFnQ0MsRUFBQSxDQUFyQixLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUFBLG1CQUV0QjFCLEVBQUFBLG1CQUE4QixPQUFBLEtBQUFnQyxFQUFBQSxnQkFBckJyQyxFQUFNLEtBQUssRUFBQSxDQUFBLENBQUEsd1FDMUN0QixNQUFNZ0ssRUFBVzlILEVBQUFBLHVCQUF1QyxFQUVsRCtDLEVBQWMsSUFBTSxDQUN4QitFLEVBQVMsTUFBUSxDQUFDQSxFQUFTLEtBQzdCLDhCQUlBN0osRUFBQUEsbUJBeUJTLFNBQUEsQ0F4Qk4sTUFBS0csRUFBQUEsZUFBQSxvQkFBb0MwSixFQUFBLGdCQUE4QnpKLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFVBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxFQUFhLENBQUFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBU1csUUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sRUFBU1csUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQUEsR0FjM1gsUUFBT3FGLEVBQ1IsS0FBSyxRQUFBLEdBRUx6QyxFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLEVBRVJwQyxFQUFBQSxtQkFJTSxNQUFBLENBSkEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBSSxDQUFBLENBQUEsR0FDOUVTLEVBQUFBLG1CQUVPLE9BQUEsQ0FGQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGdCQUFnQixHQUFHLENBQUEsQ0FBQSxvQkFDeERLLEVBQUEsS0FBSyxFQUFBLENBQUEsQ0FBQSwrSEM5QmQsTUFBTUQsRUFBUUMsOEJBSWRFLEVBQUFBLG1CQW1CUyxTQUFBLENBbEJOLE1BQUtHLEVBQUFBLGVBQUEsbUJBQW1DQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBZVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQUEsR0FhblMsS0FBSyxRQUFBLEdBRUxTLEVBQUFBLG1CQUE4QixPQUFBLEtBQUFnQyxFQUFBQSxnQkFBckJyQyxFQUFNLEtBQUssRUFBQSxDQUFBLEVBRXBCc0MsRUFBQUEsWUFBK0JDLEVBQUEsQ0FBcEIsS0FBTWhDLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssS0FBQSxxVEN4QnhCLE1BQU0vQixFQUFRQyxnQkFNZEMsWUFBQSxFQUFBQyxxQkFzQlUsVUF0QlZDLEdBc0JVLENBckJSQyxFQUFBQSxtQkFFSyxLQUFBLENBRkEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sSUFBSSxDQUFBLENBQUEsRUFDOUJ5QyxrQkFBQXJDLEVBQU0sT0FBTyxFQUFBLENBQUEsRUFHbEJLLEVBQUFBLG1CQWdCSyxLQUFBLENBaEJBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxRQUFRLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxJQUFJLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQSxDQUFBLEdBQzdFUyxFQUFBQSxtQkFFSyxLQUZMMEUsR0FFSyxDQURIdkMsRUFBQUEsV0FBd0JDLEVBQUEsT0FBQSxXQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsQ0FBQSxHQUcxQnBDLEVBQUFBLG1CQUVLLEtBRkw0SixHQUVLLENBREh6SCxFQUFBQSxXQUF3QkMsRUFBQSxPQUFBLFdBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLEdBRzFCcEMsRUFBQUEsbUJBRUssS0FGTDZKLEdBRUssQ0FESDFILEVBQUFBLFdBQXdCQyxFQUFBLE9BQUEsV0FBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsR0FHMUJwQyxFQUFBQSxtQkFFSyxLQUZMOEosR0FFSyxDQURIM0gsRUFBQUEsV0FBd0JDLEVBQUEsT0FBQSxXQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsQ0FBQSx3REN4QjFCMkgsR0FBVyxPQUFPLFdBQVcsRUFFdEJDLEdBQWMsSUFBTSxDQUMvQixNQUFNQyxFQUFrQmxKLEVBQUFBLElBQWEsRUFBSyxFQUUxQzZCLE9BQUFBLFVBQXlCbUgsR0FBVSxDQUFFLGdCQUFBRSxFQUFpQixFQU0vQyxDQUFFLHVCQUpzQixJQUFNLENBQ25DQSxFQUFnQixNQUFRLEVBQzFCLENBRVMsQ0FDWCxFQUVhQyxHQUFpQixJQUNyQnBILEVBQUFBLE9BQXdCaUgsRUFBUSw2RUNqQnZDLE1BQU14RyxFQUFPQyxFQUVQLENBQUUsdUJBQUEyRyxDQUFBLEVBQTJCSCxHQUFBLEVBRTdCSSxFQUFnQkMsR0FBbUIsQ0FDdkNGLEVBQUEsRUFDQTVHLEVBQUssU0FBVThHLENBQUMsQ0FDbEIsOEJBSUF2SyxFQUFBQSxtQkFLTyxPQUFBLENBSkoseUJBQWdCc0ssRUFBWSxDQUFBLFNBQUEsQ0FBQSxFQUM3QixXQUFBLEVBQUEsR0FFQWpJLGFBQVFDLEVBQUEsT0FBQSxTQUFBLENBQUEsVUNyQkNrSSxHQUFhLENBQ3hCLFFBQVMsVUFDVCxNQUFPLFFBQ1AsV0FBWSxZQUNkLG9GQzRCUUMsR0FBZSw4U0FickIsTUFBTTVLLEVBQVFDLEVBVVI0SyxFQUFVekosRUFBQUEsSUFBQSxFQUNWMEosRUFBTTFKLEVBQUFBLElBQUEsRUFJTjJKLEVBQXFCdkgsRUFBQUEsU0FBaUIsSUFBTSxDQUNoRCxPQUFReEQsRUFBTSxVQUFBLENBQ1osS0FBSzJLLEdBQVcsUUFDZCxPQUFPL0ssRUFBSSxPQUFPLFFBQ3BCLEtBQUsrSyxHQUFXLE1BQ2QsT0FBTy9LLEVBQUksT0FBTyxNQUNwQixLQUFLK0ssR0FBVyxXQUNkLE9BQU8vSyxFQUFJLE9BQU8sV0FDcEIsUUFDRSxPQUFPK0ssR0FBVyxLQUFBLENBRXhCLENBQUMsRUFFS0ssRUFBc0IsSUFBTSxTQUNoQyxNQUFNQyxHQUFhL0csRUFBQTRHLEVBQUksUUFBSixZQUFBNUcsRUFBVyxXQUN4QmdILEdBQWdCdEIsRUFBQWlCLEVBQVEsUUFBUixZQUFBakIsRUFBZSxjQUFjLGtCQUFrQnFCLENBQVUsTUFFM0VBLEdBQWNDLEVBQ2hCQSxFQUFjLE9BQVNOLEdBQ2RFLEVBQUksUUFDYkEsRUFBSSxNQUFNLElBQU1GLEdBRXBCLDhCQUlBekssRUFBQUEsbUJBNEJVLFVBQUEsQ0EzQlAsTUFBS0csRUFBQUEsZUFBQSxDQUFBLGFBQWlCQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLENBQUEsVUFDcEMsVUFBSixJQUFJaUwsQ0FBQSxJQUVKM0ssWUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQUtFd0UsRUFBQUEsU0FBQSxLQUFBTyxFQUFBQSxXQURpQmxGLEVBQU0sUUFBaEJtTCxrQkFKVGhMLEVBQUFBLG1CQUtFLFNBQUEsQ0FKQyxJQUFLZ0wsRUFBTyxPQUNaLE1BQUssY0FBZ0JBLEVBQU8sS0FBSyxNQUNqQyxPQUFRQSxFQUFPLE1BQUEscUJBSWxCOUssRUFBQUEsbUJBZ0JFLE1BQUEsQ0FmQyxJQUFLSixFQUFBLElBQ0wsTUFBS0ssRUFBQUEsZUFBQSxrQkFBdUMsQ0FBQU4sRUFBTSxPQUFTTyxFQUFBQSxTQUFJLE1BQU0sS0FBZSxDQUFBUCxFQUFNLFFBQVVPLEVBQUFBLFNBQUksT0FBTyxLQUFjQSxRQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFnQm1MLEVBQUEsS0FBQSxHQU94SixjQUFlOUssRUFBQSxPQUFTLE9BQVMsT0FDakMsT0FBUUQsRUFBTSxPQUNkLFFBQVNBLEVBQU0sT0FBTSxPQUFBLGdCQUNsQixNQUFKLElBQUk4SyxFQUNILElBQUs3SyxFQUFBLEtBQU8ySyxHQUNaLE1BQU81SyxFQUFNLE1BQ2IsUUFBT2dMLENBQUEscU9DeEVaLE1BQU1oTCxFQUFRQyw4QkFTZEUsRUFBQUEsbUJBc0JNLE1BQUEsQ0F0QkEsZ0RBQWlDSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQVFXLEVBQUFBLFNBQUksVUFBVSxPQUFPLENBQUEsQ0FBQSxHQUN6R0YsRUFBQUEsbUJBa0JNLE1BQUEsQ0FqQkgsTUFBS0MsRUFBQUEsZUFBQSxDQUFZQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBY1csUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE1BQUEsS0FTaEswQyxFQUFBQSxZQU9FOEksR0FBQSxDQU5DLElBQUtwTCxFQUFNLElBQ1gsTUFBS00sRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFJLENBQUEsRUFDdkMsVUFBU0ksRUFBTSxPQUNmLGFBQVlPLEVBQUFBLE1BQUFvSyxFQUFBLEVBQVcsTUFDdkIsUUFBUzNLLEVBQU0sUUFDZixJQUFLQSxFQUFNLEdBQUEscUVBSWhCd0MsRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLHFNQ3JDVixNQUFNekMsRUFBUUMsOEJBTWRFLEVBQUFBLG1CQW9CTSxNQUFBLENBbkJILE1BQUtHLEVBQUFBLGVBQUEsa0JBQWtDTixFQUFNLE1BQUssR0FBQSxNQUFxQk8sUUFBQVgsQ0FBQSxFQUFJLFFBQVEsYUFBb0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLEVBQUUsT0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLE1BQWFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBWUksRUFBTSxPQUFTQSxFQUFNLE1BQU0sU0FBQSxFQUFXLFVBQWNPLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFBLENBQUEsRUFBY0ksRUFBTSxPQUFpQk8sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBVVcsUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFTVyxFQUFBQSxTQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sRUFBYSxDQUFBQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLEdBQUcsQ0FBQSxLQWVsWkksRUFBTSxPQUZkRSxFQUFBQSxVQUFBLEVBQUFDLEVBQUFBLG1CQUtNLE1BTE5DLEdBS01pQyxFQUFBQSxnQkFERHJDLEVBQU0sS0FBSyxFQUFBLENBQUEsd05DakJsQkcsRUFBQUEsbUJBbUJNLE1BQUEsQ0FsQkgsTUFBS0csRUFBQUEsZUFBQSxDQUFVQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQWVLLEVBQUEsU0FBV00sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxPQUFPLEtBQUssRUFBQSxDQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLEtBWXJMSyxFQUFBLHVCQUpSNEIsRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHdCQUFRaEMsUUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxHQUFHLENBQUEsRUFDM0IsS0FBTVcsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSwrREFJZEosRUFBQUEsbUJBRU0sNkJBRERKLEVBQUEsT0FBTyxFQUFBLENBQUEsQ0FBQSxTQzFCSG9MLEdBQXNCLDZCQUV0QkMsR0FBb0IsQ0FDL0IsU0FBVSxDQUNSLFFBQVMsR0FDVCxNQUFPLEVBQUEsRUFFVCxTQUFVLENBQ1IsUUFBUyw2QkFDVCxNQUFPLEVBQUEsQ0FFWCxFQUVhQyxHQUFjLENBQUNDLEVBQWdCQyxJQUNsQ0MsR0FBb0MsQ0FDMUMsSUFBSUMsRUFBMkJMLEdBQWtCLFNBRWpELE9BQUtJLEVBQU0sS0FBQSxFQUFPLE1BQU1GLENBQU0sSUFDNUJHLEVBQVMsQ0FDUCxRQUFTRixHQUFXSixHQUNwQixNQUFPLEVBQUEsR0FJSk0sQ0FDVCxFQUdXQyxHQUF3QixDQUFDLENBQUUsVUFBQUMsRUFBVyxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsTUFBQUwsS0FBOEIsQ0FDcEcsTUFBTU0sRUFBdUJOLEVBQU0sU0FBVyxHQUFLLENBQUNLLEVBQzlDRSxFQUFZSixHQUFhSCxFQUFNLE9BQVNHLEVBRTlDLE1BQU8sRUFEWSxDQUFDRyxHQUF3QkYsR0FBYUosRUFBTSxPQUFTSSxJQUNsRCxDQUFDRyxDQUN6QixFQUVhQyxHQUEyQixDQUFDLENBQ3ZDLGVBQUFDLEVBQ0EsVUFBQU4sRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsV0FBQUssRUFDQSxNQUFBVixDQUNGLElBT3dCLE9BRXRCLEdBQUlTLElBQW1CLEdBQ3JCLE1BQU8sQ0FDTCxRQUFTQSxFQUNULE1BQU8sRUFBQSxFQUlYLEdBQUlDLEVBQVksQ0FDZCxNQUFNQyxFQUFhQyxHQUFpQlosRUFBTSxPQUFTLEdBQUlVLENBQVUsRUFFakUsR0FBSSxDQUFDQyxFQUFXLE1BQ2QsT0FBT0EsQ0FFWCxDQUdBLEdBQUlOLEtBQVk3SCxFQUFBd0gsRUFBTSxRQUFOLFlBQUF4SCxFQUFhLFVBQVcsR0FDdEMsT0FBT29ILEdBQWtCLFNBRzNCLEdBQUlPLEdBQWFDLEVBQVcsQ0FDMUIsTUFBTVMsRUFBbUJDLEdBQWUsQ0FDdEMsVUFBQVgsRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsTUFBT0wsRUFBTSxLQUFBLENBQ2QsRUFFRCxHQUFJLENBQUNhLEVBQWlCLE1BQ3BCLE9BQU9BLENBRVgsQ0FDQSxPQUFPakIsR0FBa0IsUUFDM0IsRUFFYWtCLEdBQWlCLENBQUMsQ0FBRSxVQUFBWCxFQUFXLFVBQUFDLEVBQVcsU0FBQUMsRUFBVSxNQUFBTCxLQUFnRCxDQUMvRyxNQUFNZSxFQUFXLENBQ2YsUUFBUyxHQUNULE1BQU8sRUFBQSxFQVVULE9BUEFBLEVBQVMsTUFBUWIsR0FBc0IsQ0FDckMsVUFBQUMsRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsTUFBQUwsQ0FBQSxDQUNELEVBRUdlLEVBQVMsUUFFYkEsRUFBUyxRQUFVcEIsR0FFZlEsR0FBYUMsRUFDZlcsRUFBUyxRQUFVLHlCQUF5QjlMLEVBQWFtTCxDQUFTLENBQUMsUUFBUW5MLEVBQWFrTCxDQUFTLENBQUMsY0FDekZBLEVBQ1RZLEVBQVMsUUFBVSxPQUFPOUwsRUFBYWtMLENBQVMsQ0FBQyx1QkFDeENDLElBQ1RXLEVBQVMsUUFBVSxrQkFBa0I5TCxFQUFhbUwsQ0FBUyxDQUFDLGdCQUd2RFcsQ0FDVCxFQUVPLFNBQVNILEdBQWlCWixFQUFlVSxFQUF1RSxDQUNySCxVQUFXTSxLQUFhTixFQUFZLENBQ2xDLE1BQU1DLEVBQWFLLEVBQVVoQixDQUFLLEVBQ2xDLEdBQUksQ0FBQ1csRUFBVyxNQUNkLE9BQU9BLENBRVgsQ0FFQSxNQUFPLENBQ0wsUUFBUyxHQUNULE1BQU8sRUFBQSxDQUVYLHFkQzFHRSxNQUFNck0sRUFBUUMsRUFjUjJELEVBQU9DLEVBRVA4SSxFQUFhekssRUFBQUEsdUJBQXVDLEVBRXBEMEssRUFBY3JDLEdBQUEsRUFFZHNDLEVBQWV6TCxFQUFBQSxJQUFhLEVBQUssRUFDakMwTCxFQUFXMUwsRUFBQUEsSUFBc0JrSyxHQUFrQixRQUFRLEVBRTNEeUIsRUFBaUJ2SixFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRmdOLEVBQVl4SixFQUFBQSxTQUFTLElBQU1tSixFQUFXLE9BQVMzTSxFQUFNLGFBQWEsRUFDbEVpTixFQUFZekosRUFBQUEsU0FBUyxJQUNyQjBKLEVBQWlCLE1BQWMsR0FDOUJMLEVBQWEsTUFDWCxDQUFDQyxFQUFTLE1BQU0sTUFEUyxFQUVqQyxFQUNLSSxFQUFtQjFKLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sUUFBVSxFQUFFLEVBQ3BEbU4sRUFBd0IzSixFQUFBQSxTQUFTLElBQU15SixFQUFVLE9BQVNILEVBQVMsTUFBTSxPQUFPLEVBRWhGTSxFQUE4QixJQUM5QnBOLEVBQU0sUUFBVSxHQUNYLENBQ0wsUUFBU0EsRUFBTSxNQUNmLE1BQU8sRUFBQSxFQUVQLENBQUNBLEVBQU0sVUFBWWdOLEVBQVUsTUFBYzFCLEdBQWtCLFNBQzFEQSxHQUFrQixTQUczQitCLE9BQUFBLEVBQUFBLFlBQVksSUFBTSxDQUNoQlAsRUFBUyxNQUFRTSxFQUFBLENBQ25CLENBQUMsRUFFRC9MLEVBQUFBLE1BQ0VzTCxFQUNBLElBQU0sQ0FDQUEsRUFBVyxRQUFPRSxFQUFhLE1BQVEsR0FDN0MsRUFDQSxDQUFFLFVBQVcsRUFBQSxDQUFLLEVBR3BCeEwsRUFBQUEsTUFDRSxJQUFNdUwsR0FBQSxZQUFBQSxFQUFhLGdCQUFnQixNQUNsQ1UsR0FBYSxDQUNSQSxNQUF1QixNQUFRLEdBQ3JDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQmpNLEVBQUFBLE1BQ0V5TCxFQUNBLElBQU0sQ0FDSmxKLEVBQUssUUFBU2tKLEVBQVMsTUFBTSxLQUFLLENBQ3BDLEVBQ0EsQ0FBRSxLQUFNLEdBQU0sVUFBVyxFQUFBLENBQUssd0JBS2hDM00sRUFBQUEsbUJBc0VNLE1BQUEsQ0F0RUEsOENBQStCSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQVFXLEVBQUFBLFNBQUksSUFBSSxPQUFPLENBQUEsQ0FBQSxHQUMvRkYsRUFBQUEsbUJBOERRLFFBQUEsQ0E3REwsTUFBS0MsRUFBQUEsZUFBQSxDQUFZQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBY1csUUFBQVgsQ0FBQSxFQUFJLFlBQVksS0FBY3FOLEVBQUEsTUFBWTFNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sT0FBTyxNQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsUUFBaUJLLEVBQUEsVUFBWU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsU0FBVVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sV0FBVyxFQUFBLENBQUtXLEVBQUFBLFNBQUksT0FBTyxPQUFPLENBQUEsc0JBVXpURixFQUFBQSxtQkFTRSxRQUFBLENBUkMsUUFBUzJNLEVBQUEsTUFDVCx1QkFBTyxDQUFBLHlCQUFBLENBQTJCLEVBQ2xDLFNBQVUvTSxFQUFBLFNBQ1YsS0FBTUEsRUFBQSxLQUNQLElBQUksUUFDSCxHQUFJQSxFQUFBLFFBQ0wsS0FBSyxnREFDSTBNLEVBQVUsTUFBQXZILEVBQUEsZ0NBQVZ1SCxFQUFBLEtBQVUsQ0FBQSxHQUdyQnRNLEVBQUFBLG1CQXlCTSxNQUFBLENBeEJILE1BQUtDLEVBQUFBLGVBQUEsOEJBQXNEQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxRQUFtQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBZVcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBb0JvTixFQUFBLE9BQXlCQyxFQUFBLE1BQVkxTSxFQUFBQSxTQUFJLEdBQUcsT0FBTyxRQUFRLE1BQUssQ0FBSUEsRUFBQUEsU0FBSSxHQUFHLFVBQVdBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSSxDQUFBLEdBQW1DcU4sRUFBQSxNQUErQixDQUFBMU0sUUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLE1BQU9XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxLQUFLLEVBQXVCLENBQUFXLFFBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUEsTUFzQjFqQm9OLEVBQUEscUJBSlJuTCxFQUFBQSxZQUtFVSxFQUFBLE9BSkMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFNBQVMsQ0FBQSxFQUNoQyxLQUFNSyxnQkFBZ0JNLFFBQUF3QixDQUFBLEVBQUssT0FBU3hCLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDekMsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLG1FQU9SUixFQUFBLHFCQUZSRSxFQUFBQSxtQkFZTSxNQUFBLE9BWEgsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEdBQUlXLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBLENBQUEsR0FHcEZTLEVBQUFBLG1CQUFpQyw4QkFBeEIwTSxFQUFBLEtBQWMsRUFBQSxDQUFBLEVBSWY5TSxFQUFBLHNCQUZSRSxFQUFBQSxtQkFLTyxPQUFBLE9BSkosTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxXQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEVBRXhDLEtBQ0U4QixFQUFBQSxnQkFBRzlCLFFBQUFJLENBQUEsRUFBYVYsRUFBQSxNQUFNLEdBQUksS0FDN0IsQ0FBQSxvRUFPSWtOLEVBQUEscUJBSFJ0TCxFQUFBQSxZQUlFMEwsR0FBQSxPQUhDLFFBQVNKLEVBQUEsTUFDVixXQUFBLEVBQUEsdUpDaktKSyxHQUFlLENBQUEsK1JBc0JmLE1BQU14TixFQUFRQyxFQVVSK00sRUFBWXhKLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sU0FBV0EsRUFBTSxhQUFhLDhCQUlyRUcsRUFBQUEsbUJBZ0VNLE1BQUEsQ0EvREgsTUFBS0csRUFBQUEsZUFBQSx1QkFBdUNDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBY0ssRUFBQSxTQUFRLENBQUEsV0FBZ0JNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxlQUFlLEdBQUcsRUFBSVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBQSxLQVMxTVMsRUFBQUEsbUJBU0UsUUFBQSxDQVJDLFFBQVMyTSxFQUFBLE1BQ1QsTUFBSzFNLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsSUFBSSxDQUFBLEVBQ3hCLFNBQVVJLEVBQU0sU0FDaEIsS0FBTUEsRUFBTSxLQUNiLElBQUksUUFDSCxvQ0FBRCxJQUFBLENBQUEsRUFBYyxDQUFBLFNBQUEsQ0FBQSxHQUNiLEdBQUlBLEVBQU0sUUFDWCxLQUFLLFVBQUEsY0FHUEssRUFBQUEsbUJBcUJNLE1BQUEsQ0FwQkgsTUFBS0MsRUFBQUEsZUFBQSw4QkFBa0RDLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFhb04sRUFBQSxNQUFTLENBQUl6TSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFNBQVMsRUFBQSxDQUFLVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxFQUFXVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLFFBQWlCb04sRUFBQSxPQUFTLFVBQXVCL00sRUFBQSxTQUFXTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxZQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFBLEtBa0I3Ym9OLEVBQUEscUJBSlJuTCxFQUFBQSxZQUtFVSxFQUFBLE9BSkMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFNBQVMsQ0FBQSxFQUNoQyxLQUFNSSxFQUFNLGNBQWdCTyxRQUFBd0IsQ0FBQSxFQUFLLE9BQVN4QixFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLE1BQy9DLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSxtRUFlUlIsRUFBQSxxQkFWUkUsRUFBQUEsbUJBbUJRLFFBQUEsT0FsQkwsTUFBS0csRUFBQUEsZUFBQSxDQUFZQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxHQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQWdCSyxFQUFBLFNBQVdNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFlBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQUEsR0FPN0ssSUFBS0ksRUFBTSxRQUNYLG9DQUFELElBQUEsQ0FBQSxFQUFjLENBQUEsU0FBQSxDQUFBLEVBQUEsR0FHZEssRUFBQUEsbUJBQXdCLDhCQUFmSixFQUFBLEtBQUssRUFBQSxDQUFBLEVBR05ELEVBQU0sc0JBRmRHLEVBQUFBLG1CQUtPLE9BQUEsT0FKSixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFdBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsRUFFeEMsdUJBQ0tBLFFBQUFJLENBQUEsRUFBYVgsRUFBTSxNQUFNLEdBQUksS0FDbkMsQ0FBQSx5YkN2RkosTUFBTUEsRUFBUUMsRUFPUjBNLEVBQWF6SyxFQUFBQSx1QkFBc0MsRUFFbkQ4SyxFQUFZeEosRUFBQUEsU0FBUyxJQUFNbUosRUFBVyxRQUFVM00sRUFBTSxLQUFLLDhCQUlqRUcsRUFBQUEsbUJBZ0RRLFFBQUEsQ0EvQ0wsTUFBS0csRUFBQUEsZUFBQSxvQkFBb0NDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxZQUFZLEtBQVlJLEVBQU0sU0FBUSxDQUFJTyxFQUFBQSxTQUFJLFFBQVEsU0FBVUEsRUFBQUEsU0FBSSxPQUFPLFdBQVcsRUFBQSxDQUFLQSxFQUFBQSxTQUFJLE9BQU8sT0FBTyxDQUFBLEdBUTlOLElBQUtQLEVBQU0sT0FBQSxvQkFFWkssRUFBQUEsbUJBUUUsUUFBQSxDQVBDLHVCQUFPLENBQUEseUJBQUEsQ0FBMkIsRUFDbEMsU0FBVUosRUFBQSxTQUNWLEtBQU1BLEVBQUEsS0FDTixNQUFPQSxFQUFBLE1BQ1AsR0FBSUQsRUFBTSxRQUNYLEtBQUssNkNBQ0kyTSxFQUFVLE1BQUF2SCxFQUFBLDZCQUFWdUgsRUFBQSxLQUFVLENBQUEsR0FHckJ0TSxFQUFBQSxtQkFnQk0sTUFBQSxDQWZILE1BQUtDLEVBQUFBLGVBQUEsMkJBQStDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQWFvTixFQUFBLE1BQVMsQ0FBSXpNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSSxFQUFBLENBQUtXLEVBQUFBLFNBQUksT0FBTyxNQUFNLE9BQU8sRUFBV0EsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWlCVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsRUFBQSxLQWN4WFMsRUFBQUEsbUJBQWtHLE1BQUEsQ0FBNUYsTUFBS0MsRUFBQUEsZUFBQSxDQUFBLHlCQUE2QkMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFNb04sU0FBYXpNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFNBQVMsQ0FBQSxDQUFBLGNBRy9GUyxFQUFBQSxtQkFRTSxNQUFBLENBUkEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEdBQUlXLFFBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVNXLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBLENBQUEsR0FDdkZTLEVBQUFBLG1CQUF3Qiw4QkFBZkosRUFBQSxLQUFLLEVBQUEsQ0FBQSxFQUdORCxFQUFNLHNCQUZkRyxFQUFBQSxtQkFLTyxPQUFBLE9BSkosTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxXQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQSxDQUFBLEVBRXhDLHVCQUNLQSxRQUFBSSxDQUFBLEVBQWFYLEVBQU0sTUFBTSxHQUFJLEtBQ25DLENBQUEseUhDdEVKd04sR0FBZSxDQUFBLG9QQWtCZixNQUFNeE4sRUFBUUMsRUFTUndOLEVBQVVyTSxFQUFBQSxJQUFJcEIsRUFBTSxPQUFPLEVBRWpDcUIsT0FBQUEsRUFBQUEsTUFDRSxJQUFNckIsRUFBTSxRQUNaLENBQUNzTixFQUFVSSxJQUFhLEVBQ2xCSixJQUFhSSxHQUFZSixJQUFhRyxFQUFRLFNBQ2hEQSxFQUFRLE1BQVFILEVBRXBCLENBQUEsd0JBS0ZuTixFQUFBQSxtQkF5RE0sTUFBQSxDQXhESCxNQUFLRyxFQUFBQSxlQUFBLG9CQUFvQ0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBWVcsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsSUFBV0ksRUFBTSxVQUFRLFVBQUEsS0FTMUpLLEVBQUFBLG1CQU9FLFFBQUEsQ0FOQyxRQUFTb04sRUFBQSxNQUNULE1BQUtuTixFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLElBQUksQ0FBQSxFQUN4QixHQUFJSSxFQUFNLFFBQ1gsS0FBSyxHQUNMLEtBQUssUUFDTCxNQUFNLEVBQUEsY0FHUkssRUFBQUEsbUJBaUJNLE1BQUEsQ0FoQkgsTUFBS0MsRUFBQUEsZUFBQSwyQkFBK0NDLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBYTZOLEVBQUEsTUFBVWxOLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sS0FBT1csRUFBQUEsU0FBSSxPQUFPLE1BQU0sUUFBaUJBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sUUFBaUJXLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQVk2TixFQUFBLE9BQU8sU0FBQSxLQWVyWXBOLEVBQUFBLG1CQUFzRyxNQUFBLENBQWhHLGlEQUFrQ0UsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFNSSxFQUFNLFNBQVdPLEVBQUFBLFNBQUksR0FBRyxTQUFTLENBQUEsQ0FBQSxjQUduR0YsRUFBQUEsbUJBa0JRLFFBQUEsQ0FqQkwsTUFBS0MsRUFBQUEsZUFBQSxDQUFZQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEdBQVlXLFFBQUFYLENBQUEsRUFBSSxNQUFNLFFBQWlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQWdCVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsRUFBQSxHQVE3SyxJQUFLSSxFQUFNLE9BQUEsR0FFWkssRUFBQUEsbUJBQXdCLDhCQUFmSixFQUFBLEtBQUssRUFBQSxDQUFBLEVBR05ELEVBQU0sc0JBRmRHLEVBQUFBLG1CQUtPLE9BQUEsT0FKSixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFdBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsRUFFeEMsdUJBQ0tBLFFBQUFJLENBQUEsRUFBYVgsRUFBTSxNQUFNLEdBQUksS0FDbkMsQ0FBQSwwRkM3Rk8yTixHQUFTLENBQ3BCLE9BQVFoTixFQUNSLE1BQU9NLEdBQ1AsTUFBT0MsRUFDVCxFQUVhME0sR0FBZSxDQUMxQixNQUFPLGVBQ1AsbUJBQW9CLGtCQUNwQixXQUFZLGdCQUNaLE1BQ0UsNk1BQ0YsZ0JBQWlCLGlFQUNqQixNQUFPLG1EQUNQLE1BQU8sOERBQ1AsSUFBSyxTQUNQLEVDbkJhQyxHQUFZLENBQ3ZCLG1CQUFvQnRDLEdBQVlxQyxHQUFhLGtCQUFrQixFQUMvRCxZQUFhckMsR0FBWXFDLEdBQWEsVUFBVSxFQUNoRCxNQUFPckMsR0FBWXFDLEdBQWEsTUFBTyxxREFBcUQsRUFDNUYsT0FBUXJDLEdBQVlxQyxHQUFhLGdCQUFpQixzQkFBc0IsRUFDeEUsTUFBT3JDLEdBQVlxQyxHQUFhLE1BQU8sNEJBQTRCLEVBQ25FLElBQUtyQyxHQUFZcUMsR0FBYSxJQUFLLHdCQUF3QixDQUM3RCxFQWlCYUUsR0FBZ0IsQ0FDM0IsTUFBTyxRQUNQLEtBQU0sTUFDUixpakJDSEUsTUFBTTlOLEVBQVFDLEVBaUJSMkQsRUFBT0MsRUFFUDhJLEVBQWF6SyxFQUFBQSx1QkFBc0MsRUFFbkQwSyxFQUFjckMsR0FBQSxFQUVkdUMsRUFBVzFMLEVBQUFBLElBQXNCa0ssR0FBa0IsUUFBUSxFQUMzRHlDLEVBQVczTSxFQUFBQSxJQUFhLEVBQUssRUFDN0I0TSxFQUFVQyxFQUFBQSxNQUFBLEVBQ1ZwQixFQUFlekwsRUFBQUEsSUFBYSxFQUFLLEVBQ2pDOE0sRUFBZ0I5TSxFQUFBQSxJQUE4QixJQUFJLEVBRWxEMkwsRUFBaUJ2SixFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRmlOLEVBQVl6SixFQUFBQSxTQUFTLElBQ3JCMEosRUFBaUIsTUFBYyxHQUM5QkwsRUFBYSxNQUNYLENBQUNDLEVBQVMsTUFBTSxNQURTLEVBRWpDLEVBQ0tJLEVBQW1CMUosRUFBQUEsU0FBUyxJQUFNeEQsRUFBTSxRQUFVLEVBQUUsRUFDcERtTyxFQUFlM0ssRUFBQUEsU0FBUyxJQUFNdUssRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTVLLEVBQUFBLFNBQVMsSUFBTW1KLEVBQVcsUUFBVSxFQUFFLEVBQ2hEUSxFQUF3QjNKLFdBQVMsSUFBT3lKLEVBQVUsT0FBU0gsRUFBUyxNQUFNLFNBQVk5TSxFQUFNLGNBQWMsRUFFMUdxTyxFQUFnQixJQUFNLE9BQzFCLE1BQU05RyxFQUFRLElBQUksV0FBVyxXQUFXLEdBQ3hDckQsRUFBQWdLLEdBQUEsWUFBQUEsRUFBZSxRQUFmLE1BQUFoSyxFQUFzQixjQUFjcUQsRUFDdEMsRUFFTStHLEVBQWMsSUFBTSxDQUN4QlAsRUFBUyxNQUFRLEdBQ2IvTixFQUFNLGVBQWlCOE4sR0FBYyxVQUFvQixNQUFRLEdBQ3ZFLEVBRU1TLEVBQWlCLElBQU0sQ0FDM0JSLEVBQVMsTUFBUSxHQUNiL04sRUFBTSxlQUFpQjhOLEdBQWMsU0FBbUIsTUFBUSxHQUN0RSxFQUVBVCxPQUFBQSxFQUFBQSxZQUFZLElBQU0sQ0FDaEJQLEVBQVMsTUFBUVosR0FBeUIsQ0FDeEMsZUFBZ0JsTSxFQUFNLE1BQ3RCLFNBQVVBLEVBQU0sU0FDaEIsTUFBTzJNLENBQUEsQ0FDUixDQUNILENBQUMsRUFFRHRMLEVBQUFBLE1BQ0UsSUFBTXVMLEdBQUEsWUFBQUEsRUFBYSxnQkFBZ0IsTUFDbENVLEdBQWEsQ0FDUkEsTUFBdUIsTUFBUSxHQUNyQyxFQUNBLENBQUUsVUFBVyxFQUFBLENBQUssRUFHcEJqTSxFQUFBQSxNQUNFeUwsRUFDQSxJQUFNLENBQ0psSixFQUFLLFFBQVNrSixFQUFTLE1BQU0sS0FBSyxDQUNwQyxFQUNBLENBQUUsS0FBTSxHQUFNLFVBQVcsRUFBQSxDQUFLLHdCQUtoQzNNLEVBQUFBLG1CQThHTSxNQUFBLENBN0dILE1BQUtHLEVBQUFBLGVBQUEscUJBQXFDQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQWNXLFFBQUFYLENBQUEsRUFBSSxJQUFJLFFBQWVLLEVBQUEsVUFBUSxXQUFzQmdOLEVBQUEsT0FBUyxPQUFBLEtBU2xLNU0sRUFBQUEsbUJBNkZNLE1BQUEsQ0E1RkgsTUFBS0MsRUFBQUEsZUFBQSxxQkFBeUNDLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWlCSSxFQUFNLFNBQVdPLEVBQUFBLFNBQUksT0FBTyxZQUFXLEdBQWVBLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEdBQUcsTUFBQSxHQVc3UixRQUFPeU8sQ0FBQSxHQUVSaE8sRUFBQUEsbUJBd0VNLE1BQUEsQ0F4RUEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBUVcsRUFBQUEsU0FBSSxNQUFNLElBQUksQ0FBQSxDQUFBLEdBWS9ETixFQUFBLHFCQVhSRSxFQUFBQSxtQkFjUSxRQUFBLE9BYkwsTUFBS0csRUFBQUEsZUFBQSxDQUFnQjZOLEVBQUEsTUFBWSxDQUFBLFlBQWlCNU4sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLEVBQUlXLEVBQUFBLFNBQUksS0FBSyxLQUFLLFFBQXFCQSxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFzQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLElBQUksS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssS0FBa0JxTixFQUFBLE9BQWExTSxXQUFJLEtBQUssTUFBTSxRQUFRLFFBQXFCQSxRQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFBLEdBU2xVLElBQUtXLEVBQUFBLE1BQUF5TixDQUFBLENBQUEsb0JBR0hqQixFQUFBLEtBQWMsRUFBQSxHQUFBM00sRUFBQSxnREFHbkJDLEVBQUFBLG1CQXNEUyxTQUFBLENBckROLE1BQUtDLEVBQUFBLGVBQUEsQ0FBZ0JDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQWtCSyxFQUFBLFVBQVlNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFlBQXlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQUEsR0FPbkwsU0FBVUssRUFBQSxTQUNWLEtBQU1BLEVBQUEsYUFDSCxnQkFBSixJQUFJaU8sRUFDSCxTQUFVak8sRUFBQSxTQUNWLFFBQU9xTyxFQUNQLFdBQVVDLEVBQ1YsR0FBSWhPLEVBQUFBLE1BQUF5TixDQUFBLHVDQUNJckIsRUFBVSxNQUFBdkgsRUFBQSxJQUVuQmxGLFlBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkEwQld3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBMUJrQmxGLEVBQU0sVUFBbEJ3Tyx3REFLTkEsRUFBK0IsdUJBSnhDck8sRUFBQUEsbUJBY1csV0FBQSxDQWJSLE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUEsRUFDOUMsSUFBTTRPLEVBQStCLE1BQ3JDLE1BQVFBLEVBQStCLEtBQUEsSUFHeEN0TyxZQUFBLEVBQUEsRUFBQUMsRUFBQUEsbUJBT1N3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBSFdzSixFQUErQixRQUExQ0Msa0JBSlR0TyxFQUFBQSxtQkFPUyxTQUFBLENBTk4sTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQSxFQUM5QyxJQUFLNk8sRUFBTyxNQUNaLE1BQU9BLEVBQU8sS0FBQSxFQUdacE0sRUFBQUEsZ0JBQUFvTSxFQUFPLEtBQUssRUFBQSxHQUFBdkUsRUFBQSxrQ0FJbkIvSixFQUFBQSxtQkFRUyxTQUFBLENBUE4sTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQSxFQUM5QyxJQUFNNE8sRUFBMEIsTUFDaEMsU0FBVTdCLEVBQUEsUUFBZ0I2QixFQUEwQixTQUFlLE9BQ25FLE1BQVFBLEVBQTBCLEtBQUEsRUFHL0JuTSxFQUFBQSxnQkFBQW1NLEVBQTBCLEtBQUssRUFBQSxHQUFBckUsRUFBQSxFQUFBLCtCQUl2Q2hLLEVBQUFBLG1CQVFTd0UsRUFBQUEsU0FBQSxLQUFBTyxFQUFBQSxXQUhVakYsRUFBQSxRQUFWd08sa0JBTFR0TyxFQUFBQSxtQkFRUyxTQUFBLENBUE4sTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQSxFQUM5QyxJQUFLNk8sRUFBTyxNQUNaLFNBQVU5QixFQUFBLFFBQWU4QixFQUFPLFNBQWUsT0FDL0MsTUFBT0EsRUFBTyxLQUFBLEVBR1pwTSxFQUFBQSxnQkFBQW9NLEVBQU8sS0FBSyxFQUFBLEdBQUFDLEVBQUEsbUNBckNSL0IsRUFBQSxLQUFVLENBQUEsT0EwQ3ZCckssRUFBQUEsWUFJRUMsRUFBQSxDQUhDLE1BQUtqQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLFNBQVVXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxZQUFZLE1BQU9XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBRyxDQUFBLEVBQ2xHLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssWUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsc0NBT1IwTSxFQUFBLHFCQUhSdEwsRUFBQUEsWUFJRTBMLEdBQUEsT0FIQyxXQUFVTixFQUFBLE1BQ1YsUUFBU0UsRUFBQSxLQUFBLGlIQ3JNSDlCLEdBQXNCLDhCQStCdEJzRCxHQUFrQixDQUFDeEMsRUFBaUN5QyxJQUUzRCxPQUFPekMsR0FBbUIsVUFBWUEsRUFBZSxPQUFTLEVBQVVBLEVBRXJFLE9BQU95QyxHQUFpQixVQUFZQSxFQUFhLE9BQVMsRUFBSUEsRUFBZXZELEdBTXpFd0QsR0FBbUIsQ0FBQzFDLEVBQWlDeUMsSUFDaEV6QyxJQUFtQixJQUFTeUMsSUFBaUIsR0FLbENoRCxHQUF3QixDQUFDLENBQUUsVUFBQUMsRUFBVyxVQUFBQyxFQUFXLFNBQUFDLEVBQVUsTUFBQUwsS0FBOEIsQ0FDcEcsTUFBTU0sRUFBdUJOLEVBQU0sU0FBVyxHQUFLLENBQUNLLEVBQzlDRSxFQUFZSixHQUFhSCxFQUFNLE9BQVNHLEVBRzlDLE1BQU8sRUFGWSxDQUFDRyxHQUF3QkYsR0FBYUosRUFBTSxPQUFTSSxJQUVsRCxDQUFDRyxDQUN6QixFQW1FYTZDLEdBQXdCLENBQUMsQ0FDcEMsTUFBQUMsRUFDQSxlQUFBNUMsRUFDQSxVQUFBTixFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFBVyxHQUNYLFdBQUFLLEVBQ0EsTUFBQVYsQ0FDRixJQVFNLENBS0osR0FGQXFELEVBQU0sTUFBUTVDLEdBQWtDLEdBRTVDLENBQUM0QyxFQUFNLE9BQVMzQyxFQUFZLENBQzlCLE1BQU1DLEVBQWFDLElBQWlCWixHQUFBLFlBQUFBLEVBQU8sUUFBUyxHQUFJVSxDQUFVLEVBRTdEQyxFQUFXLFFBQ2QwQyxFQUFNLE1BQVExQyxFQUFXLFFBRTdCLENBRUEsR0FBSSxDQUFDMEMsRUFBTSxRQUFVbEQsR0FBYUMsR0FBWSxDQUM1QyxNQUFNUyxFQUFtQkMsR0FBZSxDQUN0QyxVQUFBWCxFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFDQSxPQUFPTCxHQUFBLFlBQUFBLEVBQU8sUUFBUyxFQUFBLENBQ3hCLEVBRUlhLEVBQWlCLFFBQ3BCd0MsRUFBTSxNQUFReEMsRUFBaUIsUUFFbkMsQ0FDRixFQXdCYUMsR0FBaUIsQ0FBQyxDQUM3QixVQUFBWCxFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFBVyxHQUNYLE1BQUFMLENBQ0YsSUFBMEMsQ0FDeEMsTUFBTWUsRUFBVyxDQUNmLFFBQVMsR0FDVCxNQUFPLEVBQUEsRUFVVCxPQVBBQSxFQUFTLE1BQVFiLEdBQXNCLENBQ3JDLFVBQUFDLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUNBLE1BQUFMLENBQUEsQ0FDRCxFQUVHZSxFQUFTLFFBRWJBLEVBQVMsUUFBVXBCLEdBRWZRLEdBQWFDLEVBQ2ZXLEVBQVMsUUFBVSxnQ0FBZ0NYLENBQVMsUUFBUUQsQ0FBUyx5QkFDcEVBLEVBQ1RZLEVBQVMsUUFBVSxxQ0FBcUNaLENBQVMseUJBQ3hEQyxJQUNUVyxFQUFTLFFBQVUscUNBQXFDWCxDQUFTLDJCQUc1RFcsQ0FDVCxFQUtPLFNBQVNILEdBQWlCWixFQUFlVSxFQUF1RSxDQUNySCxVQUFXTSxLQUFhTixFQUFZLENBQ2xDLE1BQU1DLEVBQWFLLEVBQVVoQixDQUFLLEVBQ2xDLEdBQUksQ0FBQ1csRUFBVyxNQUNkLE9BQU9BLENBRVgsQ0FFQSxNQUFPLENBQ0wsUUFBUyxHQUNULE1BQU8sRUFBQSxDQUVYLG1JQ3ZQRW1CLEdBQWUsQ0FBQSxtVkFvQmYsTUFBTXhOLEVBQVFDLEVBVVI4TyxFQUFRM04sRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUN2QitOLEVBQVczTSxFQUFBQSxJQUFJLEVBQUssRUFDcEJSLEVBQVFRLEVBQUFBLElBQThCLElBQUksRUFDMUMySyxFQUFXM0ssRUFBQUEsSUFBSXBCLEVBQU0sUUFBUSxFQUM3QjBMLEVBQVF0SyxFQUFBQSxJQUF3QnBCLEVBQU0sS0FBSyxFQUUzQ2dQLEVBQWV4TCxFQUFBQSxTQUFTLElBQU1tTCxHQUFnQjNPLEVBQU0sTUFBTytPLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFaEMsRUFBaUJ2SixFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRmlQLEVBQVd6TCxFQUFBQSxTQUFTLElBQU94RCxFQUFNLFVBQVksQ0FBQzBMLEVBQU0sT0FBVW1ELEdBQWlCRSxFQUFNLE1BQU8vTyxFQUFNLEtBQUssQ0FBQyxFQUN4R21PLEVBQWUzSyxFQUFBQSxTQUFTLElBQU11SyxFQUFTLE9BQVMsQ0FBQ0ssRUFBUSxLQUFLLEVBQzlEQSxFQUFVNUssRUFBQUEsU0FBUyxJQUFNa0ksRUFBTSxRQUFVLE1BQVMsRUFFbEQyQyxFQUFnQixJQUFNLE9BQzFCLE1BQU05RyxFQUFRLElBQUksV0FBVyxXQUFXLEdBQ3hDckQsRUFBQXRELEdBQUEsWUFBQUEsRUFBTyxRQUFQLE1BQUFzRCxFQUFjLGNBQWNxRCxFQUM5QixFQUVNK0csRUFBYyxJQUFNLENBQ3hCUCxFQUFTLE1BQVEsRUFDbkIsRUFFTVEsRUFBaUIsSUFBTSxDQUMzQlIsRUFBUyxNQUFRLEVBQ25CLEVBRUExTSxPQUFBQSxFQUFBQSxNQUNFLElBQU1yQixFQUFNLE1BQ1osQ0FBQ3NOLEVBQVVJLElBQWEsRUFDbEJKLElBQWFJLEdBQVlKLElBQWE1QixFQUFNLFNBQzlDQSxFQUFNLE1BQVE0QixFQUVsQixDQUFBLEVBR0Y0QixFQUFhLENBQUUsTUFBQUgsRUFBTyxNQUFBckQsRUFBTyx3QkFJN0J2TCxFQUFBQSxtQkF3SE0sTUFBQSxDQXZISCxNQUFLRyxFQUFBQSxlQUFBLHFCQUFxQ0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlSyxFQUFBLFVBQVEsV0FBc0JnUCxFQUFBLE9BQVEsT0FBQSxLQVNqSzVPLEVBQUFBLG1CQTZGTSxNQUFBLENBNUZILE1BQUtDLEVBQUFBLGVBQUEscUJBQXlDQyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQkksRUFBTSxTQUFXTyxFQUFBQSxTQUFJLE9BQU8sWUFBVyxHQUFlQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE1BQUEsR0FXN1IsUUFBT3lPLENBQUEsR0FFUmhPLEVBQUFBLG1CQXdFTSxNQUFBLENBeEVBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQVFXLEVBQUFBLFNBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQVkvRE4sRUFBQSxxQkFYUkUsRUFBQUEsbUJBY1EsUUFBQSxPQWJMLE1BQUtHLEVBQUFBLGVBQUEsQ0FBZ0I2TixFQUFBLE1BQVksQ0FBQSxZQUFpQjVOLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxRQUFxQkEsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBc0JXLFFBQUFYLENBQUEsRUFBSSxZQUFZLEtBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFJLEtBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLEtBQWtCcVAsRUFBQSxPQUFZMU8sV0FBSSxLQUFLLE1BQU0sUUFBUSxRQUFxQkEsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBQSxHQVNqVSxJQUFLSSxFQUFNLE9BQUEsb0JBR1QrTSxFQUFBLEtBQWMsRUFBQSxHQUFBM00sRUFBQSxnREFHbkJDLEVBQUFBLG1CQXNEUyxTQUFBLENBckROLE1BQUtDLEVBQUFBLGVBQUEsQ0FBZ0JDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE9BQU8sS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQWtCSyxFQUFBLFVBQVlNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFlBQXlCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQUEsR0FPbkwsU0FBVUssRUFBQSxTQUNWLEtBQU1BLEVBQUEsYUFDSCxRQUFKLElBQUlXLEVBQ0gsU0FBVW1MLEVBQUEsTUFDVixRQUFPdUMsRUFDUCxXQUFVQyxFQUNWLEdBQUl2TyxFQUFNLDZDQUNGMEwsRUFBSyxNQUFBdEcsRUFBQSxJQUVkbEYsWUFBQSxFQUFBLEVBQUFDLEVBQUFBLG1CQTBCV3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0ExQmtCbEYsRUFBTSxVQUFsQndPLHdEQUtOQSxFQUErQix1QkFKeENyTyxFQUFBQSxtQkFjVyxXQUFBLENBYlIsTUFBS0csRUFBQUEsZUFBQSxDQUFHQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQSxFQUM5QyxJQUFNNE8sRUFBK0IsTUFDckMsTUFBUUEsRUFBK0IsS0FBQSxJQUd4Q3RPLFlBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkFPU3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FIV3NKLEVBQStCLFFBQTFDQyxrQkFKVHRPLEVBQUFBLG1CQU9TLFNBQUEsQ0FOTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQUs2TyxFQUFPLE1BQ1osTUFBT0EsRUFBTyxLQUFBLEVBR1pwTSxFQUFBQSxnQkFBQW9NLEVBQU8sS0FBSyxFQUFBLEdBQUF2RSxFQUFBLGtDQUluQi9KLEVBQUFBLG1CQVFTLFNBQUEsQ0FQTixNQUFLRyxFQUFBQSxlQUFBLENBQUdDLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBLEVBQzlDLElBQU00TyxFQUEwQixNQUNoQyxTQUFVOUMsRUFBQSxRQUFXOEMsRUFBMEIsU0FBZSxPQUM5RCxNQUFRQSxFQUEwQixLQUFBLEVBRy9Cbk0sRUFBQUEsZ0JBQUFtTSxFQUEwQixLQUFLLEVBQUEsR0FBQXJFLEVBQUEsRUFBQSwrQkFJdkNoSyxFQUFBQSxtQkFRU3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FIVWpGLEVBQUEsUUFBVndPLGtCQUxUdE8sRUFBQUEsbUJBUVMsU0FBQSxDQVBOLE1BQUtHLEVBQUFBLGVBQUEsQ0FBR0MsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUEsRUFDOUMsSUFBSzZPLEVBQU8sTUFDWixTQUFVL0MsRUFBQSxRQUFVK0MsRUFBTyxTQUFlLE9BQzFDLE1BQU9BLEVBQU8sS0FBQSxFQUdacE0sRUFBQUEsZ0JBQUFvTSxFQUFPLEtBQUssRUFBQSxHQUFBQyxFQUFBLG1DQXJDUmhELEVBQUEsS0FBSyxDQUFBLE9BMENsQnBKLEVBQUFBLFlBSUVDLEVBQUEsQ0FIQyxNQUFLakMsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFVVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksWUFBWSxNQUFPVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxlQUFlLEdBQUcsQ0FBQSxFQUNsRyxLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFlBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLHNDQU1SVCxFQUFNLGdCQUFrQmlQLEVBQUEscUJBRmhDOU8sRUFBQUEsbUJBY00sTUFBQSxPQWJILHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxTQUFJLElBQUksT0FBTyxDQUFBLENBQUEsR0FPcEQwTyxFQUFBLHFCQUpScE4sRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHVCQUFPLEVBQUUsRUFDVCxLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSx1REFJZEosRUFBQUEsbUJBRU0sTUFBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQSxDQUFBLEVBQzlCeUMsRUFBQUEsZ0JBQUE0TSxFQUFBLE1BQVdELEVBQUEsTUFBZWhQLEVBQU0sY0FBYyxFQUFBLENBQUEsQ0FBQSxxRkM3TDVDbVAsRUFBa0IsQ0FDN0IsS0FBTSxPQUNOLGVBQWdCLGlCQUNoQixNQUFPLFFBQ1AsTUFBTyxRQUNQLE9BQVEsU0FDUixTQUFVLFdBQ1YsT0FBUSxTQUNSLElBQUssTUFDTCxLQUFNLE9BQ04sS0FBTSxPQUNOLElBQUssTUFDTCxLQUFNLE1BQ1IsRUFJYUMsR0FBYSxDQUN4QixRQUFTLFVBQ1QsTUFBTyxRQUNQLFFBQVMsVUFDVCxPQUFRLFNBQ1IsSUFBSyxNQUNMLEtBQU0sT0FDTixJQUFLLEtBQ1AsRUNyQmFDLEdBQW1CLENBQUNDLEVBQXFCQyxJQUFpRCxDQUNyRyxHQUFJQSxFQUFXLE9BQU9BLEVBRXRCLE9BQVFELEVBQUEsQ0FDTixLQUFLSCxFQUFnQixJQUNuQixPQUFPQyxHQUFXLElBQ3BCLEtBQUtELEVBQWdCLE9BQ25CLE9BQU9DLEdBQVcsT0FDcEIsS0FBS0QsRUFBZ0IsT0FDbkIsT0FBT0MsR0FBVyxRQUNwQixLQUFLRCxFQUFnQixNQUNuQixPQUFPQyxHQUFXLE1BQ3BCLEtBQUtELEVBQWdCLElBQ25CLE9BQU9DLEdBQVcsR0FBQSxDQUl4Qiw0MEJDb0JFLE1BQU1wUCxFQUFRQyxFQXlCUjJELEVBQU9DLEVBRVA4SSxFQUFhekssRUFBQUEsdUJBQXNDLEVBRW5EMEssRUFBY3JDLEdBQUEsRUFFZHVDLEVBQVcxTCxFQUFBQSxJQUFzQmtLLEdBQWtCLFFBQVEsRUFDM0R5QyxFQUFXM00sRUFBQUEsSUFBYSxFQUFLLEVBQzdCb08sRUFBZXBPLEVBQUFBLElBQTZCLElBQUksRUFDaER5TCxFQUFlekwsRUFBQUEsSUFBYSxFQUFLLEVBQ2pDcU8sRUFBZXJPLEVBQUFBLElBQWEsRUFBSyxFQUVqQzJMLEVBQWlCdkosRUFBQUEsU0FBUyxJQUFPeEQsRUFBTSxVQUFZQSxFQUFNLE1BQVEsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNsR2lOLEVBQVl6SixFQUFBQSxTQUFTLElBQ3JCMEosRUFBaUIsTUFBYyxHQUM5QkwsRUFBYSxNQUNYLENBQUNDLEVBQVMsTUFBTSxNQURTLEVBRWpDLEVBQ0tJLEVBQW1CMUosRUFBQUEsU0FBUyxJQUFNeEQsRUFBTSxRQUFVLEVBQUUsRUFDcERtTyxFQUFlM0ssRUFBQUEsU0FBUyxJQUFNdUssRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5RHNCLEVBQXFCbE0sRUFBQUEsU0FBZ0MsSUFBTTZMLEdBQWlCclAsRUFBTSxLQUFNQSxFQUFNLFNBQVMsQ0FBQyxFQUN4RzJQLEVBQVluTSxFQUFBQSxTQUFTLElBQ3pCeEQsRUFBTSxPQUFTbVAsRUFBZ0IsVUFBWU0sRUFBYSxRQUFVLEdBQU9OLEVBQWdCLEtBQU9uUCxFQUFNLElBQUEsRUFFbEdvTyxFQUFVNUssRUFBQUEsU0FBUyxJQUFNbUosRUFBVyxRQUFVLEVBQUUsRUFDaERpRCxFQUF3QnBNLEVBQUFBLFNBQzVCLElBQU14RCxFQUFNLFVBQVkyTSxFQUFXLE9BQVMzTSxFQUFNLE9BQVNtUCxFQUFnQixRQUFBLEVBRXZFVSxFQUEyQnJNLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sT0FBU21QLEVBQWdCLFFBQVEsRUFDakZoQyxFQUF3QjNKLFdBQVMsSUFBT3lKLEVBQVUsT0FBU0gsRUFBUyxNQUFNLFNBQVk5TSxFQUFNLGNBQWMsRUFFMUc4UCxFQUFjLElBQU0sT0FDeEJuRCxFQUFXLE1BQVEsSUFDbkJ6SSxFQUFBc0wsRUFBYSxRQUFiLE1BQUF0TCxFQUFvQixPQUN0QixFQUVNb0ssRUFBYyxJQUFNLENBQ3hCUCxFQUFTLE1BQVEsR0FDYi9OLEVBQU0sZUFBaUI4TixHQUFjLFVBQW9CLE1BQVEsR0FDdkUsRUFFTVMsRUFBaUIsSUFBTSxDQUMzQlIsRUFBUyxNQUFRLEdBQ2IvTixFQUFNLGVBQWlCOE4sR0FBYyxTQUFtQixNQUFRLEdBQ3RFLEVBRU1pQyxFQUFtQixJQUFNLFFBQzdCN0wsRUFBQXNMLEVBQWEsUUFBYixNQUFBdEwsRUFBb0IsT0FDdEIsRUFFTThMLEVBQW9DdEYsR0FBa0IsQ0FDckRxRCxFQUFTLE9BQ1ZyRCxFQUFFLFNBQVc4RSxFQUFhLFNBQVMsZUFBQSxDQUN6QyxFQUVBbkMsT0FBQUEsRUFBQUEsWUFBWSxJQUFNLENBQ2hCUCxFQUFTLE1BQVFaLEdBQXlCLENBQ3hDLGVBQWdCbE0sRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixXQUFZQSxFQUFNLFdBQ2xCLE1BQU8yTSxDQUFBLENBQ1IsQ0FDSCxDQUFDLEVBRUR0TCxFQUFBQSxNQUNFLENBQUNzTCxFQUFZLElBQU0zTSxFQUFNLGNBQWMsRUFDdkMsSUFBTSxTQUNKLEdBQUksQ0FBQ0EsRUFBTSxlQUFnQixPQUUzQixNQUFNYyxJQUFTOEksR0FBQTFGLEVBQUF5SSxFQUFXLFFBQVgsWUFBQXpJLEVBQWtCLE1BQU0sU0FBeEIsWUFBQTBGLEVBQWdDLEtBQUssTUFBTyxPQUMzRCtDLEVBQVcsTUFBUTdMLEVBQVNkLEVBQU0sZUFBZWMsQ0FBTSxFQUFJLEVBQzdELEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQk8sRUFBQUEsTUFDRSxJQUFNdUwsR0FBQSxZQUFBQSxFQUFhLGdCQUFnQixNQUNsQ1UsR0FBYSxDQUNSQSxNQUF1QixNQUFRLEdBQ3JDLEVBQ0EsQ0FBRSxVQUFXLEVBQUEsQ0FBSyxFQUdwQmpNLEVBQUFBLE1BQ0V5TCxFQUNBLElBQU0sQ0FDSmxKLEVBQUssUUFBU2tKLEVBQVMsTUFBTSxLQUFLLENBQ3BDLEVBQ0EsQ0FBRSxLQUFNLEdBQU0sVUFBVyxFQUFBLENBQUssd0JBS2hDM00sRUFBQUEsbUJBMEhNLE1BQUEsQ0F6SEgsTUFBS0csRUFBQUEsZUFBQSxtQkFBbUNDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBY1csUUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBZUssRUFBQSxVQUFRLFdBQXNCZ04sRUFBQSxPQUFTLE9BQUEsS0FTaEs1TSxFQUFBQSxtQkF5R1EsUUFBQSxDQXhHTCxNQUFLQyxFQUFBQSxlQUFBLHlCQUE2Q0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBY1csUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBaUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBY2dRLEVBQUEsTUFBcUIsQ0FBSXJQLFdBQUksUUFBUSxNQUFNLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssR0FBRyxFQUFBLENBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsR0FBRyxFQUFXSyxFQUFBLFNBQVdNLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLFlBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLElBQUEsR0FZNVksSUFBS0ssRUFBQSxRQUNMLFFBQU84UCxFQUNQLFlBQVdDLENBQUEsR0FNSi9QLEVBQUEsMkJBSlI0QixFQUFBQSxZQUtFVSxFQUFBLE9BSkMsTUFBS2pDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUEsRUFDdEMsS0FBTU4sRUFBQSxZQUNOLEtBQU1NLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLCtEQUlkSixFQUFBQSxtQkF3RE0sTUFBQSxDQXhEQSxNQUFLQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQVF2RUssRUFBQSxzQkFQUkUsRUFBQUEsbUJBVU0sTUFBQSxPQVRILE1BQUtHLEVBQUFBLGVBQUEsMEJBQXNEQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFFBQXFCcU4sRUFBQSxPQUFhMU0sV0FBSSxLQUFLLE1BQU0sUUFBUSxRQUFxQjROLEVBQUEsTUFBWSxHQUFBLFFBQUEsc0JBUWpLbE8sRUFBQSxNQUFNLEVBQUEsQ0FBQSwrQkFHWEksRUFBQUEsbUJBOEJNLE1BQUEsQ0E5QkEsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBUVcsRUFBQUEsU0FBSSxNQUFNLElBQUksQ0FBQSxDQUFBLEdBUy9ETixFQUFBLHFCQVJSRSxFQUFBQSxtQkFXTSxNQUFBLE9BVkgsTUFBS0csRUFBQUEsZUFBQSx5QkFBeUQ2TixFQUFBLE1BQVksQ0FBQSxZQUFpQjVOLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxTQUF3QjBNLEVBQUEsT0FBYTFNLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBdUJBLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQW9CVyxRQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFBLHNCQVNyUW1OLEVBQUEsS0FBYyxFQUFBLENBQUEsZ0RBR25CMU0sRUFBQUEsbUJBZUUsUUFBQSxDQWRDLGFBQWNKLEVBQUEsYUFBWSxLQUFBLE1BQzFCLE1BQUtLLEVBQUFBLGVBQUEsQ0FBR0MsV0FBSSxNQUFNLEtBQU1BLEVBQUFBLFNBQUksS0FBSyxLQUFLLE9BQVFOLEVBQUEsVUFBWU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sV0FBVyxDQUFBLEVBQ2hGLFNBQVVLLEVBQUEsU0FDVixVQUFXeVAsRUFBQSxNQUNYLFVBQVd6UCxFQUFBLFVBQ1gsVUFBV0EsRUFBQSxVQUNYLEtBQU1BLEVBQUEsYUFDSCxlQUFKLElBQUl1UCxFQUNILFNBQVV2UCxFQUFBLFNBQ1YsS0FBTTBQLEVBQUEsTUFDTixRQUFPckIsRUFDUCxXQUFVQyxFQUNWLEdBQUl0TyxFQUFBLDZDQUNJME0sRUFBVSxNQUFBdkgsRUFBQSxnQ0FBVnVILEVBQUEsS0FBVSxDQUFBLE9BV2YxTSxFQUFBLHNCQVBSRSxFQUFBQSxtQkFVTSxNQUFBLE9BVEgsTUFBS0csRUFBQUEsZUFBQSwwQkFBc0RDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBcUJxTixFQUFBLE9BQWExTSxXQUFJLEtBQUssTUFBTSxRQUFRLFFBQXFCNE4sRUFBQSxNQUFZLEdBQUEsUUFBQSxzQkFRaktsTyxFQUFBLE1BQU0sRUFBQSxDQUFBLG1DQU9MMlAsRUFBQSxxQkFIUnpQLEVBQUFBLG1CQVVTLFNBQUEsT0FUTixRQUFPMlAsRUFDUixLQUFLLFFBQUEsR0FHTHhOLEVBQUFBLFlBSUVDLEVBQUEsQ0FIQyx3QkFBUWhDLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBLEVBQzVCLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsaUVBT1JvUCxFQUFBLHFCQUhSMVAsRUFBQUEsbUJBVVMsU0FBQSxPQVROLFFBQUswSixFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF6RSxHQUFFcUssRUFBQSxNQUFZLENBQUlBLEVBQUEsT0FDeEIsS0FBSyxRQUFBLEdBR0xuTixFQUFBQSxZQUlFQyxFQUFBLENBSEMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUM1QixLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFdBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLHlFQVFWME0sRUFBQSxxQkFIUnRMLEVBQUFBLFlBSUUwTCxHQUFBLE9BSEMsV0FBVU4sRUFBQSxNQUNWLFFBQVNFLEVBQUEsS0FBQSxpTkNwUmRLLEdBQWUsQ0FBQSxvbkJBdUNmLE1BQU14TixFQUFRQyxFQXFCUjhPLEVBQVEzTixFQUFBQSxJQUFJcEIsRUFBTSxLQUFLLEVBQ3ZCK04sRUFBVzNNLEVBQUFBLElBQUksRUFBSyxFQUNwQlIsRUFBUVEsRUFBQUEsSUFBNkIsSUFBSSxFQUN6Q3FPLEVBQWVyTyxFQUFBQSxJQUFJLEVBQUssRUFDeEJzSyxFQUFRdEssRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUV2QmdQLEVBQWV4TCxFQUFBQSxTQUFTLElBQU1tTCxHQUFnQjNPLEVBQU0sTUFBTytPLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFaEMsRUFBaUJ2SixFQUFBQSxTQUFTLElBQU94RCxFQUFNLFVBQVlBLEVBQU0sTUFBUSxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ2xHaVEsRUFBV3pNLEVBQUFBLFNBQVMsSUFBTXhELEVBQU0sVUFBWTBMLEVBQU0sS0FBSyxFQUN2RHVELEVBQVd6TCxFQUFBQSxTQUNmLElBQU94RCxFQUFNLFVBQVkwTCxFQUFNLFFBQVUsUUFBYSxDQUFDQSxFQUFNLE9BQVVtRCxHQUFpQkUsRUFBTSxNQUFPL08sRUFBTSxLQUFLLENBQUEsRUFFNUdtTyxFQUFlM0ssRUFBQUEsU0FBUyxJQUFNdUssRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTVLLEVBQUFBLFNBQVMsSUFBTWtJLEVBQU0sUUFBVSxJQUFNQSxFQUFNLFFBQVUsTUFBUyxFQUN4RWlFLEVBQVluTSxFQUFBQSxTQUFTLElBQ3pCeEQsRUFBTSxPQUFTbVAsRUFBZ0IsVUFBWU0sRUFBYSxRQUFVLEdBQU9OLEVBQWdCLEtBQU9uUCxFQUFNLElBQUEsRUFHbEc4UCxFQUFjLElBQU0sT0FDeEJwRSxFQUFNLE1BQVEsSUFDZHhILEVBQUF0RCxFQUFNLFFBQU4sTUFBQXNELEVBQWEsT0FDZixFQUVNb0ssRUFBYyxJQUFNLENBQ3hCUCxFQUFTLE1BQVEsRUFDbkIsRUFFTVEsRUFBaUIsSUFBTSxDQUMzQlIsRUFBUyxNQUFRLEdBRVpyQyxFQUFNLFFBQ1RBLEVBQU0sTUFBUSxJQUdoQndFLEVBQUEsQ0FDRixFQUVNQyxFQUFjLElBQU0sU0FDeEIsR0FBSW5RLEVBQU0sZUFBZ0IsQ0FDeEIsTUFBTWMsSUFBUzhJLEdBQUExRixFQUFBd0gsRUFBTSxRQUFOLFlBQUF4SCxFQUFhLE1BQU0sU0FBbkIsWUFBQTBGLEVBQTJCLEtBQUssTUFBTyxPQUV0RDhCLEVBQU0sTUFBUTVLLEVBQVNkLEVBQU0sZUFBZWMsQ0FBTSxFQUFJLEVBQ3hELENBQ0YsRUFFTW9QLEVBQW1CLElBQU0sQ0FDN0JwQixHQUFzQixDQUNwQixNQUFBQyxFQUNBLGVBQWdCL08sRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixXQUFZQSxFQUFNLFdBQ2xCLE1BQUEwTCxDQUFBLENBQ0QsQ0FDSCxFQUVNMEUsRUFBZTlDLEdBQXFCLENBQ3hDNUIsRUFBTSxNQUFRNEIsQ0FDaEIsRUFFQWpNLE9BQUFBLEVBQUFBLE1BQ0UsSUFBTXJCLEVBQU0sTUFDWixDQUFDc04sRUFBVUksSUFBYSxFQUNsQkosSUFBYUksR0FBWUosSUFBYTVCLEVBQU0sU0FDOUNBLEVBQU0sTUFBUTRCLEVBRWxCLENBQUEsRUFHRjRCLEVBQWEsQ0FDWCxNQUFBSCxFQUNBLFNBQVUvTyxFQUFNLFNBQ2hCLFlBQUFvUSxFQUNBLE1BQUExRSxDQUFBLENBQ0Qsd0JBSUR2TCxFQUFBQSxtQkFtSU0sTUFBQSxDQWxJSCxNQUFLRyxFQUFBQSxlQUFBLG1CQUFtQ0MsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFjVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlSyxFQUFBLFVBQVEsV0FBc0JnUCxFQUFBLE9BQVEsT0FBQSxLQVMvSjVPLEVBQUFBLG1CQXdHUSxRQUFBLENBdkdMLE1BQUtDLEVBQUFBLGVBQUEseUJBQTZDQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLElBQUksS0FBY1csUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQnFRLEVBQUEsTUFBUSxDQUFJMVAsV0FBSSxRQUFRLE1BQU0sS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBSyxHQUFHLEVBQUEsQ0FBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxHQUFHLEVBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBY0ssRUFBQSxTQUFXTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxZQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFBLEdBWS9YLElBQUtLLEVBQUEsT0FBQSxHQU1FQSxFQUFBLDJCQUpSNEIsRUFBQUEsWUFLRVUsRUFBQSxPQUpDLE1BQUtqQyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLFNBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLEVBQ3RDLEtBQU1OLEVBQUEsWUFDTixLQUFNTSxFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSwrREFJZEosRUFBQUEsbUJBeURNLE1BQUEsQ0F6REEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLENBQUEsR0FRdkVLLEVBQUEsc0JBUFJFLEVBQUFBLG1CQVVNLE1BQUEsT0FUSCxNQUFLRyxFQUFBQSxlQUFBLDBCQUFzREMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFxQnFQLEVBQUEsT0FBWTFPLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBcUI0TixFQUFBLE1BQVksR0FBQSxRQUFBLHNCQVFoS2xPLEVBQUEsTUFBTSxFQUFBLENBQUEsK0JBR1hJLEVBQUFBLG1CQStCTSxNQUFBLENBL0JBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQVFXLEVBQUFBLFNBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQVMvRE4sRUFBQSxxQkFSUkUsRUFBQUEsbUJBV00sTUFBQSxPQVZILE1BQUtHLEVBQUFBLGVBQUEseUJBQXlENk4sRUFBQSxNQUFZLENBQUEsWUFBaUI1TixFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sRUFBSVcsRUFBQUEsU0FBSSxLQUFLLEtBQUssU0FBd0IwTyxFQUFBLE9BQVkxTyxXQUFJLEtBQUssTUFBTSxRQUFRLFFBQXVCQSxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBQSxzQkFTcFFtTixFQUFBLEtBQWMsRUFBQSxDQUFBLGdEQUduQjFNLEVBQUFBLG1CQWdCRSxRQUFBLENBZkMsYUFBY0osRUFBQSxhQUFZLEtBQUEsTUFDMUIsTUFBS0ssRUFBQUEsZUFBQSxDQUFHQyxXQUFJLE1BQU0sS0FBTU4sWUFBWU0sRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sWUFBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUEsRUFDaEYsU0FBVUssRUFBQSxTQUNWLFVBQVdBLEVBQUEsVUFDWCxVQUFXQSxFQUFBLFVBQ1gsS0FBTUEsRUFBQSxhQUNILFFBQUosSUFBSVcsRUFDSCxTQUFVWCxFQUFBLFNBQ1YsS0FBTTBQLEVBQUEsTUFDTixTQUFRTyxFQUNSLFFBQU81QixFQUNQLFdBQVVDLEVBQ1YsUUFBTzRCLEVBQ1AsR0FBSWxRLEVBQUEsNkNBQ0l5TCxFQUFLLE1BQUF0RyxFQUFBLGdDQUFMc0csRUFBQSxLQUFLLENBQUEsT0FXVnpMLEVBQUEsc0JBUFJFLEVBQUFBLG1CQVVNLE1BQUEsT0FUSCxNQUFLRyxFQUFBQSxlQUFBLDBCQUFzREMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFxQnFQLEVBQUEsT0FBWTFPLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBcUI0TixFQUFBLE1BQVksR0FBQSxRQUFBLHNCQVFoS2xPLEVBQUEsTUFBTSxFQUFBLENBQUEsbUNBT0xnUSxFQUFBLE9BQVloUSxFQUFBLE9BQVNNLEVBQUFBLE1BQUE0TyxDQUFBLEVBQWdCLHdCQUg3Q2hQLEVBQUFBLG1CQVVTLFNBQUEsT0FUTixRQUFPMlAsRUFDUixLQUFLLFFBQUEsR0FHTHhOLEVBQUFBLFlBSUVDLEVBQUEsQ0FIQyx3QkFBUWhDLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBLEVBQzVCLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsaUVBT1JSLEVBQUEsT0FBU00sRUFBQUEsTUFBQTRPLENBQUEsRUFBZ0Isd0JBSGpDaFAsRUFBQUEsbUJBVVMsU0FBQSxPQVROLFFBQUswSixFQUFBLENBQUEsSUFBQUEsRUFBQSxDQUFBLEVBQUF6RSxHQUFFcUssRUFBQSxNQUFZLENBQUlBLEVBQUEsT0FDeEIsS0FBSyxRQUFBLEdBR0xuTixFQUFBQSxZQUlFQyxFQUFBLENBSEMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUM1QixLQUFNVyxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLFdBQ1gsS0FBTXhCLEVBQUFBLE1BQUFFLENBQUEsRUFBSyxLQUFBLHlFQU9WUixFQUFBLGdCQUFrQmdQLEVBQUEscUJBRjFCOU8sRUFBQUEsbUJBY00sTUFBQSxPQWJILHdCQUFRSSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFNVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFRVyxFQUFBQSxTQUFJLElBQUksT0FBTyxDQUFBLENBQUEsR0FPcEQwTyxFQUFBLHFCQUpScE4sRUFBQUEsWUFLRVUsRUFBQSxPQUpDLHVCQUFPLEVBQUUsRUFDVCxLQUFNaEMsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLEtBQU14QixFQUFBQSxNQUFBRSxDQUFBLEVBQUssS0FBQSx1REFJZEosRUFBQUEsbUJBRU0sTUFBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQSxDQUFBLG9CQUM5QnFQLEVBQUEsTUFBV0QsRUFBQSxNQUFlL08sRUFBQSxjQUFjLEVBQUEsQ0FBQSxDQUFBLHFuQkN0UGpELE1BQU1ELEVBQVFDLEVBaUJSMkQsRUFBT0MsRUFFUDhJLEVBQWF6SyxFQUFBQSx1QkFBc0MsRUFFbkQwSyxFQUFjckMsR0FBQSxFQUVkdUMsRUFBVzFMLEVBQUFBLElBQXNCa0ssR0FBa0IsUUFBUSxFQUMzRHlDLEVBQVczTSxFQUFBQSxJQUFhLEVBQUssRUFDN0J5TCxFQUFlekwsRUFBQUEsSUFBYSxFQUFLLEVBQ2pDaVAsRUFBa0JqUCxFQUFBQSxJQUFnQyxJQUFJLEVBRXREMkwsRUFBaUJ2SixFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRmlOLEVBQVl6SixFQUFBQSxTQUFTLElBQ3JCMEosRUFBaUIsTUFBYyxHQUM5QkwsRUFBYSxNQUNYLENBQUNDLEVBQVMsTUFBTSxNQURTLEVBRWpDLEVBQ0tJLEVBQW1CMUosRUFBQUEsU0FBUyxJQUFNeEQsRUFBTSxRQUFVLEVBQUUsRUFDcERtTyxFQUFlM0ssRUFBQUEsU0FBUyxJQUFNdUssRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTVLLEVBQUFBLFNBQVMsSUFBTW1KLEVBQVcsUUFBVSxFQUFFLEVBQ2hEUSxFQUF3QjNKLFdBQVMsSUFBT3lKLEVBQVUsT0FBU0gsRUFBUyxNQUFNLFNBQVk5TSxFQUFNLGNBQWMsRUFFMUdzTyxFQUFjLElBQU0sQ0FDeEJQLEVBQVMsTUFBUSxHQUNiL04sRUFBTSxlQUFpQjhOLEdBQWMsVUFBb0IsTUFBUSxHQUN2RSxFQUVNUyxFQUFpQixJQUFNLENBQzNCUixFQUFTLE1BQVEsR0FDYi9OLEVBQU0sZUFBaUI4TixHQUFjLFNBQW1CLE1BQVEsR0FDdEUsRUFFTWlDLEVBQW1CLElBQU0sUUFDN0I3TCxFQUFBbU0sRUFBZ0IsUUFBaEIsTUFBQW5NLEVBQXVCLE9BQ3pCLEVBRU1vTSxFQUF1QzVGLEdBQWtCLENBQ3hEcUQsRUFBUyxPQUNWckQsRUFBRSxTQUFXMkYsRUFBZ0IsU0FBUyxlQUFBLENBQzVDLEVBRUFoRCxPQUFBQSxFQUFBQSxZQUFZLElBQU0sQ0FDaEJQLEVBQVMsTUFBUVosR0FBeUIsQ0FDeEMsZUFBZ0JsTSxFQUFNLE1BQ3RCLFVBQVdBLEVBQU0sVUFDakIsVUFBV0EsRUFBTSxVQUNqQixTQUFVQSxFQUFNLFNBQ2hCLFdBQVlBLEVBQU0sV0FDbEIsTUFBTzJNLENBQUEsQ0FDUixDQUNILENBQUMsRUFFRHRMLEVBQUFBLE1BQ0UsSUFBTXVMLEdBQUEsWUFBQUEsRUFBYSxnQkFBZ0IsTUFDbENVLEdBQWEsQ0FDUkEsTUFBdUIsTUFBUSxHQUNyQyxFQUNBLENBQUUsVUFBVyxFQUFBLENBQUssRUFHcEJqTSxFQUFBQSxNQUNFeUwsRUFDQSxJQUFNLENBQ0psSixFQUFLLFFBQVNrSixFQUFTLE1BQU0sS0FBSyxDQUNwQyxFQUNBLENBQUUsS0FBTSxHQUFNLFVBQVcsRUFBQSxDQUFLLHdCQUtoQzNNLEVBQUFBLG1CQW1ETSxNQUFBLENBbERILE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxzQkFBMEJDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxFQUFBQSxTQUFJLEtBQUssVUFBVSxPQUFRQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTcU4sRUFBQSxPQUFTLE9BQUEsQ0FBQSxDQUFBLEdBRXZHNU0sRUFBQUEsbUJBeUNRLFFBQUEsQ0F4Q0wsTUFBS0MsRUFBQUEsZUFBQSw2QkFBaURDLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLElBQUksS0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxPQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sSUFBQSxHQVVwUCxJQUFLSyxFQUFBLFFBQ0wsUUFBTzhQLEVBQ1AsWUFBV08sQ0FBQSxHQVVKclEsRUFBQSxxQkFSUkUsRUFBQUEsbUJBV00sTUFBQSxPQVZILE1BQUtHLEVBQUFBLGVBQUEsNkJBQXFEQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQWV1TyxFQUFBLE1BQVksQ0FBQSxZQUFpQjVOLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxTQUFvQjBNLEVBQUEsT0FBYTFNLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBbUJBLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQUEsc0JBU3ZQbU4sRUFBQSxLQUFjLEVBQUEsQ0FBQSxnREFHbkIxTSxFQUFBQSxtQkFZRSxXQUFBLENBWEMsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFPVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQVFXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLEVBQ2xGLFVBQVdLLEVBQUEsVUFDWCxVQUFXQSxFQUFBLFVBQ1gsS0FBTUEsRUFBQSxhQUNILGtCQUFKLElBQUlvUSxFQUNILFNBQVVwUSxFQUFBLFNBQ1YsS0FBTUEsRUFBQSxLQUNOLFFBQU9xTyxFQUNQLFdBQVVDLEVBQ1YsR0FBSXRPLEVBQUEsNkNBQ0kwTSxFQUFVLE1BQUF2SCxFQUFBLDZCQUFWdUgsRUFBQSxLQUFVLENBQUEsV0FPZlEsRUFBQSxxQkFIUnRMLEVBQUFBLFlBSUUwTCxHQUFBLE9BSEMsV0FBVU4sRUFBQSxNQUNWLFFBQVNFLEVBQUEsS0FBQSx1TEM1SmRLLEdBQWUsQ0FBQSwrV0EyQmYsTUFBTXhOLEVBQVFDLEVBYVI4TyxFQUFRM04sRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUN2QitOLEVBQVczTSxFQUFBQSxJQUFJLEVBQUssRUFDcEJSLEVBQVFRLEVBQUFBLElBQTZCLElBQUksRUFDekNzSyxFQUFRdEssRUFBQUEsSUFBSXBCLEVBQU0sS0FBSyxFQUV2QmdQLEVBQWV4TCxFQUFBQSxTQUFTLElBQU1tTCxHQUFnQjNPLEVBQU0sTUFBTytPLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFaEMsRUFBaUJ2SixFQUFBQSxTQUFTLElBQU94RCxFQUFNLFNBQVcsR0FBR0EsRUFBTSxLQUFLLEtBQU9BLEVBQU0sS0FBTSxFQUNuRmlQLEVBQVd6TCxFQUFBQSxTQUNmLElBQU94RCxFQUFNLFVBQVkwTCxFQUFNLFFBQVUsUUFBYSxDQUFDQSxFQUFNLE9BQVVtRCxHQUFpQkUsRUFBTSxNQUFPL08sRUFBTSxLQUFLLENBQUEsRUFFNUdtTyxFQUFlM0ssRUFBQUEsU0FBUyxJQUFNdUssRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVTVLLEVBQUFBLFNBQVMsSUFBTWtJLEVBQU0sUUFBVSxJQUFNQSxFQUFNLFFBQVUsTUFBUyxFQUV4RTRDLEVBQWMsSUFBTSxDQUN4QlAsRUFBUyxNQUFRLEVBQ25CLEVBRU1RLEVBQWlCLElBQU0sQ0FDM0JSLEVBQVMsTUFBUSxHQUVackMsRUFBTSxRQUNUQSxFQUFNLE1BQVEsR0FFbEIsRUFFTXdFLEVBQW1CLElBQ2hCcEIsR0FBc0IsQ0FDM0IsTUFBQUMsRUFDQSxlQUFnQi9PLEVBQU0sTUFDdEIsVUFBV0EsRUFBTSxVQUNqQixVQUFXQSxFQUFNLFVBQ2pCLFNBQVVBLEVBQU0sU0FDaEIsTUFBQTBMLENBQUEsQ0FDRCxFQUdIckssT0FBQUEsRUFBQUEsTUFDRSxJQUFNckIsRUFBTSxNQUNaLENBQUNzTixFQUFVSSxJQUFhLEVBQ2xCSixJQUFhSSxHQUFZSixJQUFhNUIsRUFBTSxTQUM5Q0EsRUFBTSxNQUFRNEIsRUFFbEIsQ0FBQSxFQUdGNEIsRUFBYSxDQUNYLE1BQUFILEVBQ0EsU0FBVS9PLEVBQU0sU0FDaEIsTUFBQTBMLENBQUEsQ0FDRCx3QkFJRHZMLEVBQUFBLG1CQTJETSxNQUFBLENBMURILE1BQUtHLEVBQUFBLGVBQUEsQ0FBQSxzQkFBMEJDLEVBQUFBLFNBQUksUUFBUSxLQUFNQSxFQUFBQSxTQUFJLEtBQUssVUFBVSxPQUFRQSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTcVAsRUFBQSxPQUFRLE9BQUEsQ0FBQSxDQUFBLEdBRXRHNU8sRUFBQUEsbUJBd0NRLFFBQUEsQ0F2Q0wsTUFBS0MsRUFBQUEsZUFBQSw2QkFBaURDLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWNXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssSUFBYVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsSUFBSSxLQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQWlCVyxRQUFBWCxDQUFBLEVBQUksT0FBTyxJQUFBLEdBV2xSLElBQUtLLEVBQUEsT0FBQSxHQVNFQSxFQUFBLHFCQVBSRSxFQUFBQSxtQkFVTSxNQUFBLE9BVEgsTUFBS0csRUFBQUEsZUFBQSw2QkFBcUQ2TixFQUFBLE1BQVksQ0FBQSxZQUFpQjVOLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxFQUFJVyxFQUFBQSxTQUFJLEtBQUssS0FBSyxTQUFvQjBPLEVBQUEsT0FBWTFPLFdBQUksS0FBSyxNQUFNLFFBQVEsUUFBbUJBLFFBQUFYLENBQUEsRUFBSSxlQUFlLEdBQUEsc0JBUXpObU4sRUFBQSxLQUFjLEVBQUEsQ0FBQSxnREFHbkIxTSxFQUFBQSxtQkFhRSxXQUFBLENBWkMsd0JBQVFFLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLE1BQU9XLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBLEVBQy9ELFVBQVdLLEVBQUEsVUFDWCxVQUFXQSxFQUFBLFVBQ1gsS0FBTUEsRUFBQSxhQUNILFFBQUosSUFBSVcsRUFDSCxTQUFVWCxFQUFBLFNBQ1YsS0FBTUEsRUFBQSxLQUNOLFNBQVFpUSxFQUNSLFFBQU81QixFQUNQLFdBQVVDLEVBQ1YsR0FBSXRPLEVBQUEsNkNBQ0l5TCxFQUFLLE1BQUF0RyxFQUFBLDZCQUFMc0csRUFBQSxLQUFLLENBQUEsV0FNVnpMLEVBQUEsZ0JBQWtCZ1AsRUFBQSxxQkFGMUI5TyxFQUFBQSxtQkFhTSxNQUFBLE9BWkgsd0JBQVFJLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLFNBQUksSUFBSSxPQUFPLENBQUEsQ0FBQSxHQU1wRDBPLEVBQUEscUJBSFJwTixFQUFBQSxZQUlFVSxFQUFBLE9BSEMsS0FBTWhDLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsdURBSWRKLEVBQUFBLG1CQUVNLE1BQUEsQ0FGQSx3QkFBUUUsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLENBQUEsQ0FBQSxvQkFDOUJxUCxFQUFBLE1BQVdELEVBQUEsTUFBZS9PLEVBQUEsY0FBYyxFQUFBLENBQUEsQ0FBQSxxRkNuSmpEdU4sR0FBZSxDQUFBLDRNQXVDZnROLEVBQUFBLFlBQUEyQixFQUFBQSxZQTBCWUMsRUFBQUEsd0JBVkw3QixFQUFBLE9BQU8sRUFBQSxDQWZYLE1BQUtLLEVBQUFBLGVBQUEsa0JBQWtDQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFjVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFlVyxRQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQVdXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsS0FBWVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFVBQVUsS0FBSyxJQUFXVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFBLEdBYXhSLEtBQU1LLEVBQUEsS0FDTixPQUFRQSxFQUFBLFNBQVdNLEVBQUFBLFNBQU8sTUFBUSxNQUFBLHFCQUduQyxJQUF3QixDQUF4QkYsRUFBQUEsbUJBQXdCLDhCQUFmSixFQUFBLEtBQUssRUFBQSxDQUFBLEVBTU5BLEVBQUEsNEJBSlI0QixFQUFBQSxZQUtFVSxFQUFBLE9BSkMsd0JBQVFoQyxRQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQSxFQUM1QixLQUFNSyxFQUFBLGFBQ04sS0FBTU0sRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsa0pDbEVMOFAsR0FBYSxDQUN4QixHQUFJLEtBQ0osR0FBSSxLQUNKLEdBQUksS0FDSixHQUFJLElBQ04sRUFFYUMsR0FBUSxDQUNuQixHQUFJLElBQ0osR0FBSSxJQUNKLEdBQUksS0FDSixHQUFJLElBQ04sRUNQYUMsR0FBZ0IsTUFBT0MsR0FBc0IsQ0FJeEQsTUFBTUMsRUFBTyxTQUFTLEtBRXRCLEdBQUlELEdBQ0YsR0FBSSxDQUFDQyxFQUFLLFFBQVEsWUFBYSxDQUM3QixNQUFNQyxFQUFVLE9BQU8sUUFFdkJELEVBQUssUUFBUSxZQUFjQyxFQUFRLFNBQUEsRUFDbkNELEVBQUssTUFBTSxZQUFZLG1CQUFvQixHQUFHQyxDQUFPLElBQUksRUFDekRELEVBQUssTUFBTSxZQUFZLFFBQVMsR0FBRyxFQUNuQ0EsRUFBSyxNQUFNLFlBQVksYUFBYyx3Q0FBd0MsRUFDN0VBLEVBQUssTUFBTSxZQUFZLGFBQWMsUUFBUSxFQUM3Q0EsRUFBSyxNQUFNLFlBQVksV0FBWSxPQUFPLENBSTVDLFVBRUEsTUFBTUUsV0FBQSxFQUNGLENBQUMsU0FBUyxjQUFjLGNBQWMsRUFBRyxDQUMzQyxNQUFNQyxFQUFlLFNBQVNILEVBQUssUUFBUSxhQUFlLEdBQUcsRUFLN0RBLEVBQUssTUFBTSxlQUFlLE9BQU8sRUFDakNBLEVBQUssTUFBTSxlQUFlLFdBQVcsRUFDckNBLEVBQUssTUFBTSxlQUFlLFdBQVcsRUFDckNBLEVBQUssTUFBTSxlQUFlLFVBQVUsRUFDcENBLEVBQUssTUFBTSxlQUFlLGtCQUFrQixFQUU1QyxPQUFPLFNBQVMsQ0FDZCxTQUFVLE9BQ1YsSUFBS0csQ0FBQSxDQUNOLEVBRUQsT0FBT0gsRUFBSyxRQUFRLFdBQ3RCLENBRUosRUFFYUksR0FBZSxpQkFFZkMsR0FBbUIsSUFBTSxDQUNwQyxJQUFJQyxFQUFXLFNBQVMsZUFBZUYsRUFBWSxFQUM5Q0UsSUFDSEEsRUFBVyxTQUFTLGNBQWMsS0FBSyxFQUN2Q0EsRUFBUyxHQUFLRixHQUNkRSxFQUFTLGFBQWEsaUJBQWtCLEVBQUUsRUFDMUMsU0FBUyxLQUFLLFlBQVlBLENBQVEsR0FFcENBLEVBQVMsTUFBTSxVQUFZLFNBQzdCLDZYQ3JDRSxNQUFNalIsRUFBUUMsRUFZUjJELEVBQU9DLEVBRVBxTixFQUFnRDlQLEVBQUFBLElBQUEsRUFDaEQrUCxFQUFrRC9QLEVBQUFBLElBQUEsRUFFbERnUSxFQUFTbFAsRUFBQUEsU0FBb0JqQyxFQUFBLFlBQW1CLEVBRWhEb1IsRUFBMEIsSUFBTSxRQUNwQ25OLEVBQUFpTixFQUFZLFFBQVosTUFBQWpOLEVBQW1CLFdBQ3JCLEVBRU1vTixFQUEyQixJQUFNLFFBQ3JDcE4sRUFBQWlOLEVBQVksUUFBWixNQUFBak4sRUFBbUIsT0FDckIsRUFFTXFOLEVBQXFCLElBQU0sQ0FDL0JWLEVBQUFBLFNBQVMsSUFBTSxDQUNSSyxFQUFhLFFBQ2xCQSxFQUFhLE1BQU0sVUFBWSxFQUNqQyxDQUFDLENBQ0gsRUFFTU0sRUFBUSxTQUFZLENBQ3BCeFIsRUFBTSxhQUNPLE1BQU1BLEVBQU0sWUFBQSxJQUNaLEtBR2pCb1IsRUFBTyxNQUFRLEdBQ2pCLEVBRU1LLEVBQXNCLElBQU0sQ0FDNUJ6UixFQUFNLGVBQWV3UixFQUFBLENBQzNCLEVBRU1FLEVBQXVCaEgsR0FBYSxDQUN4Q0EsRUFBRSxlQUFBLEVBQ0UxSyxFQUFNLGVBQWV3UixFQUFBLENBQzNCLEVBRUFuUSxPQUFBQSxFQUFBQSxNQUFNK1AsRUFBUSxJQUFNLENBQ2JELEVBQVksUUFDYkMsRUFBTyxPQUNUQyxFQUFBLEVBQ0FFLEVBQUEsR0FFQUQsRUFBQSxFQUVGYixHQUFjVyxFQUFPLEtBQUssRUFDNUIsQ0FBQyxFQUVETyxFQUFBQSxjQUFjLElBQU0sQ0FDbEJYLEdBQUEsQ0FDRixDQUFDLEVBRUR0SCxFQUFBQSxVQUFVLElBQU0sQ0FDVjBILEVBQU8sT0FDVEMsRUFBQSxDQUVKLENBQUMsd0JBSUR4UCxFQUFBQSxZQTRGVytQLFdBQUEsQ0E1RkEsT0FBUXJSLEVBQUFBLE1BQUF3USxFQUFBLENBQVksRUFBQSxHQUM3QjFRLEVBQUFBLG1CQTBGUyxTQUFBLENBekZOLE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSxhQUFpQkMsUUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBU1csUUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxNQUFNLENBQUEsVUFDMUYsY0FBSixJQUFJdVIsRUFDSCx3Q0FBMEJsUixFQUFBLE1BQUssRUFDL0Isd0JBQVl3UixFQUFtQixDQUFBLE1BQUEsQ0FBQSxFQUMvQixvQ0FBRCxJQUFBLENBQUEsRUFBYyxDQUFBLFNBQUEsQ0FBQSxHQUNiLHFCQUFnQkMsRUFBbUIsQ0FBQSxRQUFBLENBQUEsQ0FBQSxHQUVwQ3JSLEVBQUFBLG1CQWlGTSxNQUFBLENBaEZILE1BQUtDLEVBQUFBLGVBQUEsbUJBQTJDQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLFFBQW1CVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLElBQWVXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLE9BQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWtCVyxRQUFBWCxDQUFBLEVBQUksU0FBUyxTQUFvQlcsUUFBQVgsQ0FBQSxFQUFJLFlBQVksT0FBa0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLElBQWVXLFFBQUFYLENBQUEsRUFBSSxNQUFNLEtBQWdCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxTQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGVBQWMsQ0FBRVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxFQUFHVyxRQUFBZ1EsRUFBQSxFQUFXLEVBQUUsQ0FBQSxLQWVqYWxRLEVBQUFBLG1CQWtDUyxTQUFBLENBakNOLE1BQUtDLEVBQUFBLGVBQUEscUJBQWlEQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxJQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLEtBQWtCVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxRQUFxQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBc0JXLFFBQUFYLENBQUEsRUFBSSxRQUFRLEdBQUEsS0FrQjNUSyxFQUFBLDRCQUxSNEIsRUFBQUEsWUFNRTBDLEVBQUEsT0FMQyxLQUFNaEUsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxhQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLHVCQUFPTyxFQUFJLE1BQUEsR0FDWixNQUFNLE1BQUEsMkRBSVJ2RCxFQUFBQSxtQkFHRSxNQUFBLENBRkMsd0JBQVFFLFFBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssVUFBVSxDQUFBLEVBQ2pDLFlBQUF5QyxFQUFBQSxnQkFBUXBDLEVBQU0sS0FBRCxDQUFBLGNBUVBBLEVBQUEsNkJBTFI0QixFQUFBQSxZQU1FMEMsRUFBQSxPQUxDLE1BQUtqRSxFQUFBQSxlQUFBLENBQUdDLFdBQUksS0FBSyxLQUFLLElBQUtBLFFBQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFJLENBQUEsRUFDcEUsS0FBTVcsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxNQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQU9tTyxDQUFBLHVFQUtablIsRUFBQUEsbUJBYU0sTUFBQSxDQVpILE1BQUtDLEVBQUFBLGVBQUEsc0JBQWtEQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFVBQVUsUUFBcUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsT0FBb0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxTQUFTLEVBQUUsS0FBa0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxNQUFNLElBQUEsV0FTbE8sZUFBSixJQUFJc1IsQ0FBQSxHQUVKMU8sRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLEtBYUZvUCxFQUFBQSxPQUFPLHNCQVZmMVIsRUFBQUEsbUJBYVMsU0FBQSxPQVpOLE1BQUtHLEVBQUFBLGVBQUEscUJBQWlEQyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxJQUFJLElBQWlCVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxRQUFxQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLE9BQU8sR0FBQSxLQVd0TjRDLEVBQUFBLFdBQXNCQyxFQUFBLE9BQUEsU0FBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEseVFDL0s5QixNQUFNekMsRUFBUUMsRUFFUitFLEVBQWU5QyxFQUFBQSx1QkFBc0MsRUFFckQ0UCxFQUFvQnRPLEVBQUFBLFNBQVMsSUFBTSxJQUFJLE1BQU14RCxFQUFNLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMrUixFQUFPbE4sSUFBVUEsRUFBUSxDQUFDLENBQUMsRUFFdkdJLEVBQWVKLEdBQWtCLENBQ3JDRyxFQUFhLE1BQVFILENBQ3ZCLEVBRU1tTixFQUFzQixJQUFNLENBQ2hDaE4sRUFBYSxPQUNmLEVBRU1pTixFQUFrQixJQUFNLENBQzVCak4sRUFBYSxPQUNmLDhCQUlBN0UsRUFBQUEsbUJBOEJVLFVBQUEsQ0E3QlAsTUFBS0csRUFBQUEsZUFBQSxDQUFBLGtCQUFzQkMsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksUUFBU1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBLENBQUEsR0FFakgwQyxFQUFBQSxZQUtFaUMsRUFBQSxDQUpDLFNBQVVTLEVBQUEsT0FBWSxFQUN0QixLQUFNekUsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxhQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQU8yTyxDQUFBLHlDQUdWM1IsRUFBQUEsbUJBWUssS0FBQSxDQVpBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsU0FBSSxRQUFRLEtBQU1BLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxJQUFJLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQSxDQUFBLG9CQUNwRk8sRUFBQUEsbUJBVUt3RSxFQUFBQSxTQUFBLEtBQUFPLEVBQUFBLFdBUndCNE0sRUFBQSxNQUFwQkksa0JBRlQvUixFQUFBQSxtQkFVSyxLQUFBLENBVEYsSUFBSytSLEdBQWdCLENBR3RCNVAsRUFBQUEsWUFLRTZQLEdBQUEsQ0FKQyxTQUFVbk4sRUFBQSxRQUFpQmtOLEVBQzNCLE1BQU9BLEVBQ1AsU0FBVTNSLEVBQUFBLE1BQUE4QyxDQUFBLEVBQVMsV0FDbkIsUUFBSytCLEdBQUVILEVBQVlpTixDQUFnQixDQUFBLGtFQUsxQzVQLEVBQUFBLFlBS0VpQyxFQUFBLENBSkMsU0FBVVMsRUFBQSxPQUFnQjhNLFFBQWtCQSxFQUFBLE1BQWtCLE9BQU0sQ0FBQSxFQUNwRSxLQUFNdlIsRUFBQUEsTUFBQXdCLENBQUEsRUFBSyxjQUNYLFNBQVV4QixFQUFBQSxNQUFBOEMsQ0FBQSxFQUFTLFdBQ25CLFFBQU80TyxDQUFBLGlEQ3hEUkcsR0FBUSxDQUFDLE1BQU8sUUFBUyxTQUFVLE1BQU0sRUFDekNDLEdBQWEsQ0FBQyxRQUFTLEtBQUssRUFDNUJDLEdBQTBCRixHQUFNLE9BQU8sQ0FBQ0csRUFBS0MsSUFBU0QsRUFBSSxPQUFPQyxFQUFNQSxFQUFPLElBQU1ILEdBQVcsQ0FBQyxFQUFHRyxFQUFPLElBQU1ILEdBQVcsQ0FBQyxDQUFDLEVBQUcsRUFBRSxFQUNsSUksR0FBTSxLQUFLLElBQ1hDLEdBQU0sS0FBSyxJQUNYQyxHQUFRLEtBQUssTUFDYkMsR0FBUSxLQUFLLE1BQ2JDLEVBQWVDLElBQU0sQ0FDekIsRUFBR0EsRUFDSCxFQUFHQSxDQUNMLEdBQ01DLEdBQWtCLENBQ3RCLEtBQU0sUUFDTixNQUFPLE9BQ1AsT0FBUSxNQUNSLElBQUssUUFDUCxFQUNNQyxHQUF1QixDQUMzQixNQUFPLE1BQ1AsSUFBSyxPQUNQLEVBQ0EsU0FBU0MsR0FBTUMsRUFBT3hILEVBQU95SCxFQUFLLENBQ2hDLE9BQU9ULEdBQUlRLEVBQU9ULEdBQUkvRyxFQUFPeUgsQ0FBRyxDQUFDLENBQ25DLENBQ0EsU0FBU0MsR0FBUzFILEVBQU8ySCxFQUFPLENBQzlCLE9BQU8sT0FBTzNILEdBQVUsV0FBYUEsRUFBTTJILENBQUssRUFBSTNILENBQ3RELENBQ0EsU0FBUzRILEdBQVFDLEVBQVcsQ0FDMUIsT0FBT0EsRUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQy9CLENBQ0EsU0FBU0MsR0FBYUQsRUFBVyxDQUMvQixPQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FDL0IsQ0FDQSxTQUFTRSxHQUFnQkMsRUFBTSxDQUM3QixPQUFPQSxJQUFTLElBQU0sSUFBTSxHQUM5QixDQUNBLFNBQVNDLEdBQWNELEVBQU0sQ0FDM0IsT0FBT0EsSUFBUyxJQUFNLFNBQVcsT0FDbkMsQ0FDQSxTQUFTRSxHQUFZTCxFQUFXLENBQzlCLE1BQU8sQ0FBQyxNQUFPLFFBQVEsRUFBRSxTQUFTRCxHQUFRQyxDQUFTLENBQUMsRUFBSSxJQUFNLEdBQ2hFLENBQ0EsU0FBU00sR0FBaUJOLEVBQVcsQ0FDbkMsT0FBT0UsR0FBZ0JHLEdBQVlMLENBQVMsQ0FBQyxDQUMvQyxDQUNBLFNBQVNPLEdBQWtCUCxFQUFXUSxFQUFPQyxFQUFLLENBQzVDQSxJQUFRLFNBQ1ZBLEVBQU0sSUFFUixNQUFNQyxFQUFZVCxHQUFhRCxDQUFTLEVBQ2xDVyxFQUFnQkwsR0FBaUJOLENBQVMsRUFDMUNZLEVBQVNSLEdBQWNPLENBQWEsRUFDMUMsSUFBSUUsRUFBb0JGLElBQWtCLElBQU1ELEtBQWVELEVBQU0sTUFBUSxTQUFXLFFBQVUsT0FBU0MsSUFBYyxRQUFVLFNBQVcsTUFDOUksT0FBSUYsRUFBTSxVQUFVSSxDQUFNLEVBQUlKLEVBQU0sU0FBU0ksQ0FBTSxJQUNqREMsRUFBb0JDLEdBQXFCRCxDQUFpQixHQUVyRCxDQUFDQSxFQUFtQkMsR0FBcUJELENBQWlCLENBQUMsQ0FDcEUsQ0FLQSxTQUFTRSxHQUE4QmYsRUFBVyxDQUNoRCxPQUFPQSxFQUFVLFFBQVEsYUFBY1UsR0FBYWpCLEdBQXFCaUIsQ0FBUyxDQUFDLENBQ3JGLENBNkJBLFNBQVNJLEdBQXFCZCxFQUFXLENBQ3ZDLE9BQU9BLEVBQVUsUUFBUSx5QkFBMEJmLEdBQVFPLEdBQWdCUCxDQUFJLENBQUMsQ0FDbEYsQ0FDQSxTQUFTK0IsR0FBb0JDLEVBQVMsQ0FDcEMsTUFBTyxDQUNMLElBQUssRUFDTCxNQUFPLEVBQ1AsT0FBUSxFQUNSLEtBQU0sRUFDTixHQUFHQSxDQUNQLENBQ0EsQ0FDQSxTQUFTQyxHQUFpQkQsRUFBUyxDQUNqQyxPQUFPLE9BQU9BLEdBQVksU0FBV0QsR0FBb0JDLENBQU8sRUFBSSxDQUNsRSxJQUFLQSxFQUNMLE1BQU9BLEVBQ1AsT0FBUUEsRUFDUixLQUFNQSxDQUNWLENBQ0EsQ0FDQSxTQUFTRSxHQUFpQkMsRUFBTSxDQUM5QixLQUFNLENBQ0osRUFBQUMsRUFDQSxFQUFBQyxFQUNBLE1BQUFDLEVBQ0EsT0FBQUMsQ0FDSixFQUFNSixFQUNKLE1BQU8sQ0FDTCxNQUFBRyxFQUNBLE9BQUFDLEVBQ0EsSUFBS0YsRUFDTCxLQUFNRCxFQUNOLE1BQU9BLEVBQUlFLEVBQ1gsT0FBUUQsRUFBSUUsRUFDWixFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQ3BJQSxTQUFTRyxHQUEyQkMsRUFBTTFCLEVBQVdTLEVBQUssQ0FDeEQsR0FBSSxDQUNGLFVBQUFrQixFQUNBLFNBQUFDLENBQ0osRUFBTUYsRUFDSixNQUFNRyxFQUFXeEIsR0FBWUwsQ0FBUyxFQUNoQ1csRUFBZ0JMLEdBQWlCTixDQUFTLEVBQzFDOEIsRUFBYzFCLEdBQWNPLENBQWEsRUFDekMxQixFQUFPYyxHQUFRQyxDQUFTLEVBQ3hCK0IsRUFBYUYsSUFBYSxJQUMxQkcsRUFBVUwsRUFBVSxFQUFJQSxFQUFVLE1BQVEsRUFBSUMsRUFBUyxNQUFRLEVBQy9ESyxFQUFVTixFQUFVLEVBQUlBLEVBQVUsT0FBUyxFQUFJQyxFQUFTLE9BQVMsRUFDakVNLEVBQWNQLEVBQVVHLENBQVcsRUFBSSxFQUFJRixFQUFTRSxDQUFXLEVBQUksRUFDekUsSUFBSUssRUFDSixPQUFRbEQsRUFBSSxDQUNWLElBQUssTUFDSGtELEVBQVMsQ0FDUCxFQUFHSCxFQUNILEVBQUdMLEVBQVUsRUFBSUMsRUFBUyxNQUNsQyxFQUNNLE1BQ0YsSUFBSyxTQUNITyxFQUFTLENBQ1AsRUFBR0gsRUFDSCxFQUFHTCxFQUFVLEVBQUlBLEVBQVUsTUFDbkMsRUFDTSxNQUNGLElBQUssUUFDSFEsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFBSUEsRUFBVSxNQUMzQixFQUFHTSxDQUNYLEVBQ00sTUFDRixJQUFLLE9BQ0hFLEVBQVMsQ0FDUCxFQUFHUixFQUFVLEVBQUlDLEVBQVMsTUFDMUIsRUFBR0ssQ0FDWCxFQUNNLE1BQ0YsUUFDRUUsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFDYixFQUFHQSxFQUFVLENBQ3JCLENBQ0EsQ0FDRSxPQUFRMUIsR0FBYUQsQ0FBUyxFQUFDLENBQzdCLElBQUssUUFDSG1DLEVBQU94QixDQUFhLEdBQUt1QixHQUFlekIsR0FBT3NCLEVBQWEsR0FBSyxHQUNqRSxNQUNGLElBQUssTUFDSEksRUFBT3hCLENBQWEsR0FBS3VCLEdBQWV6QixHQUFPc0IsRUFBYSxHQUFLLEdBQ2pFLEtBQ04sQ0FDRSxPQUFPSSxDQUNULENBU0EsTUFBTUMsR0FBa0IsTUFBT1QsRUFBV0MsRUFBVXBTLElBQVcsQ0FDN0QsS0FBTSxDQUNKLFVBQUF3USxFQUFZLFNBQ1osU0FBQXFDLEVBQVcsV0FDWCxXQUFBQyxFQUFhLENBQUEsRUFDYixTQUFBQyxDQUNKLEVBQU0vUyxFQUNFZ1QsRUFBa0JGLEVBQVcsT0FBTyxPQUFPLEVBQzNDN0IsRUFBTSxNQUFPOEIsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNWCxDQUFRLEdBQzVFLElBQUlwQixFQUFRLE1BQU0rQixFQUFTLGdCQUFnQixDQUN6QyxVQUFBWixFQUNBLFNBQUFDLEVBQ0EsU0FBQVMsQ0FDSixDQUFHLEVBQ0csQ0FDRixFQUFBaEIsRUFDQSxFQUFBQyxDQUNKLEVBQU1HLEdBQTJCakIsRUFBT1IsRUFBV1MsQ0FBRyxFQUNoRGdDLEVBQW9CekMsRUFDcEIwQyxFQUFpQixDQUFBLEVBQ2pCQyxFQUFhLEVBQ2pCLFFBQVNDLEVBQUksRUFBR0EsRUFBSUosRUFBZ0IsT0FBUUksSUFBSyxDQUMvQyxLQUFNLENBQ0osS0FBQTVVLEVBQ0EsR0FBQTZVLENBQ04sRUFBUUwsRUFBZ0JJLENBQUMsRUFDZixDQUNKLEVBQUdFLEVBQ0gsRUFBR0MsRUFDSCxLQUFBQyxFQUNBLE1BQUFDLENBQ04sRUFBUSxNQUFNSixFQUFHLENBQ1gsRUFBQXhCLEVBQ0EsRUFBQUMsRUFDQSxpQkFBa0J0QixFQUNsQixVQUFXeUMsRUFDWCxTQUFBSixFQUNBLGVBQUFLLEVBQ0EsTUFBQWxDLEVBQ0EsU0FBQStCLEVBQ0EsU0FBVSxDQUNSLFVBQUFaLEVBQ0EsU0FBQUMsQ0FDUixDQUNBLENBQUssRUFDRFAsRUFBSXlCLEdBQXdCekIsRUFDNUJDLEVBQUl5QixHQUF3QnpCLEVBQzVCb0IsRUFBaUIsQ0FDZixHQUFHQSxFQUNILENBQUMxVSxDQUFJLEVBQUcsQ0FDTixHQUFHMFUsRUFBZTFVLENBQUksRUFDdEIsR0FBR2dWLENBQ1gsQ0FDQSxFQUNRQyxHQUFTTixHQUFjLEtBQ3pCQSxJQUNJLE9BQU9NLEdBQVUsV0FDZkEsRUFBTSxZQUNSUixFQUFvQlEsRUFBTSxXQUV4QkEsRUFBTSxRQUNSekMsRUFBUXlDLEVBQU0sUUFBVSxHQUFPLE1BQU1WLEVBQVMsZ0JBQWdCLENBQzVELFVBQUFaLEVBQ0EsU0FBQUMsRUFDQSxTQUFBUyxDQUNaLENBQVcsRUFBSVksRUFBTSxPQUVaLENBQ0MsRUFBQTVCLEVBQ0EsRUFBQUMsQ0FDVixFQUFZRyxHQUEyQmpCLEVBQU9pQyxFQUFtQmhDLENBQUcsR0FFOURtQyxFQUFJLEdBRVIsQ0FDQSxNQUFPLENBQ0wsRUFBQXZCLEVBQ0EsRUFBQUMsRUFDQSxVQUFXbUIsRUFDWCxTQUFBSixFQUNBLGVBQUFLLENBQ0osQ0FDQSxFQVVBLGVBQWVRLEdBQWVDLEVBQU9yTyxFQUFTLENBQzVDLElBQUlzTyxFQUNBdE8sSUFBWSxTQUNkQSxFQUFVLENBQUEsR0FFWixLQUFNLENBQ0osRUFBQXVNLEVBQ0EsRUFBQUMsRUFDQSxTQUFBaUIsRUFDQSxNQUFBL0IsRUFDQSxTQUFBNkMsRUFDQSxTQUFBaEIsQ0FDSixFQUFNYyxFQUNFLENBQ0osU0FBQUcsRUFBVyxvQkFDWCxhQUFBQyxFQUFlLFdBQ2YsZUFBQUMsRUFBaUIsV0FDakIsWUFBQUMsRUFBYyxHQUNkLFFBQUF4QyxFQUFVLENBQ2QsRUFBTXBCLEdBQVMvSyxFQUFTcU8sQ0FBSyxFQUNyQk8sRUFBZ0J4QyxHQUFpQkQsQ0FBTyxFQUV4Q3ZOLEVBQVUyUCxFQUFTSSxFQURORCxJQUFtQixXQUFhLFlBQWMsV0FDYkEsQ0FBYyxFQUM1REcsRUFBcUJ4QyxHQUFpQixNQUFNb0IsRUFBUyxnQkFBZ0IsQ0FDekUsU0FBV2EsRUFBd0IsTUFBT2IsRUFBUyxXQUFhLEtBQU8sT0FBU0EsRUFBUyxVQUFVN08sQ0FBTyxLQUFPLE1BQU8wUCxFQUFnQzFQLEVBQVVBLEVBQVEsZ0JBQW1CLE1BQU82TyxFQUFTLG9CQUFzQixLQUFPLE9BQVNBLEVBQVMsbUJBQW1CYyxFQUFTLFFBQVEsR0FDaFMsU0FBQUMsRUFDQSxhQUFBQyxFQUNBLFNBQUFsQixDQUNKLENBQUcsQ0FBQyxFQUNJakIsRUFBT29DLElBQW1CLFdBQWEsQ0FDM0MsRUFBQW5DLEVBQ0EsRUFBQUMsRUFDQSxNQUFPZCxFQUFNLFNBQVMsTUFDdEIsT0FBUUEsRUFBTSxTQUFTLE1BQzNCLEVBQU1BLEVBQU0sVUFDSm9ELEVBQWUsTUFBT3JCLEVBQVMsaUJBQW1CLEtBQU8sT0FBU0EsRUFBUyxnQkFBZ0JjLEVBQVMsUUFBUSxHQUM1R1EsRUFBZSxNQUFPdEIsRUFBUyxXQUFhLEtBQU8sT0FBU0EsRUFBUyxVQUFVcUIsQ0FBWSxHQUFPLE1BQU9yQixFQUFTLFVBQVksS0FBTyxPQUFTQSxFQUFTLFNBQVNxQixDQUFZLElBQU8sQ0FDdkwsRUFBRyxFQUNILEVBQUcsQ0FDUCxFQUFNLENBQ0YsRUFBRyxFQUNILEVBQUcsQ0FDUCxFQUNRRSxFQUFvQjNDLEdBQWlCb0IsRUFBUyxzREFBd0QsTUFBTUEsRUFBUyxzREFBc0QsQ0FDL0ssU0FBQWMsRUFDQSxLQUFBakMsRUFDQSxhQUFBd0MsRUFDQSxTQUFBdkIsQ0FDSixDQUFHLEVBQUlqQixDQUFJLEVBQ1QsTUFBTyxDQUNMLEtBQU11QyxFQUFtQixJQUFNRyxFQUFrQixJQUFNSixFQUFjLEtBQU9HLEVBQVksRUFDeEYsUUFBU0MsRUFBa0IsT0FBU0gsRUFBbUIsT0FBU0QsRUFBYyxRQUFVRyxFQUFZLEVBQ3BHLE1BQU9GLEVBQW1CLEtBQU9HLEVBQWtCLEtBQU9KLEVBQWMsTUFBUUcsRUFBWSxFQUM1RixPQUFRQyxFQUFrQixNQUFRSCxFQUFtQixNQUFRRCxFQUFjLE9BQVNHLEVBQVksQ0FDcEcsQ0FDQSxDQW9GQSxTQUFTRSxHQUFpQnJELEVBQVdzRCxFQUFlQyxFQUFtQixDQUVyRSxPQUQyQ3ZELEVBQVksQ0FBQyxHQUFHdUQsRUFBa0IsT0FBT2pFLEdBQWFDLEdBQWFELENBQVMsSUFBTVUsQ0FBUyxFQUFHLEdBQUd1RCxFQUFrQixPQUFPakUsR0FBYUMsR0FBYUQsQ0FBUyxJQUFNVSxDQUFTLENBQUMsRUFBSXVELEVBQWtCLE9BQU9qRSxHQUFhRCxHQUFRQyxDQUFTLElBQU1BLENBQVMsR0FDeFAsT0FBT0EsR0FDM0NVLEVBQ0tULEdBQWFELENBQVMsSUFBTVUsSUFBY3NELEVBQWdCakQsR0FBOEJmLENBQVMsSUFBTUEsRUFBWSxJQUVySCxFQUNSLENBQ0gsQ0FPQSxNQUFNa0UsR0FBZ0IsU0FBVXBQLEVBQVMsQ0FDdkMsT0FBSUEsSUFBWSxTQUNkQSxFQUFVLENBQUEsR0FFTCxDQUNMLEtBQU0sZ0JBQ04sUUFBQUEsRUFDQSxNQUFNLEdBQUdxTyxFQUFPLENBQ2QsSUFBSWdCLEVBQXVCQyxFQUF3QkMsRUFDbkQsS0FBTSxDQUNKLE1BQUE3RCxFQUNBLGVBQUFrQyxFQUNBLFVBQUExQyxFQUNBLFNBQUF1QyxFQUNBLFNBQUFjLENBQ1IsRUFBVUYsRUFDRSxDQUNKLFVBQUFtQixFQUFZLEdBQ1osVUFBQTVELEVBQ0Esa0JBQUF1RCxFQUFvQmxGLEdBQ3BCLGNBQUFpRixFQUFnQixHQUNoQixHQUFHTyxDQUNYLEVBQVUxRSxHQUFTL0ssRUFBU3FPLENBQUssRUFDckJxQixFQUFlOUQsSUFBYyxRQUFhdUQsSUFBc0JsRixHQUFhZ0YsR0FBaUJyRCxHQUFhLEtBQU1zRCxFQUFlQyxDQUFpQixFQUFJQSxFQUNySlEsRUFBVyxNQUFNdkIsR0FBZUMsRUFBT29CLENBQXFCLEVBQzVEOVMsSUFBaUIwUyxFQUF3QnpCLEVBQWUsZ0JBQWtCLEtBQU8sT0FBU3lCLEVBQXNCLFFBQVUsRUFDMUhPLEVBQW1CRixFQUFhL1MsQ0FBWSxFQUNsRCxHQUFJaVQsR0FBb0IsS0FDdEIsTUFBTyxDQUFBLEVBRVQsTUFBTUMsRUFBaUJwRSxHQUFrQm1FLEVBQWtCbEUsRUFBTyxNQUFPK0IsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsRUFBRSxFQUc3SSxHQUFJckQsSUFBYzBFLEVBQ2hCLE1BQU8sQ0FDTCxNQUFPLENBQ0wsVUFBV0YsRUFBYSxDQUFDLENBQ3JDLENBQ0EsRUFFTSxNQUFNSSxFQUFtQixDQUFDSCxFQUFTMUUsR0FBUTJFLENBQWdCLENBQUMsRUFBR0QsRUFBU0UsRUFBZSxDQUFDLENBQUMsRUFBR0YsRUFBU0UsRUFBZSxDQUFDLENBQUMsQ0FBQyxFQUNqSEUsRUFBZSxDQUFDLEtBQU1ULEVBQXlCMUIsRUFBZSxnQkFBa0IsS0FBTyxPQUFTMEIsRUFBdUIsWUFBYyxDQUFBLEVBQUssQ0FDOUksVUFBV00sRUFDWCxVQUFXRSxDQUNuQixDQUFPLEVBQ0tFLEVBQWdCTixFQUFhL1MsRUFBZSxDQUFDLEVBR25ELEdBQUlxVCxFQUNGLE1BQU8sQ0FDTCxLQUFNLENBQ0osTUFBT3JULEVBQWUsRUFDdEIsVUFBV29ULENBQ3ZCLEVBQ1UsTUFBTyxDQUNMLFVBQVdDLENBQ3ZCLENBQ0EsRUFFTSxNQUFNQyxFQUE4QkYsRUFBYSxJQUFJRyxHQUFLLENBQ3hELE1BQU10RSxFQUFZVCxHQUFhK0UsRUFBRSxTQUFTLEVBQzFDLE1BQU8sQ0FBQ0EsRUFBRSxVQUFXdEUsR0FBYTRELEVBRWxDVSxFQUFFLFVBQVUsTUFBTSxFQUFHLENBQUMsRUFBRSxPQUFPLENBQUNoRyxFQUFLTyxLQUFNUCxFQUFNTyxHQUFHLENBQUMsRUFFckR5RixFQUFFLFVBQVUsQ0FBQyxFQUFHQSxFQUFFLFNBQVMsQ0FDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQzdQLEVBQUdDLElBQU1ELEVBQUUsQ0FBQyxFQUFJQyxFQUFFLENBQUMsQ0FBQyxFQUt2QjZQLElBQW1CWixFQUpXVSxFQUE0QixPQUFPQyxHQUFLQSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBR3ZGL0UsR0FBYStFLEVBQUUsQ0FBQyxDQUFDLEVBQUksRUFBSSxDQUFDLEVBQUUsTUFBTXpGLEdBQUtBLEdBQUssQ0FBQyxDQUFDLEVBQytCLENBQUMsSUFBTSxLQUFPLE9BQVM4RSxFQUFzQixDQUFDLElBQU1VLEVBQTRCLENBQUMsRUFBRSxDQUFDLEVBQ2pLLE9BQUlFLElBQW1CakYsRUFDZCxDQUNMLEtBQU0sQ0FDSixNQUFPdk8sRUFBZSxFQUN0QixVQUFXb1QsQ0FDdkIsRUFDVSxNQUFPLENBQ0wsVUFBV0ksQ0FDdkIsQ0FDQSxFQUVhLENBQUEsQ0FDVCxDQUNKLENBQ0EsRUEyVUEsZUFBZUMsR0FBcUIvQixFQUFPck8sRUFBUyxDQUNsRCxLQUFNLENBQ0osVUFBQWtMLEVBQ0EsU0FBQXVDLEVBQ0EsU0FBQWMsQ0FDSixFQUFNRixFQUNFMUMsRUFBTSxNQUFPOEIsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsR0FDL0VwRSxFQUFPYyxHQUFRQyxDQUFTLEVBQ3hCVSxFQUFZVCxHQUFhRCxDQUFTLEVBQ2xDK0IsRUFBYTFCLEdBQVlMLENBQVMsSUFBTSxJQUN4Q21GLEVBQWdCLENBQUMsT0FBUSxLQUFLLEVBQUUsU0FBU2xHLENBQUksRUFBSSxHQUFLLEVBQ3REbUcsRUFBaUIzRSxHQUFPc0IsRUFBYSxHQUFLLEVBQzFDc0QsRUFBV3hGLEdBQVMvSyxFQUFTcU8sQ0FBSyxFQUd4QyxHQUFJLENBQ0YsU0FBQW1DLEVBQ0EsVUFBQWhCLEVBQ0EsY0FBQTNELENBQ0osRUFBTSxPQUFPMEUsR0FBYSxTQUFXLENBQ2pDLFNBQVVBLEVBQ1YsVUFBVyxFQUNYLGNBQWUsSUFDbkIsRUFBTSxDQUNGLFNBQVVBLEVBQVMsVUFBWSxFQUMvQixVQUFXQSxFQUFTLFdBQWEsRUFDakMsY0FBZUEsRUFBUyxhQUM1QixFQUNFLE9BQUkzRSxHQUFhLE9BQU9DLEdBQWtCLFdBQ3hDMkQsRUFBWTVELElBQWMsTUFBUUMsRUFBZ0IsR0FBS0EsR0FFbERvQixFQUFhLENBQ2xCLEVBQUd1QyxFQUFZYyxFQUNmLEVBQUdFLEVBQVdILENBQ2xCLEVBQU0sQ0FDRixFQUFHRyxFQUFXSCxFQUNkLEVBQUdiLEVBQVljLENBQ25CLENBQ0EsQ0FTQSxNQUFNM1EsR0FBUyxTQUFVSyxFQUFTLENBQ2hDLE9BQUlBLElBQVksU0FDZEEsRUFBVSxHQUVMLENBQ0wsS0FBTSxTQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHcU8sRUFBTyxDQUNkLElBQUlvQyxFQUF1QkMsRUFDM0IsS0FBTSxDQUNKLEVBQUFuRSxFQUNBLEVBQUFDLEVBQ0EsVUFBQXRCLEVBQ0EsZUFBQTBDLENBQ1IsRUFBVVMsRUFDRXNDLEVBQWEsTUFBTVAsR0FBcUIvQixFQUFPck8sQ0FBTyxFQUk1RCxPQUFJa0wsTUFBZ0J1RixFQUF3QjdDLEVBQWUsU0FBVyxLQUFPLE9BQVM2QyxFQUFzQixhQUFlQyxFQUF3QjlDLEVBQWUsUUFBVSxNQUFROEMsRUFBc0IsZ0JBQ2pNLENBQUEsRUFFRixDQUNMLEVBQUduRSxFQUFJb0UsRUFBVyxFQUNsQixFQUFHbkUsRUFBSW1FLEVBQVcsRUFDbEIsS0FBTSxDQUNKLEdBQUdBLEVBQ0gsVUFBQXpGLENBQ1YsQ0FDQSxDQUNJLENBQ0osQ0FDQSxFQU9NMEYsR0FBUSxTQUFVNVEsRUFBUyxDQUMvQixPQUFJQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVMLENBQ0wsS0FBTSxRQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHcU8sRUFBTyxDQUNkLEtBQU0sQ0FDSixFQUFBOUIsRUFDQSxFQUFBQyxFQUNBLFVBQUF0QixDQUNSLEVBQVVtRCxFQUNFLENBQ0osU0FBVXdDLEVBQWdCLEdBQzFCLFVBQVdDLEVBQWlCLEdBQzVCLFFBQUFDLEVBQVUsQ0FDUixHQUFJbkUsR0FBUSxDQUNWLEdBQUksQ0FDRixFQUFBTCxFQUNBLEVBQUFDLENBQ2QsRUFBZ0JJLEVBQ0osTUFBTyxDQUNMLEVBQUFMLEVBQ0EsRUFBQUMsQ0FDZCxDQUNVLENBQ1YsRUFDUSxHQUFHaUQsQ0FDWCxFQUFVMUUsR0FBUy9LLEVBQVNxTyxDQUFLLEVBQ3JCaEIsRUFBUyxDQUNiLEVBQUFkLEVBQ0EsRUFBQUMsQ0FDUixFQUNZbUQsRUFBVyxNQUFNdkIsR0FBZUMsRUFBT29CLENBQXFCLEVBQzVERCxFQUFZakUsR0FBWU4sR0FBUUMsQ0FBUyxDQUFDLEVBQzFDc0YsRUFBV3BGLEdBQWdCb0UsQ0FBUyxFQUMxQyxJQUFJd0IsRUFBZ0IzRCxFQUFPbUQsQ0FBUSxFQUMvQlMsRUFBaUI1RCxFQUFPbUMsQ0FBUyxFQUNyQyxHQUFJcUIsRUFBZSxDQUNqQixNQUFNSyxFQUFVVixJQUFhLElBQU0sTUFBUSxPQUNyQ1csRUFBVVgsSUFBYSxJQUFNLFNBQVcsUUFDeENwRyxFQUFNNEcsRUFBZ0JyQixFQUFTdUIsQ0FBTyxFQUN0QzdHLEVBQU0yRyxFQUFnQnJCLEVBQVN3QixDQUFPLEVBQzVDSCxFQUFnQnBHLEdBQU1SLEVBQUs0RyxFQUFlM0csQ0FBRyxDQUMvQyxDQUNBLEdBQUl5RyxFQUFnQixDQUNsQixNQUFNSSxFQUFVMUIsSUFBYyxJQUFNLE1BQVEsT0FDdEMyQixFQUFVM0IsSUFBYyxJQUFNLFNBQVcsUUFDekNwRixFQUFNNkcsRUFBaUJ0QixFQUFTdUIsQ0FBTyxFQUN2QzdHLEVBQU00RyxFQUFpQnRCLEVBQVN3QixDQUFPLEVBQzdDRixFQUFpQnJHLEdBQU1SLEVBQUs2RyxFQUFnQjVHLENBQUcsQ0FDakQsQ0FDQSxNQUFNK0csRUFBZ0JMLEVBQVEsR0FBRyxDQUMvQixHQUFHMUMsRUFDSCxDQUFDbUMsQ0FBUSxFQUFHUSxFQUNaLENBQUN4QixDQUFTLEVBQUd5QixDQUNyQixDQUFPLEVBQ0QsTUFBTyxDQUNMLEdBQUdHLEVBQ0gsS0FBTSxDQUNKLEVBQUdBLEVBQWMsRUFBSTdFLEVBQ3JCLEVBQUc2RSxFQUFjLEVBQUk1RSxFQUNyQixRQUFTLENBQ1AsQ0FBQ2dFLENBQVEsRUFBR0ssRUFDWixDQUFDckIsQ0FBUyxFQUFHc0IsQ0FDekIsQ0FDQSxDQUNBLENBQ0ksQ0FDSixDQUNBLEVDdDNCQSxTQUFTTyxJQUFZLENBQ25CLE9BQU8sT0FBTyxPQUFXLEdBQzNCLENBQ0EsU0FBU0MsR0FBWXhWLEVBQU0sQ0FDekIsT0FBSXlWLEdBQU96VixDQUFJLEdBQ0xBLEVBQUssVUFBWSxJQUFJLFlBQVcsRUFLbkMsV0FDVCxDQUNBLFNBQVMwVixFQUFVMVYsRUFBTSxDQUN2QixJQUFJMlYsRUFDSixPQUFRM1YsR0FBUSxPQUFTMlYsRUFBc0IzVixFQUFLLGdCQUFrQixLQUFPLE9BQVMyVixFQUFvQixjQUFnQixNQUM1SCxDQUNBLFNBQVNDLEVBQW1CNVYsRUFBTSxDQUNoQyxJQUFJOFEsRUFDSixPQUFRQSxHQUFRMkUsR0FBT3pWLENBQUksRUFBSUEsRUFBSyxjQUFnQkEsRUFBSyxXQUFhLE9BQU8sV0FBYSxLQUFPLE9BQVM4USxFQUFLLGVBQ2pILENBQ0EsU0FBUzJFLEdBQU9sTyxFQUFPLENBQ3JCLE9BQUtnTyxHQUFTLEVBR1BoTyxhQUFpQixNQUFRQSxhQUFpQm1PLEVBQVVuTyxDQUFLLEVBQUUsS0FGekQsRUFHWCxDQUNBLFNBQVNzTyxFQUFVdE8sRUFBTyxDQUN4QixPQUFLZ08sR0FBUyxFQUdQaE8sYUFBaUIsU0FBV0EsYUFBaUJtTyxFQUFVbk8sQ0FBSyxFQUFFLFFBRjVELEVBR1gsQ0FDQSxTQUFTdU8sRUFBY3ZPLEVBQU8sQ0FDNUIsT0FBS2dPLEdBQVMsRUFHUGhPLGFBQWlCLGFBQWVBLGFBQWlCbU8sRUFBVW5PLENBQUssRUFBRSxZQUZoRSxFQUdYLENBQ0EsU0FBU3dPLEdBQWF4TyxFQUFPLENBQzNCLE1BQUksQ0FBQ2dPLEdBQVMsR0FBTSxPQUFPLFdBQWUsSUFDakMsR0FFRmhPLGFBQWlCLFlBQWNBLGFBQWlCbU8sRUFBVW5PLENBQUssRUFBRSxVQUMxRSxDQUNBLFNBQVN5TyxHQUFrQmxULEVBQVMsQ0FDbEMsS0FBTSxDQUNKLFNBQUErUSxFQUNBLFVBQUFvQyxFQUNBLFVBQUFDLEVBQ0EsUUFBQUMsQ0FDSixFQUFNQyxFQUFpQnRULENBQU8sRUFDNUIsTUFBTyxrQ0FBa0MsS0FBSytRLEVBQVdxQyxFQUFZRCxDQUFTLEdBQUssQ0FBQyxDQUFDLFNBQVUsVUFBVSxFQUFFLFNBQVNFLENBQU8sQ0FDN0gsQ0FDQSxTQUFTRSxHQUFldlQsRUFBUyxDQUMvQixNQUFPLENBQUMsUUFBUyxLQUFNLElBQUksRUFBRSxTQUFTMFMsR0FBWTFTLENBQU8sQ0FBQyxDQUM1RCxDQUNBLFNBQVN3VCxHQUFXeFQsRUFBUyxDQUMzQixNQUFPLENBQUMsZ0JBQWlCLFFBQVEsRUFBRSxLQUFLeVQsR0FBWSxDQUNsRCxHQUFJLENBQ0YsT0FBT3pULEVBQVEsUUFBUXlULENBQVEsQ0FDakMsTUFBWSxDQUNWLE1BQU8sRUFDVCxDQUNGLENBQUMsQ0FDSCxDQUNBLFNBQVNDLEdBQWtCQyxFQUFjLENBQ3ZDLE1BQU1DLEVBQVNDLEdBQVEsRUFDakJDLEVBQU1mLEVBQVVZLENBQVksRUFBSUwsRUFBaUJLLENBQVksRUFBSUEsRUFJdkUsTUFBTyxDQUFDLFlBQWEsWUFBYSxRQUFTLFNBQVUsYUFBYSxFQUFFLEtBQUtsUCxHQUFTcVAsRUFBSXJQLENBQUssRUFBSXFQLEVBQUlyUCxDQUFLLElBQU0sT0FBUyxFQUFLLElBQU1xUCxFQUFJLGNBQWdCQSxFQUFJLGdCQUFrQixTQUFXLEtBQVUsQ0FBQ0YsSUFBV0UsRUFBSSxlQUFpQkEsRUFBSSxpQkFBbUIsT0FBUyxLQUFVLENBQUNGLElBQVdFLEVBQUksT0FBU0EsRUFBSSxTQUFXLE9BQVMsS0FBVSxDQUFDLFlBQWEsWUFBYSxRQUFTLFNBQVUsY0FBZSxRQUFRLEVBQUUsS0FBS3JQLElBQVVxUCxFQUFJLFlBQWMsSUFBSSxTQUFTclAsQ0FBSyxDQUFDLEdBQUssQ0FBQyxRQUFTLFNBQVUsU0FBVSxTQUFTLEVBQUUsS0FBS0EsSUFBVXFQLEVBQUksU0FBVyxJQUFJLFNBQVNyUCxDQUFLLENBQUMsQ0FDbmlCLENBQ0EsU0FBU3NQLEdBQW1CL1QsRUFBUyxDQUNuQyxJQUFJZ1UsRUFBY0MsR0FBY2pVLENBQU8sRUFDdkMsS0FBT2dULEVBQWNnQixDQUFXLEdBQUssQ0FBQ0UsR0FBc0JGLENBQVcsR0FBRyxDQUN4RSxHQUFJTixHQUFrQk0sQ0FBVyxFQUMvQixPQUFPQSxFQUNGLEdBQUlSLEdBQVdRLENBQVcsRUFDL0IsT0FBTyxLQUVUQSxFQUFjQyxHQUFjRCxDQUFXLENBQ3pDLENBQ0EsT0FBTyxJQUNULENBQ0EsU0FBU0gsSUFBVyxDQUNsQixPQUFJLE9BQU8sSUFBUSxLQUFlLENBQUMsSUFBSSxTQUFpQixHQUNqRCxJQUFJLFNBQVMsMEJBQTJCLE1BQU0sQ0FDdkQsQ0FDQSxTQUFTSyxHQUFzQmhYLEVBQU0sQ0FDbkMsTUFBTyxDQUFDLE9BQVEsT0FBUSxXQUFXLEVBQUUsU0FBU3dWLEdBQVl4VixDQUFJLENBQUMsQ0FDakUsQ0FDQSxTQUFTb1csRUFBaUJ0VCxFQUFTLENBQ2pDLE9BQU80UyxFQUFVNVMsQ0FBTyxFQUFFLGlCQUFpQkEsQ0FBTyxDQUNwRCxDQUNBLFNBQVNtVSxHQUFjblUsRUFBUyxDQUM5QixPQUFJK1MsRUFBVS9TLENBQU8sRUFDWixDQUNMLFdBQVlBLEVBQVEsV0FDcEIsVUFBV0EsRUFBUSxTQUN6QixFQUVTLENBQ0wsV0FBWUEsRUFBUSxRQUNwQixVQUFXQSxFQUFRLE9BQ3ZCLENBQ0EsQ0FDQSxTQUFTaVUsR0FBYy9XLEVBQU0sQ0FDM0IsR0FBSXdWLEdBQVl4VixDQUFJLElBQU0sT0FDeEIsT0FBT0EsRUFFVCxNQUFNd0gsRUFFTnhILEVBQUssY0FFTEEsRUFBSyxZQUVMK1YsR0FBYS9WLENBQUksR0FBS0EsRUFBSyxNQUUzQjRWLEVBQW1CNVYsQ0FBSSxFQUN2QixPQUFPK1YsR0FBYXZPLENBQU0sRUFBSUEsRUFBTyxLQUFPQSxDQUM5QyxDQUNBLFNBQVMwUCxHQUEyQmxYLEVBQU0sQ0FDeEMsTUFBTW1YLEVBQWFKLEdBQWMvVyxDQUFJLEVBQ3JDLE9BQUlnWCxHQUFzQkcsQ0FBVSxFQUMzQm5YLEVBQUssY0FBZ0JBLEVBQUssY0FBYyxLQUFPQSxFQUFLLEtBRXpEOFYsRUFBY3FCLENBQVUsR0FBS25CLEdBQWtCbUIsQ0FBVSxFQUNwREEsRUFFRkQsR0FBMkJDLENBQVUsQ0FDOUMsQ0FDQSxTQUFTQyxHQUFxQnBYLEVBQU1xWCxFQUFNQyxFQUFpQixDQUN6RCxJQUFJQyxFQUNBRixJQUFTLFNBQ1hBLEVBQU8sQ0FBQSxHQUVMQyxJQUFvQixTQUN0QkEsRUFBa0IsSUFFcEIsTUFBTUUsRUFBcUJOLEdBQTJCbFgsQ0FBSSxFQUNwRHlYLEVBQVNELE1BQXlCRCxFQUF1QnZYLEVBQUssZ0JBQWtCLEtBQU8sT0FBU3VYLEVBQXFCLE1BQ3JIRyxFQUFNaEMsRUFBVThCLENBQWtCLEVBQ3hDLEdBQUlDLEVBQVEsQ0FDVixNQUFNRSxFQUFlQyxHQUFnQkYsQ0FBRyxFQUN4QyxPQUFPTCxFQUFLLE9BQU9LLEVBQUtBLEVBQUksZ0JBQWtCLENBQUEsRUFBSTFCLEdBQWtCd0IsQ0FBa0IsRUFBSUEsRUFBcUIsQ0FBQSxFQUFJRyxHQUFnQkwsRUFBa0JGLEdBQXFCTyxDQUFZLEVBQUksRUFBRSxDQUM5TCxDQUNBLE9BQU9OLEVBQUssT0FBT0csRUFBb0JKLEdBQXFCSSxFQUFvQixDQUFBLEVBQUlGLENBQWUsQ0FBQyxDQUN0RyxDQUNBLFNBQVNNLEdBQWdCRixFQUFLLENBQzVCLE9BQU9BLEVBQUksUUFBVSxPQUFPLGVBQWVBLEVBQUksTUFBTSxFQUFJQSxFQUFJLGFBQWUsSUFDOUUsQ0NsSkEsU0FBU0csR0FBaUIvVSxFQUFTLENBQ2pDLE1BQU04VCxFQUFNUixFQUFpQnRULENBQU8sRUFHcEMsSUFBSTZOLEVBQVEsV0FBV2lHLEVBQUksS0FBSyxHQUFLLEVBQ2pDaEcsRUFBUyxXQUFXZ0csRUFBSSxNQUFNLEdBQUssRUFDdkMsTUFBTWtCLEVBQVloQyxFQUFjaFQsQ0FBTyxFQUNqQ2lWLEVBQWNELEVBQVloVixFQUFRLFlBQWM2TixFQUNoRHFILEVBQWVGLEVBQVloVixFQUFRLGFBQWU4TixFQUNsRHFILEVBQWlCekosR0FBTW1DLENBQUssSUFBTW9ILEdBQWV2SixHQUFNb0MsQ0FBTSxJQUFNb0gsRUFDekUsT0FBSUMsSUFDRnRILEVBQVFvSCxFQUNSbkgsRUFBU29ILEdBRUosQ0FDTCxNQUFBckgsRUFDQSxPQUFBQyxFQUNBLEVBQUdxSCxDQUNQLENBQ0EsQ0FFQSxTQUFTQyxHQUFjcFYsRUFBUyxDQUM5QixPQUFRK1MsRUFBVS9TLENBQU8sRUFBNkJBLEVBQXpCQSxFQUFRLGNBQ3ZDLENBRUEsU0FBU3FWLEdBQVNyVixFQUFTLENBQ3pCLE1BQU1zVixFQUFhRixHQUFjcFYsQ0FBTyxFQUN4QyxHQUFJLENBQUNnVCxFQUFjc0MsQ0FBVSxFQUMzQixPQUFPMUosRUFBYSxDQUFDLEVBRXZCLE1BQU04QixFQUFPNEgsRUFBVyxzQkFBcUIsRUFDdkMsQ0FDSixNQUFBekgsRUFDQSxPQUFBQyxFQUNBLEVBQUF5SCxDQUNKLEVBQU1SLEdBQWlCTyxDQUFVLEVBQy9CLElBQUkzSCxHQUFLNEgsRUFBSTdKLEdBQU1nQyxFQUFLLEtBQUssRUFBSUEsRUFBSyxPQUFTRyxFQUMzQ0QsR0FBSzJILEVBQUk3SixHQUFNZ0MsRUFBSyxNQUFNLEVBQUlBLEVBQUssUUFBVUksRUFJakQsT0FBSSxDQUFDSCxHQUFLLENBQUMsT0FBTyxTQUFTQSxDQUFDLEtBQzFCQSxFQUFJLElBRUYsQ0FBQ0MsR0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxLQUMxQkEsRUFBSSxHQUVDLENBQ0wsRUFBQUQsRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FFQSxNQUFNNEgsR0FBeUI1SixFQUFhLENBQUMsRUFDN0MsU0FBUzZKLEdBQWlCelYsRUFBUyxDQUNqQyxNQUFNNFUsRUFBTWhDLEVBQVU1UyxDQUFPLEVBQzdCLE1BQUksQ0FBQzZULEdBQVEsR0FBTSxDQUFDZSxFQUFJLGVBQ2ZZLEdBRUYsQ0FDTCxFQUFHWixFQUFJLGVBQWUsV0FDdEIsRUFBR0EsRUFBSSxlQUFlLFNBQzFCLENBQ0EsQ0FDQSxTQUFTYyxHQUF1QjFWLEVBQVMyVixFQUFTQyxFQUFzQixDQUl0RSxPQUhJRCxJQUFZLFNBQ2RBLEVBQVUsSUFFUixDQUFDQyxHQUF3QkQsR0FBV0MsSUFBeUJoRCxFQUFVNVMsQ0FBTyxFQUN6RSxHQUVGMlYsQ0FDVCxDQUVBLFNBQVNFLEdBQXNCN1YsRUFBUzhWLEVBQWNDLEVBQWlCN0YsRUFBYyxDQUMvRTRGLElBQWlCLFNBQ25CQSxFQUFlLElBRWJDLElBQW9CLFNBQ3RCQSxFQUFrQixJQUVwQixNQUFNQyxFQUFhaFcsRUFBUSxzQkFBcUIsRUFDMUNzVixFQUFhRixHQUFjcFYsQ0FBTyxFQUN4QyxJQUFJaVcsRUFBUXJLLEVBQWEsQ0FBQyxFQUN0QmtLLElBQ0U1RixFQUNFNkMsRUFBVTdDLENBQVksSUFDeEIrRixFQUFRWixHQUFTbkYsQ0FBWSxHQUcvQitGLEVBQVFaLEdBQVNyVixDQUFPLEdBRzVCLE1BQU1rVyxFQUFnQlIsR0FBdUJKLEVBQVlTLEVBQWlCN0YsQ0FBWSxFQUFJdUYsR0FBaUJILENBQVUsRUFBSTFKLEVBQWEsQ0FBQyxFQUN2SSxJQUFJK0IsR0FBS3FJLEVBQVcsS0FBT0UsRUFBYyxHQUFLRCxFQUFNLEVBQ2hEckksR0FBS29JLEVBQVcsSUFBTUUsRUFBYyxHQUFLRCxFQUFNLEVBQy9DcEksRUFBUW1JLEVBQVcsTUFBUUMsRUFBTSxFQUNqQ25JLEVBQVNrSSxFQUFXLE9BQVNDLEVBQU0sRUFDdkMsR0FBSVgsRUFBWSxDQUNkLE1BQU1WLEVBQU1oQyxFQUFVMEMsQ0FBVSxFQUMxQmEsRUFBWWpHLEdBQWdCNkMsRUFBVTdDLENBQVksRUFBSTBDLEVBQVUxQyxDQUFZLEVBQUlBLEVBQ3RGLElBQUlrRyxFQUFheEIsRUFDYnlCLEVBQWdCdkIsR0FBZ0JzQixDQUFVLEVBQzlDLEtBQU9DLEdBQWlCbkcsR0FBZ0JpRyxJQUFjQyxHQUFZLENBQ2hFLE1BQU1FLEVBQWNqQixHQUFTZ0IsQ0FBYSxFQUNwQ0UsRUFBYUYsRUFBYyxzQkFBcUIsRUFDaER2QyxFQUFNUixFQUFpQitDLENBQWEsRUFDcENHLEVBQU9ELEVBQVcsTUFBUUYsRUFBYyxXQUFhLFdBQVd2QyxFQUFJLFdBQVcsR0FBS3dDLEVBQVksRUFDaEdHLEVBQU1GLEVBQVcsS0FBT0YsRUFBYyxVQUFZLFdBQVd2QyxFQUFJLFVBQVUsR0FBS3dDLEVBQVksRUFDbEczSSxHQUFLMkksRUFBWSxFQUNqQjFJLEdBQUswSSxFQUFZLEVBQ2pCekksR0FBU3lJLEVBQVksRUFDckJ4SSxHQUFVd0ksRUFBWSxFQUN0QjNJLEdBQUs2SSxFQUNMNUksR0FBSzZJLEVBQ0xMLEVBQWF4RCxFQUFVeUQsQ0FBYSxFQUNwQ0EsRUFBZ0J2QixHQUFnQnNCLENBQVUsQ0FDNUMsQ0FDRixDQUNBLE9BQU8zSSxHQUFpQixDQUN0QixNQUFBSSxFQUNBLE9BQUFDLEVBQ0EsRUFBQUgsRUFDQSxFQUFBQyxDQUNKLENBQUcsQ0FDSCxDQUlBLFNBQVM4SSxHQUFvQjFXLEVBQVMwTixFQUFNLENBQzFDLE1BQU1pSixFQUFheEMsR0FBY25VLENBQU8sRUFBRSxXQUMxQyxPQUFLME4sRUFHRUEsRUFBSyxLQUFPaUosRUFGVmQsR0FBc0IvQyxFQUFtQjlTLENBQU8sQ0FBQyxFQUFFLEtBQU8yVyxDQUdyRSxDQUVBLFNBQVNDLEdBQWNDLEVBQWlCQyxFQUFRQyxFQUFrQixDQUM1REEsSUFBcUIsU0FDdkJBLEVBQW1CLElBRXJCLE1BQU1DLEVBQVdILEVBQWdCLHNCQUFxQixFQUNoRGxKLEVBQUlxSixFQUFTLEtBQU9GLEVBQU8sWUFBY0MsRUFBbUIsRUFFbEVMLEdBQW9CRyxFQUFpQkcsQ0FBUSxHQUN2Q3BKLEVBQUlvSixFQUFTLElBQU1GLEVBQU8sVUFDaEMsTUFBTyxDQUNMLEVBQUFuSixFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUVBLFNBQVNxSixHQUFzRGpKLEVBQU0sQ0FDbkUsR0FBSSxDQUNGLFNBQUEyQixFQUNBLEtBQUFqQyxFQUNBLGFBQUF3QyxFQUNBLFNBQUF2QixDQUNKLEVBQU1YLEVBQ0osTUFBTTJILEVBQVVoSCxJQUFhLFFBQ3ZCa0ksRUFBa0IvRCxFQUFtQjVDLENBQVksRUFDakRsRyxFQUFXMkYsRUFBVzZELEdBQVc3RCxFQUFTLFFBQVEsRUFBSSxHQUM1RCxHQUFJTyxJQUFpQjJHLEdBQW1CN00sR0FBWTJMLEVBQ2xELE9BQU9qSSxFQUVULElBQUlvSixFQUFTLENBQ1gsV0FBWSxFQUNaLFVBQVcsQ0FDZixFQUNNYixFQUFRckssRUFBYSxDQUFDLEVBQzFCLE1BQU1zTCxFQUFVdEwsRUFBYSxDQUFDLEVBQ3hCdUwsRUFBMEJuRSxFQUFjOUMsQ0FBWSxFQUMxRCxJQUFJaUgsR0FBMkIsQ0FBQ0EsR0FBMkIsQ0FBQ3hCLE1BQ3REakQsR0FBWXhDLENBQVksSUFBTSxRQUFVZ0QsR0FBa0IyRCxDQUFlLEtBQzNFQyxFQUFTM0MsR0FBY2pFLENBQVksR0FFakM4QyxFQUFjOUMsQ0FBWSxHQUFHLENBQy9CLE1BQU1rSCxFQUFhdkIsR0FBc0IzRixDQUFZLEVBQ3JEK0YsRUFBUVosR0FBU25GLENBQVksRUFDN0JnSCxFQUFRLEVBQUlFLEVBQVcsRUFBSWxILEVBQWEsV0FDeENnSCxFQUFRLEVBQUlFLEVBQVcsRUFBSWxILEVBQWEsU0FDMUMsQ0FFRixNQUFNbUgsRUFBYVIsR0FBbUIsQ0FBQ00sR0FBMkIsQ0FBQ3hCLEVBQVVpQixHQUFjQyxFQUFpQkMsRUFBUSxFQUFJLEVBQUlsTCxFQUFhLENBQUMsRUFDMUksTUFBTyxDQUNMLE1BQU84QixFQUFLLE1BQVF1SSxFQUFNLEVBQzFCLE9BQVF2SSxFQUFLLE9BQVN1SSxFQUFNLEVBQzVCLEVBQUd2SSxFQUFLLEVBQUl1SSxFQUFNLEVBQUlhLEVBQU8sV0FBYWIsRUFBTSxFQUFJaUIsRUFBUSxFQUFJRyxFQUFXLEVBQzNFLEVBQUczSixFQUFLLEVBQUl1SSxFQUFNLEVBQUlhLEVBQU8sVUFBWWIsRUFBTSxFQUFJaUIsRUFBUSxFQUFJRyxFQUFXLENBQzlFLENBQ0EsQ0FFQSxTQUFTQyxHQUFldFgsRUFBUyxDQUMvQixPQUFPLE1BQU0sS0FBS0EsRUFBUSxlQUFjLENBQUUsQ0FDNUMsQ0FJQSxTQUFTdVgsR0FBZ0J2WCxFQUFTLENBQ2hDLE1BQU13WCxFQUFPMUUsRUFBbUI5UyxDQUFPLEVBQ2pDOFcsRUFBUzNDLEdBQWNuVSxDQUFPLEVBQzlCMEosRUFBTzFKLEVBQVEsY0FBYyxLQUM3QjZOLEVBQVFwQyxHQUFJK0wsRUFBSyxZQUFhQSxFQUFLLFlBQWE5TixFQUFLLFlBQWFBLEVBQUssV0FBVyxFQUNsRm9FLEVBQVNyQyxHQUFJK0wsRUFBSyxhQUFjQSxFQUFLLGFBQWM5TixFQUFLLGFBQWNBLEVBQUssWUFBWSxFQUM3RixJQUFJaUUsRUFBSSxDQUFDbUosRUFBTyxXQUFhSixHQUFvQjFXLENBQU8sRUFDeEQsTUFBTTROLEVBQUksQ0FBQ2tKLEVBQU8sVUFDbEIsT0FBSXhELEVBQWlCNUosQ0FBSSxFQUFFLFlBQWMsUUFDdkNpRSxHQUFLbEMsR0FBSStMLEVBQUssWUFBYTlOLEVBQUssV0FBVyxFQUFJbUUsR0FFMUMsQ0FDTCxNQUFBQSxFQUNBLE9BQUFDLEVBQ0EsRUFBQUgsRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FFQSxTQUFTNkosR0FBZ0J6WCxFQUFTMk8sRUFBVSxDQUMxQyxNQUFNaUcsRUFBTWhDLEVBQVU1UyxDQUFPLEVBQ3ZCd1gsRUFBTzFFLEVBQW1COVMsQ0FBTyxFQUNqQzBYLEVBQWlCOUMsRUFBSSxlQUMzQixJQUFJL0csRUFBUTJKLEVBQUssWUFDYjFKLEVBQVMwSixFQUFLLGFBQ2Q3SixFQUFJLEVBQ0pDLEVBQUksRUFDUixHQUFJOEosRUFBZ0IsQ0FDbEI3SixFQUFRNkosRUFBZSxNQUN2QjVKLEVBQVM0SixFQUFlLE9BQ3hCLE1BQU1DLEVBQXNCOUQsR0FBUSxHQUNoQyxDQUFDOEQsR0FBdUJBLEdBQXVCaEosSUFBYSxXQUM5RGhCLEVBQUkrSixFQUFlLFdBQ25COUosRUFBSThKLEVBQWUsVUFFdkIsQ0FDQSxNQUFPLENBQ0wsTUFBQTdKLEVBQ0EsT0FBQUMsRUFDQSxFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUdBLFNBQVNnSyxHQUEyQjVYLEVBQVMyTyxFQUFVLENBQ3JELE1BQU1xSCxFQUFhSCxHQUFzQjdWLEVBQVMsR0FBTTJPLElBQWEsT0FBTyxFQUN0RThILEVBQU1ULEVBQVcsSUFBTWhXLEVBQVEsVUFDL0J3VyxFQUFPUixFQUFXLEtBQU9oVyxFQUFRLFdBQ2pDaVcsRUFBUWpELEVBQWNoVCxDQUFPLEVBQUlxVixHQUFTclYsQ0FBTyxFQUFJNEwsRUFBYSxDQUFDLEVBQ25FaUMsRUFBUTdOLEVBQVEsWUFBY2lXLEVBQU0sRUFDcENuSSxFQUFTOU4sRUFBUSxhQUFlaVcsRUFBTSxFQUN0Q3RJLEVBQUk2SSxFQUFPUCxFQUFNLEVBQ2pCckksRUFBSTZJLEVBQU1SLEVBQU0sRUFDdEIsTUFBTyxDQUNMLE1BQUFwSSxFQUNBLE9BQUFDLEVBQ0EsRUFBQUgsRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FDQSxTQUFTaUssR0FBa0M3WCxFQUFTOFgsRUFBa0JuSixFQUFVLENBQzlFLElBQUlqQixFQUNKLEdBQUlvSyxJQUFxQixXQUN2QnBLLEVBQU8rSixHQUFnQnpYLEVBQVMyTyxDQUFRLFVBQy9CbUosSUFBcUIsV0FDOUJwSyxFQUFPNkosR0FBZ0J6RSxFQUFtQjlTLENBQU8sQ0FBQyxVQUN6QytTLEVBQVUrRSxDQUFnQixFQUNuQ3BLLEVBQU9rSyxHQUEyQkUsRUFBa0JuSixDQUFRLE1BQ3ZELENBQ0wsTUFBTXVILEVBQWdCVCxHQUFpQnpWLENBQU8sRUFDOUMwTixFQUFPLENBQ0wsRUFBR29LLEVBQWlCLEVBQUk1QixFQUFjLEVBQ3RDLEVBQUc0QixFQUFpQixFQUFJNUIsRUFBYyxFQUN0QyxNQUFPNEIsRUFBaUIsTUFDeEIsT0FBUUEsRUFBaUIsTUFDL0IsQ0FDRSxDQUNBLE9BQU9ySyxHQUFpQkMsQ0FBSSxDQUM5QixDQUNBLFNBQVNxSyxHQUF5Qi9YLEVBQVNnWSxFQUFVLENBQ25ELE1BQU0zRCxFQUFhSixHQUFjalUsQ0FBTyxFQUN4QyxPQUFJcVUsSUFBZTJELEdBQVksQ0FBQ2pGLEVBQVVzQixDQUFVLEdBQUtILEdBQXNCRyxDQUFVLEVBQ2hGLEdBRUZmLEVBQWlCZSxDQUFVLEVBQUUsV0FBYSxTQUFXMEQsR0FBeUIxRCxFQUFZMkQsQ0FBUSxDQUMzRyxDQUtBLFNBQVNDLEdBQTRCalksRUFBU2tZLEVBQU8sQ0FDbkQsTUFBTUMsRUFBZUQsRUFBTSxJQUFJbFksQ0FBTyxFQUN0QyxHQUFJbVksRUFDRixPQUFPQSxFQUVULElBQUl6VCxFQUFTNFAsR0FBcUJ0VSxFQUFTLENBQUEsRUFBSSxFQUFLLEVBQUUsT0FBT29ZLEdBQU1yRixFQUFVcUYsQ0FBRSxHQUFLMUYsR0FBWTBGLENBQUUsSUFBTSxNQUFNLEVBQzFHQyxFQUFzQyxLQUMxQyxNQUFNQyxFQUFpQmhGLEVBQWlCdFQsQ0FBTyxFQUFFLFdBQWEsUUFDOUQsSUFBSWdVLEVBQWNzRSxFQUFpQnJFLEdBQWNqVSxDQUFPLEVBQUlBLEVBRzVELEtBQU8rUyxFQUFVaUIsQ0FBVyxHQUFLLENBQUNFLEdBQXNCRixDQUFXLEdBQUcsQ0FDcEUsTUFBTXVFLEVBQWdCakYsRUFBaUJVLENBQVcsRUFDNUN3RSxFQUEwQjlFLEdBQWtCTSxDQUFXLEVBQ3pELENBQUN3RSxHQUEyQkQsRUFBYyxXQUFhLFVBQ3pERixFQUFzQyxPQUVWQyxFQUFpQixDQUFDRSxHQUEyQixDQUFDSCxFQUFzQyxDQUFDRyxHQUEyQkQsRUFBYyxXQUFhLFVBQVksQ0FBQyxDQUFDRixHQUF1QyxDQUFDLFdBQVksT0FBTyxFQUFFLFNBQVNBLEVBQW9DLFFBQVEsR0FBS25GLEdBQWtCYyxDQUFXLEdBQUssQ0FBQ3dFLEdBQTJCVCxHQUF5Qi9YLEVBQVNnVSxDQUFXLEdBR3ZadFAsRUFBU0EsRUFBTyxPQUFPK1QsR0FBWUEsSUFBYXpFLENBQVcsRUFHM0RxRSxFQUFzQ0UsRUFFeEN2RSxFQUFjQyxHQUFjRCxDQUFXLENBQ3pDLENBQ0EsT0FBQWtFLEVBQU0sSUFBSWxZLEVBQVMwRSxDQUFNLEVBQ2xCQSxDQUNULENBSUEsU0FBU2dVLEdBQWdCMUssRUFBTSxDQUM3QixHQUFJLENBQ0YsUUFBQWhPLEVBQ0EsU0FBQTRQLEVBQ0EsYUFBQUMsRUFDQSxTQUFBbEIsQ0FDSixFQUFNWCxFQUVKLE1BQU0ySyxFQUFvQixDQUFDLEdBRE0vSSxJQUFhLG9CQUFzQjRELEdBQVd4VCxDQUFPLEVBQUksQ0FBQSxFQUFLaVksR0FBNEJqWSxFQUFTLEtBQUssRUFBRSxFQUFJLENBQUEsRUFBRyxPQUFPNFAsQ0FBUSxFQUN6R0MsQ0FBWSxFQUM5RCtJLEVBQXdCRCxFQUFrQixDQUFDLEVBQzNDRSxFQUFlRixFQUFrQixPQUFPLENBQUNHLEVBQVNoQixJQUFxQixDQUMzRSxNQUFNcEssRUFBT21LLEdBQWtDN1gsRUFBUzhYLEVBQWtCbkosQ0FBUSxFQUNsRixPQUFBbUssRUFBUSxJQUFNck4sR0FBSWlDLEVBQUssSUFBS29MLEVBQVEsR0FBRyxFQUN2Q0EsRUFBUSxNQUFRdE4sR0FBSWtDLEVBQUssTUFBT29MLEVBQVEsS0FBSyxFQUM3Q0EsRUFBUSxPQUFTdE4sR0FBSWtDLEVBQUssT0FBUW9MLEVBQVEsTUFBTSxFQUNoREEsRUFBUSxLQUFPck4sR0FBSWlDLEVBQUssS0FBTW9MLEVBQVEsSUFBSSxFQUNuQ0EsQ0FDVCxFQUFHakIsR0FBa0M3WCxFQUFTNFksRUFBdUJqSyxDQUFRLENBQUMsRUFDOUUsTUFBTyxDQUNMLE1BQU9rSyxFQUFhLE1BQVFBLEVBQWEsS0FDekMsT0FBUUEsRUFBYSxPQUFTQSxFQUFhLElBQzNDLEVBQUdBLEVBQWEsS0FDaEIsRUFBR0EsRUFBYSxHQUNwQixDQUNBLENBRUEsU0FBU0UsR0FBYy9ZLEVBQVMsQ0FDOUIsS0FBTSxDQUNKLE1BQUE2TixFQUNBLE9BQUFDLENBQ0osRUFBTWlILEdBQWlCL1UsQ0FBTyxFQUM1QixNQUFPLENBQ0wsTUFBQTZOLEVBQ0EsT0FBQUMsQ0FDSixDQUNBLENBRUEsU0FBU2tMLEdBQThCaFosRUFBU2tRLEVBQWN2QixFQUFVLENBQ3RFLE1BQU13SSxFQUEwQm5FLEVBQWM5QyxDQUFZLEVBQ3BEMkcsRUFBa0IvRCxFQUFtQjVDLENBQVksRUFDakR5RixFQUFVaEgsSUFBYSxRQUN2QmpCLEVBQU9tSSxHQUFzQjdWLEVBQVMsR0FBTTJWLEVBQVN6RixDQUFZLEVBQ3ZFLElBQUk0RyxFQUFTLENBQ1gsV0FBWSxFQUNaLFVBQVcsQ0FDZixFQUNFLE1BQU1JLEVBQVV0TCxFQUFhLENBQUMsRUFDOUIsR0FBSXVMLEdBQTJCLENBQUNBLEdBQTJCLENBQUN4QixFQUkxRCxJQUhJakQsR0FBWXhDLENBQVksSUFBTSxRQUFVZ0QsR0FBa0IyRCxDQUFlLEtBQzNFQyxFQUFTM0MsR0FBY2pFLENBQVksR0FFakNpSCxFQUF5QixDQUMzQixNQUFNQyxFQUFhdkIsR0FBc0IzRixFQUFjLEdBQU15RixFQUFTekYsQ0FBWSxFQUNsRmdILEVBQVEsRUFBSUUsRUFBVyxFQUFJbEgsRUFBYSxXQUN4Q2dILEVBQVEsRUFBSUUsRUFBVyxFQUFJbEgsRUFBYSxTQUMxQyxNQUFXMkcsSUFHVEssRUFBUSxFQUFJUixHQUFvQkcsQ0FBZSxHQUduRCxNQUFNUSxFQUFhUixHQUFtQixDQUFDTSxHQUEyQixDQUFDeEIsRUFBVWlCLEdBQWNDLEVBQWlCQyxDQUFNLEVBQUlsTCxFQUFhLENBQUMsRUFDOUgrQixFQUFJRCxFQUFLLEtBQU9vSixFQUFPLFdBQWFJLEVBQVEsRUFBSUcsRUFBVyxFQUMzRHpKLEVBQUlGLEVBQUssSUFBTW9KLEVBQU8sVUFBWUksRUFBUSxFQUFJRyxFQUFXLEVBQy9ELE1BQU8sQ0FDTCxFQUFBMUosRUFDQSxFQUFBQyxFQUNBLE1BQU9GLEVBQUssTUFDWixPQUFRQSxFQUFLLE1BQ2pCLENBQ0EsQ0FFQSxTQUFTdUwsR0FBbUJqWixFQUFTLENBQ25DLE9BQU9zVCxFQUFpQnRULENBQU8sRUFBRSxXQUFhLFFBQ2hELENBRUEsU0FBU2taLEdBQW9CbFosRUFBU21aLEVBQVUsQ0FDOUMsR0FBSSxDQUFDbkcsRUFBY2hULENBQU8sR0FBS3NULEVBQWlCdFQsQ0FBTyxFQUFFLFdBQWEsUUFDcEUsT0FBTyxLQUVULEdBQUltWixFQUNGLE9BQU9BLEVBQVNuWixDQUFPLEVBRXpCLElBQUlvWixFQUFrQnBaLEVBQVEsYUFNOUIsT0FBSThTLEVBQW1COVMsQ0FBTyxJQUFNb1osSUFDbENBLEVBQWtCQSxFQUFnQixjQUFjLE1BRTNDQSxDQUNULENBSUEsU0FBU0MsR0FBZ0JyWixFQUFTbVosRUFBVSxDQUMxQyxNQUFNdkUsRUFBTWhDLEVBQVU1UyxDQUFPLEVBQzdCLEdBQUl3VCxHQUFXeFQsQ0FBTyxFQUNwQixPQUFPNFUsRUFFVCxHQUFJLENBQUM1QixFQUFjaFQsQ0FBTyxFQUFHLENBQzNCLElBQUlzWixFQUFrQnJGLEdBQWNqVSxDQUFPLEVBQzNDLEtBQU9zWixHQUFtQixDQUFDcEYsR0FBc0JvRixDQUFlLEdBQUcsQ0FDakUsR0FBSXZHLEVBQVV1RyxDQUFlLEdBQUssQ0FBQ0wsR0FBbUJLLENBQWUsRUFDbkUsT0FBT0EsRUFFVEEsRUFBa0JyRixHQUFjcUYsQ0FBZSxDQUNqRCxDQUNBLE9BQU8xRSxDQUNULENBQ0EsSUFBSTFFLEVBQWVnSixHQUFvQmxaLEVBQVNtWixDQUFRLEVBQ3hELEtBQU9qSixHQUFnQnFELEdBQWVyRCxDQUFZLEdBQUsrSSxHQUFtQi9JLENBQVksR0FDcEZBLEVBQWVnSixHQUFvQmhKLEVBQWNpSixDQUFRLEVBRTNELE9BQUlqSixHQUFnQmdFLEdBQXNCaEUsQ0FBWSxHQUFLK0ksR0FBbUIvSSxDQUFZLEdBQUssQ0FBQ3dELEdBQWtCeEQsQ0FBWSxFQUNySDBFLEVBRUYxRSxHQUFnQjZELEdBQW1CL1QsQ0FBTyxHQUFLNFUsQ0FDeEQsQ0FFQSxNQUFNMkUsR0FBa0IsZUFBZ0JqSyxFQUFNLENBQzVDLE1BQU1rSyxFQUFvQixLQUFLLGlCQUFtQkgsR0FDNUNJLEVBQWtCLEtBQUssY0FDdkJDLEVBQXFCLE1BQU1ELEVBQWdCbkssRUFBSyxRQUFRLEVBQzlELE1BQU8sQ0FDTCxVQUFXMEosR0FBOEIxSixFQUFLLFVBQVcsTUFBTWtLLEVBQWtCbEssRUFBSyxRQUFRLEVBQUdBLEVBQUssUUFBUSxFQUM5RyxTQUFVLENBQ1IsRUFBRyxFQUNILEVBQUcsRUFDSCxNQUFPb0ssRUFBbUIsTUFDMUIsT0FBUUEsRUFBbUIsTUFDakMsQ0FDQSxDQUNBLEVBRUEsU0FBU0MsR0FBTTNaLEVBQVMsQ0FDdEIsT0FBT3NULEVBQWlCdFQsQ0FBTyxFQUFFLFlBQWMsS0FDakQsQ0FFQSxNQUFNNk8sR0FBVyxDQUNmLHNEQUFBb0ksR0FDQSxtQkFBQW5FLEVBQ0EsZ0JBQUE0RixHQUNBLGdCQUFBVyxHQUNBLGdCQUFBRSxHQUNBLGVBQUFqQyxHQUNBLGNBQUF5QixHQUNBLFNBQUExRCxHQUNBLFVBQUF0QyxFQUNBLE1BQUE0RyxFQUNGLEVBRUEsU0FBU0MsR0FBY25ZLEVBQUdDLEVBQUcsQ0FDM0IsT0FBT0QsRUFBRSxJQUFNQyxFQUFFLEdBQUtELEVBQUUsSUFBTUMsRUFBRSxHQUFLRCxFQUFFLFFBQVVDLEVBQUUsT0FBU0QsRUFBRSxTQUFXQyxFQUFFLE1BQzdFLENBR0EsU0FBU21ZLEdBQVk3WixFQUFTOFosRUFBUSxDQUNwQyxJQUFJQyxFQUFLLEtBQ0xDLEVBQ0osTUFBTUMsRUFBT25ILEVBQW1COVMsQ0FBTyxFQUN2QyxTQUFTa2EsR0FBVSxDQUNqQixJQUFJQyxFQUNKLGFBQWFILENBQVMsR0FDckJHLEVBQU1KLElBQU8sTUFBUUksRUFBSSxXQUFVLEVBQ3BDSixFQUFLLElBQ1AsQ0FDQSxTQUFTSyxFQUFRQyxFQUFNQyxFQUFXLENBQzVCRCxJQUFTLFNBQ1hBLEVBQU8sSUFFTEMsSUFBYyxTQUNoQkEsRUFBWSxHQUVkSixFQUFPLEVBQ1AsTUFBTUssRUFBMkJ2YSxFQUFRLHNCQUFxQixFQUN4RCxDQUNKLEtBQUF3VyxFQUNBLElBQUFDLEVBQ0EsTUFBQTVJLEVBQ0EsT0FBQUMsQ0FDTixFQUFReU0sRUFJSixHQUhLRixHQUNIUCxFQUFNLEVBRUosQ0FBQ2pNLEdBQVMsQ0FBQ0MsRUFDYixPQUVGLE1BQU0wTSxFQUFXN08sR0FBTThLLENBQUcsRUFDcEJnRSxFQUFhOU8sR0FBTXNPLEVBQUssYUFBZXpELEVBQU8zSSxFQUFNLEVBQ3BENk0sRUFBYy9PLEdBQU1zTyxFQUFLLGNBQWdCeEQsRUFBTTNJLEVBQU8sRUFDdEQ2TSxFQUFZaFAsR0FBTTZLLENBQUksRUFFdEJwVixFQUFVLENBQ2QsV0FGaUIsQ0FBQ29aLEVBQVcsTUFBUSxDQUFDQyxFQUFhLE1BQVEsQ0FBQ0MsRUFBYyxNQUFRLENBQUNDLEVBQVksS0FHL0YsVUFBV2xQLEdBQUksRUFBR0QsR0FBSSxFQUFHOE8sQ0FBUyxDQUFDLEdBQUssQ0FDOUMsRUFDSSxJQUFJTSxFQUFnQixHQUNwQixTQUFTQyxFQUFjeFosRUFBUyxDQUM5QixNQUFNeVosRUFBUXpaLEVBQVEsQ0FBQyxFQUFFLGtCQUN6QixHQUFJeVosSUFBVVIsRUFBVyxDQUN2QixHQUFJLENBQUNNLEVBQ0gsT0FBT1IsRUFBTyxFQUVYVSxFQU9IVixFQUFRLEdBQU9VLENBQUssRUFKcEJkLEVBQVksV0FBVyxJQUFNLENBQzNCSSxFQUFRLEdBQU8sSUFBSSxDQUNyQixFQUFHLEdBQUksQ0FJWCxDQUNJVSxJQUFVLEdBQUssQ0FBQ2xCLEdBQWNXLEVBQTBCdmEsRUFBUSxzQkFBcUIsQ0FBRSxHQVF6Rm9hLEVBQU8sRUFFVFEsRUFBZ0IsRUFDbEIsQ0FJQSxHQUFJLENBQ0ZiLEVBQUssSUFBSSxxQkFBcUJjLEVBQWUsQ0FDM0MsR0FBR3paLEVBRUgsS0FBTTZZLEVBQUssYUFDbkIsQ0FBTyxDQUNILE1BQVksQ0FDVkYsRUFBSyxJQUFJLHFCQUFxQmMsRUFBZXpaLENBQU8sQ0FDdEQsQ0FDQTJZLEVBQUcsUUFBUS9aLENBQU8sQ0FDcEIsQ0FDQSxPQUFBb2EsRUFBUSxFQUFJLEVBQ0xGLENBQ1QsQ0FVQSxTQUFTYSxHQUFXOU0sRUFBV0MsRUFBVThNLEVBQVE1WixFQUFTLENBQ3BEQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVaLEtBQU0sQ0FDSixlQUFBNlosRUFBaUIsR0FDakIsZUFBQUMsRUFBaUIsR0FDakIsY0FBQUMsRUFBZ0IsT0FBTyxnQkFBbUIsV0FDMUMsWUFBQUMsRUFBYyxPQUFPLHNCQUF5QixXQUM5QyxlQUFBQyxFQUFpQixFQUNyQixFQUFNamEsRUFDRWthLEVBQWNsRyxHQUFjbkgsQ0FBUyxFQUNyQ3NOLEVBQVlOLEdBQWtCQyxFQUFpQixDQUFDLEdBQUlJLEVBQWNoSCxHQUFxQmdILENBQVcsRUFBSSxDQUFBLEVBQUssR0FBR2hILEdBQXFCcEcsQ0FBUSxDQUFDLEVBQUksQ0FBQSxFQUN0SnFOLEVBQVUsUUFBUTlDLEdBQVksQ0FDNUJ3QyxHQUFrQnhDLEVBQVMsaUJBQWlCLFNBQVV1QyxFQUFRLENBQzVELFFBQVMsRUFDZixDQUFLLEVBQ0RFLEdBQWtCekMsRUFBUyxpQkFBaUIsU0FBVXVDLENBQU0sQ0FDOUQsQ0FBQyxFQUNELE1BQU1RLEVBQVlGLEdBQWVGLEVBQWN2QixHQUFZeUIsRUFBYU4sQ0FBTSxFQUFJLEtBQ2xGLElBQUlTLEVBQWlCLEdBQ2pCQyxFQUFpQixLQUNqQlAsSUFDRk8sRUFBaUIsSUFBSSxlQUFlMU4sR0FBUSxDQUMxQyxHQUFJLENBQUMyTixDQUFVLEVBQUkzTixFQUNmMk4sR0FBY0EsRUFBVyxTQUFXTCxHQUFlSSxJQUdyREEsRUFBZSxVQUFVeE4sQ0FBUSxFQUNqQyxxQkFBcUJ1TixDQUFjLEVBQ25DQSxFQUFpQixzQkFBc0IsSUFBTSxDQUMzQyxJQUFJRyxHQUNIQSxFQUFrQkYsSUFBbUIsTUFBUUUsRUFBZ0IsUUFBUTFOLENBQVEsQ0FDaEYsQ0FBQyxHQUVIOE0sRUFBTSxDQUNSLENBQUMsRUFDR00sR0FBZSxDQUFDRCxHQUNsQkssRUFBZSxRQUFRSixDQUFXLEVBRXBDSSxFQUFlLFFBQVF4TixDQUFRLEdBRWpDLElBQUkyTixFQUNBQyxFQUFjVCxFQUFpQnhGLEdBQXNCNUgsQ0FBUyxFQUFJLEtBQ2xFb04sR0FDRlUsRUFBUyxFQUVYLFNBQVNBLEdBQVksQ0FDbkIsTUFBTUMsRUFBY25HLEdBQXNCNUgsQ0FBUyxFQUMvQzZOLEdBQWUsQ0FBQ2xDLEdBQWNrQyxFQUFhRSxDQUFXLEdBQ3hEaEIsRUFBTSxFQUVSYyxFQUFjRSxFQUNkSCxFQUFVLHNCQUFzQkUsQ0FBUyxDQUMzQyxDQUNBLE9BQUFmLEVBQU0sRUFDQyxJQUFNLENBQ1gsSUFBSWlCLEVBQ0pWLEVBQVUsUUFBUTlDLEdBQVksQ0FDNUJ3QyxHQUFrQnhDLEVBQVMsb0JBQW9CLFNBQVV1QyxDQUFNLEVBQy9ERSxHQUFrQnpDLEVBQVMsb0JBQW9CLFNBQVV1QyxDQUFNLENBQ2pFLENBQUMsRUFDRFEsR0FBYSxNQUFRQSxFQUFTLEdBQzdCUyxFQUFtQlAsSUFBbUIsTUFBUU8sRUFBaUIsV0FBVSxFQUMxRVAsRUFBaUIsS0FDYkwsR0FDRixxQkFBcUJRLENBQU8sQ0FFaEMsQ0FDRixDQW1CQSxNQUFNOWEsR0FBU21iLEdBUVQxTCxHQUFnQjJMLEdBT2hCbkssR0FBUW9LLEdBZ0RSMU4sR0FBa0IsQ0FBQ1QsRUFBV0MsRUFBVTlNLElBQVksQ0FJeEQsTUFBTThXLEVBQVEsSUFBSSxJQUNabUUsRUFBZ0IsQ0FDcEIsU0FBQXhOLEdBQ0EsR0FBR3pOLENBQ1AsRUFDUWtiLEVBQW9CLENBQ3hCLEdBQUdELEVBQWMsU0FDakIsR0FBSW5FLENBQ1IsRUFDRSxPQUFPcUUsR0FBa0J0TyxFQUFXQyxFQUFVLENBQzVDLEdBQUdtTyxFQUNILFNBQVVDLENBQ2QsQ0FBRyxDQUNILEVDeHVCQSxTQUFTRSxHQUEwQnJhLEVBQVEsQ0FDekMsT0FBT0EsR0FBVSxNQUFRLE9BQU9BLEdBQVcsVUFBWSxRQUFTQSxDQUNsRSxDQUNBLFNBQVNpVCxHQUFjalQsRUFBUSxDQUM3QixHQUFJcWEsR0FBMEJyYSxDQUFNLEVBQUcsQ0FDckMsTUFBTW5DLEVBQVVtQyxFQUFPLElBQ3ZCLE9BQU93USxHQUFPM1MsQ0FBTyxHQUFLMFMsR0FBWTFTLENBQU8sSUFBTSxXQUFhLEtBQU9BLENBQ3pFLENBQ0EsT0FBT21DLENBQ1QsQ0FFQSxTQUFTc2EsR0FBUXZZLEVBQVEsQ0FDdkIsT0FBTyxPQUFPQSxHQUFXLFdBQWFBLEVBQU0sRUFBS3dZLEVBQUFBLE1BQU14WSxDQUFNLENBQy9ELENBd0JBLFNBQVN5WSxHQUFPM2MsRUFBUyxDQUN2QixPQUFJLE9BQU8sT0FBVyxJQUNiLEdBRUdBLEVBQVEsY0FBYyxhQUFlLFFBQ3RDLGtCQUFvQixDQUNqQyxDQUVBLFNBQVM0YyxHQUFXNWMsRUFBU3lFLEVBQU8sQ0FDbEMsTUFBTW9ZLEVBQU1GLEdBQU8zYyxDQUFPLEVBQzFCLE9BQU8sS0FBSyxNQUFNeUUsRUFBUW9ZLENBQUcsRUFBSUEsQ0FDbkMsQ0FTQSxTQUFTQyxHQUFZN08sRUFBV0MsRUFBVTlNLEVBQVMsQ0FDN0NBLElBQVksU0FDZEEsRUFBVSxDQUFBLEdBRVosTUFBTTJiLEVBQTZCM2IsRUFBUSxxQkFDckM0YixFQUFhemdCLEVBQUFBLFNBQVMsSUFBTSxDQUNoQyxJQUFJMGdCLEVBQ0osT0FBUUEsRUFBV1IsR0FBUXJiLEVBQVEsSUFBSSxJQUFNLEtBQU82YixFQUFXLEVBQ2pFLENBQUMsRUFDS0MsRUFBbUIzZ0IsRUFBQUEsU0FBUyxJQUFNa2dCLEdBQVFyYixFQUFRLFVBQVUsQ0FBQyxFQUM3RCtiLEVBQWtCNWdCLEVBQUFBLFNBQVMsSUFBTSxDQUNyQyxJQUFJNmdCLEVBQ0osT0FBUUEsRUFBWVgsR0FBUXJiLEVBQVEsU0FBUyxJQUFNLEtBQU9nYyxFQUFZLFFBQ3hFLENBQUMsRUFDS0MsRUFBaUI5Z0IsRUFBQUEsU0FBUyxJQUFNLENBQ3BDLElBQUkrZ0IsRUFDSixPQUFRQSxFQUFZYixHQUFRcmIsRUFBUSxRQUFRLElBQU0sS0FBT2tjLEVBQVksVUFDdkUsQ0FBQyxFQUNLQyxFQUFrQmhoQixFQUFBQSxTQUFTLElBQU0sQ0FDckMsSUFBSWloQixFQUNKLE9BQVFBLEVBQVlmLEdBQVFyYixFQUFRLFNBQVMsSUFBTSxLQUFPb2MsRUFBWSxFQUN4RSxDQUFDLEVBQ0tDLEVBQW1CbGhCLEVBQUFBLFNBQVMsSUFBTTZZLEdBQWNuSCxFQUFVLEtBQUssQ0FBQyxFQUNoRXlQLEVBQWtCbmhCLEVBQUFBLFNBQVMsSUFBTTZZLEdBQWNsSCxFQUFTLEtBQUssQ0FBQyxFQUM5RFAsRUFBSXhULEVBQUFBLElBQUksQ0FBQyxFQUNUeVQsRUFBSXpULEVBQUFBLElBQUksQ0FBQyxFQUNUd1UsRUFBV3hVLEVBQUFBLElBQUlrakIsRUFBZSxLQUFLLEVBQ25DL1EsRUFBWW5TLEVBQUFBLElBQUlnakIsRUFBZ0IsS0FBSyxFQUNyQ25PLEVBQWlCMk8sRUFBQUEsV0FBVyxFQUFFLEVBQzlCQyxFQUFlempCLEVBQUFBLElBQUksRUFBSyxFQUN4QjBqQixFQUFpQnRoQixFQUFBQSxTQUFTLElBQU0sQ0FDcEMsTUFBTXVoQixFQUFnQixDQUNwQixTQUFVblAsRUFBUyxNQUNuQixLQUFNLElBQ04sSUFBSyxHQUNYLEVBQ0ksR0FBSSxDQUFDK08sRUFBZ0IsTUFDbkIsT0FBT0ksRUFFVCxNQUFNQyxFQUFPbkIsR0FBV2MsRUFBZ0IsTUFBTy9QLEVBQUUsS0FBSyxFQUNoRHFRLEVBQU9wQixHQUFXYyxFQUFnQixNQUFPOVAsRUFBRSxLQUFLLEVBQ3RELE9BQUkyUCxFQUFnQixNQUNYLENBQ0wsR0FBR08sRUFDSCxVQUFXLGFBQWVDLEVBQU8sT0FBU0MsRUFBTyxNQUNqRCxHQUFJckIsR0FBT2UsRUFBZ0IsS0FBSyxHQUFLLEtBQU8sQ0FDMUMsV0FBWSxXQUN0QixDQUNBLEVBRVcsQ0FDTCxTQUFVL08sRUFBUyxNQUNuQixLQUFNb1AsRUFBTyxLQUNiLElBQUtDLEVBQU8sSUFDbEIsQ0FDRSxDQUFDLEVBQ0QsSUFBSUMsRUFDSixTQUFTakQsR0FBUyxDQUNoQixHQUFJeUMsRUFBaUIsT0FBUyxNQUFRQyxFQUFnQixPQUFTLEtBQzdELE9BRUYsTUFBTVEsRUFBT2xCLEVBQVcsTUFDeEJ0TyxHQUFnQitPLEVBQWlCLE1BQU9DLEVBQWdCLE1BQU8sQ0FDN0QsV0FBWVIsRUFBaUIsTUFDN0IsVUFBV0MsRUFBZ0IsTUFDM0IsU0FBVUUsRUFBZSxLQUMvQixDQUFLLEVBQUUsS0FBS2MsR0FBWSxDQUNsQnhRLEVBQUUsTUFBUXdRLEVBQVMsRUFDbkJ2USxFQUFFLE1BQVF1USxFQUFTLEVBQ25CeFAsRUFBUyxNQUFRd1AsRUFBUyxTQUMxQjdSLEVBQVUsTUFBUTZSLEVBQVMsVUFDM0JuUCxFQUFlLE1BQVFtUCxFQUFTLGVBT2hDUCxFQUFhLE1BQVFNLElBQVMsRUFDaEMsQ0FBQyxDQUNILENBQ0EsU0FBU2hFLEdBQVUsQ0FDYixPQUFPK0QsR0FBZ0MsYUFDekNBLEVBQTJCLEVBQzNCQSxFQUE4QixPQUVsQyxDQUNBLFNBQVNHLEdBQVMsQ0FFaEIsR0FEQWxFLEVBQU8sRUFDSDZDLElBQStCLE9BQVcsQ0FDNUMvQixFQUFNLEVBQ04sTUFDRixDQUNBLEdBQUl5QyxFQUFpQixPQUFTLE1BQVFDLEVBQWdCLE9BQVMsS0FBTSxDQUNuRU8sRUFBOEJsQixFQUEyQlUsRUFBaUIsTUFBT0MsRUFBZ0IsTUFBTzFDLENBQU0sRUFDOUcsTUFDRixDQUNGLENBQ0EsU0FBU3pMLEdBQVEsQ0FDVnlOLEVBQVcsUUFDZFksRUFBYSxNQUFRLEdBRXpCLENBQ0F4akIsT0FBQUEsRUFBQUEsTUFBTSxDQUFDOGlCLEVBQWtCQyxFQUFpQkUsRUFBZ0JMLENBQVUsRUFBR2hDLEVBQVEsQ0FDN0UsTUFBTyxNQUNYLENBQUcsRUFDRDVnQixFQUFBQSxNQUFNLENBQUNxakIsRUFBa0JDLENBQWUsRUFBR1UsRUFBUSxDQUNqRCxNQUFPLE1BQ1gsQ0FBRyxFQUNEaGtCLEVBQUFBLE1BQU00aUIsRUFBWXpOLEVBQU8sQ0FDdkIsTUFBTyxNQUNYLENBQUcsRUFDRzhPLEVBQUFBLGdCQUFlLEdBQ2pCQyxFQUFBQSxlQUFlcEUsQ0FBTyxFQUVqQixDQUNMLEVBQUdxRSxFQUFBQSxnQkFBZ0I1USxDQUFDLEVBQ3BCLEVBQUc0USxFQUFBQSxnQkFBZ0IzUSxDQUFDLEVBQ3BCLFNBQVUyUSxFQUFBQSxnQkFBZ0I1UCxDQUFRLEVBQ2xDLFVBQVc0UCxFQUFBQSxnQkFBZ0JqUyxDQUFTLEVBQ3BDLGVBQWdCaVMsRUFBQUEsZ0JBQWdCdlAsQ0FBYyxFQUM5QyxhQUFjdVAsRUFBQUEsZ0JBQWdCWCxDQUFZLEVBQzFDLGVBQUFDLEVBQ0EsT0FBQTdDLENBQ0osQ0FDQSxDQzNMTyxNQUFNd0QsR0FBaUIsQ0FBQ2xlLEVBQW1CcVAsSUFFekMsRUFEUyxNQUFNLFFBQVFBLENBQVEsRUFBSUEsRUFBVyxDQUFDQSxDQUFRLEdBQzlDLEtBQU15SSxHQUFPQSxFQUFHLFNBQVM5WCxFQUFNLE1BQWMsQ0FBQyw4RkNhOUQsTUFBTXZILEVBQVFDLEVBSVJ5bEIsRUFBa0N0a0IsRUFBQUEsSUFBSSxJQUFJLEVBQzFDK1QsRUFBb0MvVCxFQUFBQSxJQUFJLElBQUksRUFDNUM4ZixFQUFnQzlmLEVBQUFBLElBQUksSUFBSSxFQUN4Q3VrQixFQUFZdmtCLEVBQUFBLElBQUksRUFBSyxFQUNyQndrQixFQUFnQnhrQixFQUFBQSxJQUFJLEVBQUssRUFDekJ5VSxFQUFhelUsRUFBQUEsSUFBSSxDQUFDcVcsS0FBaUJvTyxHQUFpQixDQUFFLFNBQVU3bEIsRUFBTSxNQUFBLENBQVEsRUFBR2laLEdBQU0sQ0FBRSxRQUFTLEVBQUEsQ0FBSSxDQUFDLENBQUMsRUFFeEc2TSxFQUFnQnRpQixFQUFBQSxTQUFTLElBQU1taUIsRUFBVSxPQUFTQyxFQUFjLEtBQUssRUFFckUsQ0FBRSxlQUFBZCxDQUFBLEVBQW1CZixHQUFZMkIsRUFBUXZRLEVBQVUsQ0FDdkQsV0FBQVUsRUFDQSxTQUFVLFFBQ1YscUJBQXNCbU0sRUFBQSxDQUN2QixFQUVLK0QsRUFBZ0NyYixHQUFrQixDQUNsRCxDQUFDZ2IsRUFBTyxPQUFTLENBQUN2USxFQUFTLE9BQzNCc1EsR0FBZS9hLEVBQUcsQ0FBQ2diLEVBQU8sTUFBT3ZRLEVBQVMsS0FBSyxDQUFDLElBQ2xEeVEsRUFBYyxNQUFRLEdBQ3RCbGIsRUFBRSxlQUFBLEVBQ0ZBLEVBQUUseUJBQUEsRUFFTixFQUVNc2IsRUFBK0IsSUFBTSxDQUN6Q0wsRUFBVSxNQUFRLEVBQ3BCLEVBRU1NLEVBQWdDLElBQU0sQ0FDMUNOLEVBQVUsTUFBUSxFQUNwQixFQUVNTyxFQUE0QnhiLEdBQWtCLENBQ2xEQSxFQUFFLGVBQUEsRUFDRWtiLEVBQWMsT0FDaEJBLEVBQWMsTUFBUSxHQUN0QkQsRUFBVSxNQUFRLElBRWxCQyxFQUFjLE1BQVEsRUFFMUIsRUFFTU8sRUFBOEIsSUFBTSxDQUN4QyxHQUFJLENBQUNULEVBQU8sTUFBTyxPQUFPLEtBQzFCQSxFQUFPLE1BQU0saUJBQWlCLFlBQWFNLENBQTRCLEVBQ3ZFTixFQUFPLE1BQU0saUJBQWlCLGFBQWNPLENBQTZCLEVBQ3pFUCxFQUFPLE1BQU0saUJBQWlCLFFBQVNRLENBQXdCLENBQ2pFLEVBRU1FLEVBQW1DLElBQU0sQ0FDN0MsR0FBSSxDQUFDVixFQUFPLE1BQU8sT0FBTyxLQUMxQkEsRUFBTyxNQUFNLG9CQUFvQixZQUFhTSxDQUE0QixFQUMxRU4sRUFBTyxNQUFNLG9CQUFvQixhQUFjTyxDQUE2QixFQUM1RVAsRUFBTyxNQUFNLG9CQUFvQixRQUFTUSxDQUF3QixDQUNwRSxFQUVNRyxFQUFrQzNiLEdBQXFCLENBQ3ZEQSxFQUFFLE1BQVEsV0FDWmtiLEVBQWMsTUFBUSxHQUUxQixFQUVNVSxFQUF5QixJQUFNLENBQzlCcEYsRUFBSyxRQUNWQSxFQUFLLE1BQU0saUJBQWlCLFFBQVM2RSxFQUE4QixFQUFJLEVBQ3ZFN0UsRUFBSyxNQUFNLGlCQUFpQixVQUFXbUYsQ0FBOEIsRUFDdkUsRUFFTUUsRUFBOEIsSUFBTSxDQUNuQ3JGLEVBQUssUUFDVkEsRUFBSyxNQUFNLG9CQUFvQixRQUFTNkUsRUFBOEIsRUFBSSxFQUMxRTdFLEVBQUssTUFBTSxvQkFBb0IsVUFBV21GLENBQThCLEVBQzFFLEVBRU1HLEVBQXNCLElBQU0sQ0FDaENkLEVBQU8sTUFBUSxTQUFTLGVBQWUxbEIsRUFBTSxRQUFRLENBQ3ZELEVBRUFxQixPQUFBQSxFQUFBQSxNQUNFLElBQU11a0IsRUFBYyxNQUNuQnRZLEdBQWEsQ0FDUkEsRUFDRmdaLEVBQUEsRUFFQUMsRUFBQSxDQUVKLENBQUEsRUFHRmxsQixFQUFBQSxNQUNFLElBQU1yQixFQUFNLFNBQ1osSUFBTSxDQUNKb21CLEVBQUEsRUFDQUksRUFBQSxFQUNBTCxFQUFBLENBQ0YsQ0FBQSxFQUdGOVksRUFBQUEsWUFBWSxJQUFNLENBQ2hCd0ksRUFBVyxNQUFRLENBQUM0QixHQUFBLEVBQWlCb08sR0FBaUIsQ0FBRSxTQUFVN2xCLEVBQU0sTUFBQSxDQUFRLEVBQUdpWixHQUFNLENBQUUsUUFBUyxFQUFBLENBQUksQ0FBQyxDQUMzRyxDQUFDLEVBRUR0SCxFQUFBQSxjQUFjLElBQU0sQ0FDbEJYLEdBQUEsQ0FDRixDQUFDLEVBRUR0SCxFQUFBQSxVQUFVLElBQU0sQ0FDZDhjLEVBQUEsRUFDQXRGLEVBQUssTUFBUSxTQUFTLGdCQUN0QmlGLEVBQUEsQ0FDRixDQUFDLEVBRUR4YyxFQUFBQSxZQUFZLElBQU0sQ0FDaEJ5YyxFQUFBLENBQ0YsQ0FBQyx3QkFJRHZrQixFQUFBQSxZQW9CVytQLFdBQUEsQ0FwQkEsT0FBUXJSLEVBQUFBLE1BQUF3USxFQUFBLENBQVksRUFBQSxHQUM3QnpPLEVBQUFBLFlBa0JhbWtCLEVBQUFBLFdBQUEsS0FBQSxtQkFqQlgsSUFnQk0sa0JBaEJOcG1CLEVBQUFBLG1CQWdCTSxNQUFBLENBZkgsTUFBS0MsRUFBQUEsZUFBQSxnQkFBd0NDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBbUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBZVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFlVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLEtBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLElBQWVXLFFBQUFYLENBQUEsRUFBSSxPQUFPLE1BQUEsV0FVeFAsV0FBSixJQUFJdVYsRUFDSCwyQkFBWTVVLEVBQUFBLE1BQUF1a0IsQ0FBQSxFQUFjLENBQUEsR0FHM0J0aUIsRUFBQUEsV0FBUUMsRUFBQSxPQUFBLFVBQUEsQ0FBQSxFQUFBLE9BQUEsRUFBQSxDQUFBLGVBRkFxakIsRUFBQSxLQUFhLENBQUEsdVZDNUkzQixNQUFNOWxCLEVBQVFDLEVBT1J5bUIsRUFBY3hrQixFQUFBQSx1QkFBc0MsRUFFcER5a0IsRUFBV25qQixFQUFBQSxTQUFTLElBQU0sTUFBTSxLQUFLLENBQUUsT0FBUXhELEVBQU0sU0FBQSxFQUFhLENBQUMrSixFQUFHbEYsSUFBVUEsRUFBUSxDQUFDLENBQUMsRUFFMUZJLEVBQWUyaEIsR0FBb0IsQ0FDdkNGLEVBQVksTUFBUUUsQ0FDdEIsOEJBSUF6bUIsRUFBQUEsbUJBd0NNLE1BQUEsQ0F4Q0EsTUFBS0csRUFBQUEsZUFBQSxDQUFBLGNBQWtCQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUEsQ0FBQSxHQUN6Q1MsRUFBQUEsbUJBVVUsVUFBQSxDQVZBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBR0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBUVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBU1csUUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTyxJQUFJLENBQUEsQ0FBQSxHQUM5RlMsRUFBQUEsbUJBRU0sTUFBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQSxDQUFBLEVBQzlCeUMsa0JBQUFyQyxFQUFNLEtBQUssRUFBQSxDQUFBLEVBSVJBLEVBQU0sMEJBRmRHLEVBQUFBLG1CQUtNLE1BQUEsT0FKSCx3QkFBUUksRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFTVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBLENBQUEsRUFHM0R5QyxFQUFBQSxnQkFBQXFrQixFQUFBLEtBQVcsRUFBRyxJQUFDcmtCLEVBQUFBLGdCQUFHckMsRUFBTSxTQUFTLEVBQUEsQ0FBQSxtQ0FLaENBLEVBQU0sMkJBRmRHLEVBQUFBLG1CQUtVLFVBQUEsT0FKUCxNQUFLRyxFQUFBQSxlQUFBLENBQUdDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBUVcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTyxJQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQVFXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLENBQUEsQ0FBQSxFQUd4RnlDLEVBQUFBLGdCQUFBckMsRUFBTSxXQUFXLEVBQUEsQ0FBQSwrQkFHdEJLLEVBQUFBLG1CQW9CVSxVQUFBLENBcEJBLE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSxrQkFBc0JDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQU1XLFFBQUFYLENBQUEsRUFBSSxJQUFJLFFBQVNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssR0FBSVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxFQUFFLENBQUEsQ0FBQSxvQkFDMUdPLEVBQUFBLG1CQWtCRXdFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FEa0J5aEIsRUFBQSxNQUFYQyxrQkFqQlR6bUIsRUFBQUEsbUJBa0JFLFNBQUEsQ0FqQkMsTUFBS0csRUFBQUEsZUFBQSx1QkFBK0NDLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBbUJXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQW9CVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWtCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEdBQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBY1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxLQUFnQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxLQUFnQmduQixJQUFPLEdBQUEsQ0FBQSwyQkFBQSxFQUFtREEsSUFBWUQsRUFBQSxNQUFTLFFBQU0sQ0FBQSwwQkFBQSxFQUE0Q0MsR0FBV0YsU0FBVyxDQUFLbm1CLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBUSxDQUFBLEdBYXJjLElBQUtnbkIsRUFDTCxRQUFLeGhCLEdBQUVILEVBQVkyaEIsQ0FBTyxFQUMzQixLQUFLLFFBQUEsb01DckRYLE1BQU01bUIsRUFBUUMsZ0JBTWRDLFlBQUEsRUFBQUMscUJBb0JVLFVBcEJWQyxHQW9CVSxDQW5CUkMsRUFBQUEsbUJBRUssS0FBQSxDQUZBLHdCQUFRRSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLElBQUksQ0FBQSxDQUFBLEVBQzlCeUMsa0JBQUFyQyxFQUFNLE9BQU8sRUFBQSxDQUFBLEVBR2xCSyxFQUFBQSxtQkFjSyxLQUFBLENBZEEsTUFBS0MsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsUUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBTVcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBS1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLGFBQWEsR0FBRyxDQUFBLENBQUEsSUFDN0VNLFlBQUEsRUFBQSxFQUFBQyxFQUFBQSxtQkFZS3dFLEVBQUFBLFNBQUEsS0FBQU8sRUFBQUEsV0FUWWxGLEVBQU0sTUFBZDZtQixrQkFIVDFtQixFQUFBQSxtQkFZSyxLQUFBLENBWEYsTUFBS0csRUFBQUEsZUFBQSxDQUFBLGdCQUFvQkMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxPQUFRVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksSUFBSSxRQUFTVyxRQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQSxFQUMzRyxJQUFLaW5CLEVBQUssS0FBQSxHQUdYdmtCLEVBQUFBLFlBTW1Cb0IsR0FBQSxDQUxoQix3QkFBUW5ELFFBQUFYLENBQUEsRUFBSSxVQUFVLEtBQUssR0FBRyxDQUFBLEVBQzlCLEtBQU1pbkIsRUFBSyxJQUNYLE9BQVFBLEVBQUssU0FBV3RtQixFQUFBQSxNQUFBK0MsQ0FBQSxFQUFPLE1BQVEvQyxRQUFBK0MsQ0FBQSxFQUFPLElBQUEscUJBRS9DLElBQWdCLENBQWJ3QixFQUFBQSxnQkFBQXpDLEVBQUFBLGdCQUFBd2tCLEVBQUssS0FBSyxFQUFBLENBQUEsQ0FBQSxnVkNWckIsTUFBTWpqQixFQUFPQyxFQUVQaWpCLEVBQStDMWxCLEVBQUFBLElBQUksSUFBSSxFQUV2RGdRLEVBQVNsUCxFQUFBQSxTQUFvQmpDLEVBQUEsWUFBbUIsRUFFaERvUixFQUEwQixJQUFNLFFBQ3BDbk4sRUFBQTRpQixFQUFjLFFBQWQsTUFBQTVpQixFQUFxQixXQUN2QixFQUVNb04sRUFBMkIsSUFBTSxRQUNyQ3BOLEVBQUE0aUIsRUFBYyxRQUFkLE1BQUE1aUIsRUFBcUIsT0FDdkIsRUFFTXNOLEVBQVEsSUFBTSxDQUNsQkosRUFBTyxNQUFRLEVBQ2pCLEVBRU1LLEVBQXNCLElBQU0sQ0FDaENELEVBQUEsQ0FDRixFQUVNRSxFQUF1QmhILEdBQWEsQ0FDeENBLEVBQUUsZUFBQSxFQUNGOEcsRUFBQSxDQUNGLEVBRUFuUSxPQUFBQSxFQUFBQSxNQUFNK1AsRUFBUSxJQUFNLENBQ2IwVixFQUFjLFFBQ2YxVixFQUFPLE1BQ1RDLEVBQUEsRUFFQUMsRUFBQSxFQUVGYixHQUFjVyxFQUFPLEtBQUssRUFDNUIsQ0FBQyxFQUVETyxFQUFBQSxjQUFjLElBQU0sQ0FDbEJYLEdBQUEsQ0FDRixDQUFDLEVBRUR0SCxFQUFBQSxVQUFVLElBQU0sQ0FDVjBILEVBQU8sT0FDVEMsRUFBQSxDQUVKLENBQUMsd0JBSUR4UCxFQUFBQSxZQWdFVytQLFdBQUEsQ0FoRUEsT0FBUXJSLEVBQUFBLE1BQUF3USxFQUFBLENBQVksRUFBQSxHQUM3QjFRLEVBQUFBLG1CQThEUyxTQUFBLENBN0ROLE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSxhQUFpQkMsUUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBU1csUUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sS0FBTVcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxNQUFNLENBQUEsVUFDMUYsZ0JBQUosSUFBSWtuQixFQUNILHdCQUFZclYsRUFBbUIsQ0FBQSxNQUFBLENBQUEsRUFDL0Isb0NBQUQsSUFBQSxDQUFBLEVBQWMsQ0FBQSxTQUFBLENBQUEsR0FDYixxQkFBZ0JDLEVBQW1CLENBQUEsUUFBQSxDQUFBLENBQUEsR0FFcENyUixFQUFBQSxtQkFzRE0sTUFBQSxDQXJESCxNQUFLQyxFQUFBQSxlQUFBLG1CQUEyQ0MsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxRQUFtQlcsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsT0FBa0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQWdCVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWtCVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFBLEtBVTNOUyxFQUFBQSxtQkF3QlMsU0FBQSxDQXZCTixNQUFLQyxFQUFBQSxlQUFBLENBQWdCQyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFrQlcsUUFBQVgsQ0FBQSxFQUFJLFVBQVUsUUFBcUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLElBQUksSUFBaUJXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsSUFBaUJXLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQXNCVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxHQUFBLEtBYzlMSyxFQUFBLDRCQUxSNEIsRUFBQUEsWUFNRTBDLEVBQUEsT0FMQyxNQUFLakUsRUFBQUEsZUFBQSxDQUFHQyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLElBQUtXLEVBQUFBLFNBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQSxFQUM5QyxLQUFNQSxFQUFBQSxNQUFBd0IsQ0FBQSxFQUFLLGFBQ1gsU0FBVXhCLEVBQUFBLE1BQUE4QyxDQUFBLEVBQVMsV0FDbkIsdUJBQU9PLEVBQUksTUFBQSxFQUFBLG1FQUlkdEIsRUFBQUEsWUFLRWlDLEVBQUEsQ0FKQyxNQUFLakUsRUFBQUEsZUFBQSxDQUFHQyxXQUFJLEtBQUssS0FBSyxJQUFLQSxRQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLElBQUtXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBLEVBQ3BFLEtBQU1XLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxTQUFVeEIsRUFBQUEsTUFBQThDLENBQUEsRUFBUyxXQUNuQixRQUFPbU8sQ0FBQSwwQ0FJWmxQLEVBQUFBLFlBQWVGLEVBQUEsRUFFZi9CLEVBQUFBLG1CQWNNLE1BQUEsQ0FiSCxNQUFLQyxFQUFBQSxlQUFBLHNCQUFrREMsUUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBa0JXLFFBQUFYLENBQUEsRUFBSSxPQUFPLEtBQWtCVyxRQUFBWCxDQUFBLEVBQUksVUFBVSxRQUFxQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxPQUFvQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRSxLQUFrQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTyxJQUFpQlcsUUFBQVgsQ0FBQSxFQUFJLFNBQVMsU0FBc0JXLFFBQUFYLENBQUEsRUFBSSxNQUFNLElBQUEsS0FZM1M0QyxFQUFBQSxXQUFRQyxFQUFBLE9BQUEsVUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLENBQUEsMlJDM0hoQixNQUFNekMsRUFBUUMsRUFJUitKLEVBQVc5SCxFQUFBQSx1QkFBdUMsRUFFbEQrQyxFQUFjLElBQU0sQ0FDbkJqRixFQUFNLFdBQ1RnSyxFQUFTLE1BQVEsQ0FBQ0EsRUFBUyxNQUUvQiw4QkFJQTdKLEVBQUFBLG1CQWtDUyxTQUFBLENBakNOLE1BQUtHLEVBQUFBLGVBQUEsZUFBK0JDLFFBQUFYLENBQUEsRUFBSSxRQUFRLEtBQVlXLFFBQUFYLENBQUEsRUFBSSxNQUFNLE9BQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxLQUFZVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE9BQWNXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sSUFBV1csRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxJQUFXb0ssRUFBQSxNQUFRLENBQUEsU0FBY3pKLEVBQUFBLFNBQUksR0FBRyxTQUFTLEVBQUEsQ0FBS0EsRUFBQUEsU0FBSSxHQUFHLFFBQVEsUUFBU0EsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLEVBQVNLLEVBQUEsVUFBUSxDQUFLTSxFQUFBQSxNQUFBWCxDQUFBLEVBQUksUUFBUSxRQUFRLENBQUEsR0FZcFcsU0FBVUksRUFBTSxTQUNoQixRQUFPaUYsRUFDUixhQUFXLFNBQ1gsS0FBSyxRQUFBLEdBRUw1RSxFQUFBQSxtQkFlTSxNQUFBLENBZEgsTUFBS0MsRUFBQUEsZUFBQSx5QkFBNkNDLFFBQUFYLENBQUEsRUFBSSxTQUFTLFNBQWtCVyxRQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFjVyxRQUFBWCxDQUFBLEVBQUksTUFBTSxPQUFnQlcsUUFBQVgsQ0FBQSxFQUFJLE1BQU0sT0FBZ0JXLEVBQUFBLE1BQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sS0FBY29LLEVBQUEsTUFBUSxDQUFBLFNBQWN6SixFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sRUFBQSxDQUFLVyxFQUFBQSxNQUFBWCxDQUFBLEVBQUksR0FBRyxTQUFTLENBQUEsS0FValEwQyxFQUFBQSxZQUdFQyxFQUFBLENBRkMsS0FBTWhDLEVBQUFBLE1BQUF3QixDQUFBLEVBQUssTUFDWCxLQUFNeEIsRUFBQUEsTUFBQUUsQ0FBQSxFQUFLLEtBQUEsOE9DekNsQixNQUFNc21CLEVBQWE3a0IsRUFBQUEsdUJBQXNDLEVBRW5EK0MsRUFBZUosR0FBa0IsQ0FDckNraUIsRUFBVyxNQUFRbGlCLENBQ3JCLDhCQUlBMUUsRUFBQUEsbUJBcUJNLE1BQUEsQ0FyQkEsTUFBS0csRUFBQUEsZUFBQSxDQUFBLFlBQWdCQyxFQUFBQSxTQUFJLFFBQVEsS0FBTUEsRUFBQUEsU0FBSSxPQUFPLE9BQU8sSUFBS0EsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxHQUFHLENBQUEsQ0FBQSxHQUN0RjBDLEVBQUFBLFlBbUJlMGtCLEdBQUEsQ0FuQkEsY0FBYSxJQUFJLG1CQUc1QixJQUE0QixFQUY5QjltQixFQUFBQSxVQUFBLEVBQUEsRUFBQUMsRUFBQUEsbUJBaUJLd0UsV0FBQSxLQUFBTyxFQUFBQSxXQWZvQmpGLEVBQUEsS0FBSSxDQUFuQmtGLEVBQUtOLG1CQUZmMUUsRUFBQUEsbUJBaUJLLEtBQUEsQ0FoQkYsSUFBS2dGLEVBQUksS0FBQSxHQUdWN0MsRUFBQUEsWUFXRWdDLEdBQUEsQ0FWQyxNQUFLaEUsRUFBQUEsZUFBQSxDQUFnQnVFLElBQVVraUIsUUFBYXhtQixFQUFBQSxNQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsTUFBUVcsRUFBQUEsU0FBSSxLQUFLLE1BQU0sUUFBUSxRQUFxQkEsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTyxJQUFpQlcsRUFBQUEsTUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFxQlcsUUFBQVgsQ0FBQSxFQUFJLGdCQUFnQixHQUFBLEdBTWxOLFFBQVNXLEVBQUFBLE1BQUFtQyxDQUFBLEVBQVEsT0FDakIsTUFBT3lDLEVBQUksTUFDWCxPQUFRLEdBQ1IsUUFBS0MsR0FBRUgsRUFBWUosQ0FBSyxDQUFBLGdEQUUzQnhFLEVBQUFBLG1CQUFxRSxNQUFBLENBQS9ELE1BQUtDLEVBQUFBLGVBQUEsQ0FBQSxpQkFBcUJ1RSxJQUFVa2lCLEVBQUEsT0FBVSxRQUFBLENBQUEsQ0FBQSIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOls2MSw2Miw2Myw2NCw2NV19
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ke={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(n,o)=>n.map(r=>`${o}-${r}`),ALIGN:{X:{CENTER:"tide-text-center",JUSTIFY:"tide-text-justify",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start",STRETCH:"tide-axis2-stretch"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning",BLUE:"tide-bg-surface-blue",GREEN:"tide-bg-surface-green",LIME:"tide-bg-surface-lime",ORANGE:"tide-bg-surface-orange",PURPLE:"tide-bg-surface-purple",RED:"tide-bg-surface-red",SALMON:"tide-bg-surface-salmon",TEAL:"tide-bg-surface-teal",YELLOW:"tide-bg-surface-yellow"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",INVERSE:"tide-bg-surface-inverse",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning",BLUE:"tide-border-blue",GREEN:"tide-border-green",LIME:"tide-border-lime",ORANGE:"tide-border-orange",PURPLE:"tide-border-purple",RED:"tide-border-red",SALMON:"tide-border-salmon",TEAL:"tide-border-teal",YELLOW:"tide-border-yellow"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},STYLE:{DASHED:"tide-border-dashed",SOLID:"tide-border-solid"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning",BLUE:"tide-font-blue",GREEN:"tide-font-green",LIME:"tide-font-lime",ORANGE:"tide-font-orange",PURPLE:"tide-font-purple",RED:"tide-font-red",SALMON:"tide-font-salmon",TEAL:"tide-font-teal",YELLOW:"tide-font-yellow",PRIMARY:{BLUE:"tide-font-primary-blue",GREEN:"tide-font-primary-green",LIME:"tide-font-primary-lime",ORANGE:"tide-font-primary-orange",PURPLE:"tide-font-primary-purple",RED:"tide-font-primary-red",SALMON:"tide-font-primary-salmon",TEAL:"tide-font-primary-teal",YELLOW:"tide-font-primary-yellow"}},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full",MIN_ZERO:"tide-min-height-0"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{DISABLED:"tide-opacity-disabled",OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},STRIKETHROUGH:{OFF:"tide-strikethrough-none",ON:"tide-strikethrough"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:{ON:"tide-underline-hover",OFF:"tide-underline-hover-none"},REST:{ON:"tide-underline",OFF:"tide-underline-none"}},USER_SELECT:{INITIAL:"tide-user-select-initial",NONE:"tide-user-select-none"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full",MIN_ZERO:"tide-min-width-0",STRETCH:"tide-width-stretch",ZERO:"tide-width-0"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}},tn={class:e.normalizeClass(["tide-divider"])},nn={},rn=e.defineComponent({...nn,__name:"TideDivider",props:{orientation:{default:Ke.HORIZONTAL}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("div",tn,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,o.orientation===e.unref(Ke).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).WIDTH.FULL]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE,e.unref(t).HEIGHT.FULL]])},null,2)]))}}),D=(n,o)=>{const r=n.__vccOpts||n;for(const[s,l]of o)r[s]=l;return r},Se=D(rn,[["__scopeId","data-v-a1f225d2"]]),Fe=(n,o,r)=>{const s=n[o];return s?typeof s=="function"?s():Promise.resolve(s):new Promise((l,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+o+(o.split("/").length!==r?". Note that variables only represent file names one level deep.":""))))})},je={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},P={LARGE:"large",SMALL:"small"},Te={LARGE:"large",SMALL:"small"},K=n=>{let o=n&&typeof n=="number"?new Intl.NumberFormat().format(n):String(n||""),r=o;return n&&typeof n=="string"&&(r=r.replace(/\D/g,""),Number(r)?o=new Intl.NumberFormat().format(Number(r)):o="0"),o},on=n=>n&&typeof n=="string"?n.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(o=>o.slice(0,1).toUpperCase()+o.slice(1)).join(""):n,sn=n=>{let o=String(n&&typeof n=="number"?n:n||""),r=o;switch(r=r.replace(/\D/g,""),r.length){case 7:o=`${r.slice(0,3)}-${r.slice(3)}`;break;case 10:o=`${r.slice(0,3)}-${r.slice(3,6)}-${r.slice(6)}`;break;case 11:o=`${r.slice(0,1)}-${r.slice(1,4)}-${r.slice(4,7)}-${r.slice(7)}`;break;default:o=r;break}return o},ln=n=>`$${n?K(n):String(n||"0")}`,an={},y=e.defineComponent({...an,__name:"TideIcon",props:{icon:{},size:{default:P.SMALL}},setup(n){const o=n,r=e.ref();return e.watch(()=>o.icon,async()=>{const s=o.icon,l=on(s),[i]=s.split("-"),a=je[i==null?void 0:i.toUpperCase()],u=e.defineAsyncComponent(()=>a?Fe(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-DubJwTjK.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-CjN1kUXQ.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-C6lX6Uq4.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-DWAt3bvk.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-DGwmb5aU.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-OvuV0qFX.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-D_aI1qUx.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-BKltWtRW.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-D3firMg5.cjs")),"../assets/svg/icons/realm/cycle/IconCycleMotorcycle.svg":()=>Promise.resolve().then(()=>require("./IconCycleMotorcycle-B8syyXoU.cjs")),"../assets/svg/icons/realm/cycle/IconCycleTrailer.svg":()=>Promise.resolve().then(()=>require("./IconCycleTrailer-COTSVorR.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-CeynEY7N.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-BGB0MmOD.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-C8rS5sAC.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-C47iv80S.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-B9CKlbHK.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-DZoz1TA3.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-D7wbELIQ.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-DGqI6COV.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-DFFQWh2o.cjs"))}),`../assets/svg/icons/realm/${a}/Icon${l}.svg`,7):Fe(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-t66sPb0V.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-kA8NXjsF.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-Bwkom_hG.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-CFPMCDKK.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-DKSbfzb-.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-BBSCGFjG.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-CUHuJHxp.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-R7Q8EDQJ.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-09bz9o1h.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-Np65RzRK.cjs")),"../assets/svg/icons/IconArrowUp.svg":()=>Promise.resolve().then(()=>require("./IconArrowUp-DrhwTcVn.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-DGD2WaCW.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-DFObJ1fx.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-CRnGvhzj.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-Dx2metNr.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-o4YHr8QY.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-BTeYzS6k.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-CitAJpUy.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-B1covD1i.cjs")),"../assets/svg/icons/IconCalculate.svg":()=>Promise.resolve().then(()=>require("./IconCalculate-CGwDSRuU.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-DfHe6Olt.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-6gUYtYnc.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-DseNWKcQ.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-CaH55o-0.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-DrU3Xqj-.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-CD73NwTB.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-CNHvWIJQ.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-Ddi_gQQW.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-ClKjVrRR.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-BMNU7dRH.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-BzlfUp1G.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-BAGay10U.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-CUu2bGqQ.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-BeD6bdL2.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-B0wTnd3o.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-Dxw5ILrL.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-DR6EZSwa.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-DiFJHvLw.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-NRbH-EHX.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-Gu6xRPyo.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-B8vfdBPh.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-CZBUTFa4.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-BeBqjATL.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-EyD544-R.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-BZJRlI_M.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-DK4VZH9M.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-DEpn1cmU.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-BztsqLLH.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-D5ouQYvY.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-nERjH9_F.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-DiO46Jg8.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-Dw6egtlq.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-D8bshXuI.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-CBdvVo3E.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-DGMqs4S7.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-DaxXQ30W.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-Yw_mSfTf.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-RCvnstwi.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-Dt-ErvEF.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-Cy-2UfCE.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-Qk8vvw-k.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-8L9ZpDnf.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-yLLGan-o.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-MifqZPeF.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-Bd6DwbOW.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-DAU6Gz1h.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-V0Phqs8e.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-yDTudxOJ.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-NaNwp1Mc.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-BrmBMIeS.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-B92dDFNi.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-B3U2CrvK.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-CzvHZ2QM.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-4cFO6TUe.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-BV6py3Ml.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-lMeRlCeA.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-Fdrg4GhV.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-D6f_hP65.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-DFmoGuh1.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-Bh7f_m7Y.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-ClefcQMe.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-R8-anQkg.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-bq9WQXQP.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-WGKPEFXj.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-DaJf6axF.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-wqKY3pYh.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-BMvUb0Cs.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-C6VqDhPq.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-DNCBzhHN.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-CFUkoB2U.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-BXRK5f8v.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-BoE63ZOl.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-hNE0axaE.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-BGo5LXI6.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-CYQVphPa.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-BsshtlDu.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-D6F7haVw.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-BLsCQf5E.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-Ctkcm5E6.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-CqnvhCzt.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-CIOne28A.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-CJ88esDh.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-CVBxtcwC.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-BWQS2Rd_.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-DgZxuRV0.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-x6T3V-vS.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-BWH_PXom.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-CaPJzPZ7.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-NlCMrmBH.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-CzkejYR_.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-BGEn0snz.cjs")),"../assets/svg/icons/IconStarFilled.svg":()=>Promise.resolve().then(()=>require("./IconStarFilled-CfYeQJic.cjs")),"../assets/svg/icons/IconStarHalf.svg":()=>Promise.resolve().then(()=>require("./IconStarHalf-Bx8Qyb3h.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-lRdtNX68.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-B-UnlgNS.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-BBxeKMXP.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-BPRR_9n0.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-Dw-Hvil4.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-CUIEiRQk.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-DwaYZ69z.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-CdPQRgZE.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-wxyn-htG.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-CdgPNDdg.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-DKmEJ9ke.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-B8oUr7zP.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-DhbEKdon.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-DaA3mBn4.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-42vl0HdH.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-B6HqcoA8.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-DOw3YseH.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-3AuFwkkg.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-dVEqMZb4.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-DfXiP6ob.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-D1f8wank.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-DQIbVzlX.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-CZskpiB7.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ChEAKSkt.cjs"))}),`../assets/svg/icons/Icon${l}.svg`,5));r.value=e.markRaw(u)},{immediate:!0}),(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",o.size,e.unref(t).FLEX.SHRINK.OFF])},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":n.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}}),S={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ARROW_UP:"arrow-up",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALCULATE:"calculate",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",STAR_FILLED:"star-filled",STAR_HALF:"star-half",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},un={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},CYCLE:{MOTORCYCLE:"cycle-motorcycle",TRAILER:"cycle-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},cn={class:e.normalizeClass(["tide-accordion-item"])},dn={},fn=e.defineComponent({...dn,__name:"TideAccordionItem",props:e.mergeModels({disabled:{type:Boolean,default:!1},hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),s=()=>{o.disabled||(r.value=!r.value)};return e.watch(()=>o.disabled,l=>{l&&(r.value=!1)},{immediate:!0}),(l,i)=>(e.openBlock(),e.createElementBlock("div",cn,[n.hasTopDivider?(e.openBlock(),e.createBlock(Se,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).ALIGN.X.LEFT,e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).PADDING.Y.HALF,e.unref(t).WIDTH.FULL,n.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[]]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),n.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(y,{icon:r.value?e.unref(S).EXPAND_LESS:e.unref(S).EXPAND_MORE,size:e.unref(P).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",r.value?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(l.$slots,"default",{},void 0,!0)],2)],2),n.hasBottomDivider?(e.openBlock(),e.createBlock(Se,{key:1})):e.createCommentVNode("",!0)]))}}),En=D(fn,[["__scopeId","data-v-0e32b249"]]),B={BUTTON:"button",LINK:"a"},H={BUTTON:"button",DIV:"div",LINK:"a"},Ct={linkComponent:B.LINK},ht=Symbol("tide-config"),mn=(n={})=>{const o={...Ct,...n};e.provide(ht,o)},vn=()=>e.inject(ht,Ct),se=e.defineComponent({__name:"InternalBaseLink",setup(n){const{linkComponent:o}=vn();return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(o)),null,{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default")]),_:3}))}}),V={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},Y={BLANK:"_blank",SELF:void 0},On={},z=e.defineComponent({...On,__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:B.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:V.PRIMARY},type:{default:void 0}},setup(n){const o=n,r=e.computed(()=>o.element===B.BUTTON?o.type??B.BUTTON:void 0),s=e.computed(()=>o.element===B.LINK?se:o.element);return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{"aria-label":n.icon,class:e.normalizeClass(["tide-button-icon",e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).PADDING.FULL.HALF,`tide-button-${n.priority}`,n.element===e.unref(B).LINK?[e.unref(t).UNDERLINE.REST.OFF]:""]),disabled:n.element===e.unref(B).BUTTON&&n.disabled,href:n.element===e.unref(B).LINK&&n.href?n.href:void 0,target:n.element===e.unref(B).LINK&&n.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:r.value},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(y,{key:0,icon:n.icon,size:e.unref(P).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target","type"]))}}),Ln={},De=e.defineComponent({...Ln,__name:"TideLink",props:{element:{default:B.LINK},href:{default:void 0},iconLeading:{default:void 0},iconSize:{default:P.SMALL},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},subtle:{type:Boolean,default:!1}},setup(n){const o=n,r=e.computed(()=>o.element===B.LINK?se:o.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).ALIGN.X.LEFT,n.subtle?[e.unref(t).UNDERLINE.REST.OFF,e.unref(t).UNDERLINE.HOVER.ON]:[e.unref(t).UNDERLINE.REST.ON,e.unref(t).UNDERLINE.HOVER.OFF]]),href:o.href,target:o.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:n.element===e.unref(B).BUTTON?e.unref(B).BUTTON:void 0},{default:e.withCtx(()=>[o.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:o.iconLeading,size:n.iconSize},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(o.label),3),o.iconTrailing?(e.openBlock(),e.createBlock(y,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:o.iconTrailing,size:n.iconSize},null,8,["class","icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target","type"]))}}),G={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},Rn={},Tn=e.defineComponent({...Rn,__name:"TideAlert",props:{ctaLabel:{default:void 0},heading:{default:void 0},isDismissible:{type:Boolean,default:!0},isToast:{type:Boolean,default:!1},type:{default:G.INFO}},emits:["close","ctaClick"],setup(n,{emit:o}){const r=n,s=o,l=e.useSlots(),i=e.computed(()=>{var d;const u=(d=l.default)==null?void 0:d.call(l);return u?u.some(c=>c.type!==e.Comment&&(typeof c.children!="string"||c.children.trim().length>0)):!1}),a=e.computed(()=>r.type===G.ERROR?S.PRIORITY_HIGH:r.type===G.SUCCESS?S.CHECK:r.type===G.WARNING?S.WARNING:S.INFORMATION);return(u,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([r.type,"tide-alert",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.GRID,e.unref(t).PADDING.FULL.ONE,!r.isToast&&r.type===e.unref(G).ERROR?[e.unref(t).BG.GLOBAL.SURFACE.ERROR,e.unref(t).BORDER.COLOR.GLOBAL.ERROR]:"",!r.isToast&&r.type===e.unref(G).INFO?[e.unref(t).BG.GLOBAL.SURFACE.INFO,e.unref(t).BORDER.COLOR.GLOBAL.INFO]:"",!r.isToast&&r.type===e.unref(G).SUCCESS?[e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,e.unref(t).BORDER.COLOR.GLOBAL.SUCCESS]:"",!r.isToast&&r.type===e.unref(G).WARNING?[e.unref(t).BG.GLOBAL.SURFACE.WARNING,e.unref(t).BORDER.COLOR.GLOBAL.WARNING]:"",r.isToast?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).SHADOW.BOTTOM]:e.unref(t).BORDER.LEFT.TWO])},[r.isToast?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,r.type===e.unref(G).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,r.type===e.unref(G).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,r.type===e.unref(G).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,r.type===e.unref(G).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(y,{icon:a.value,size:e.unref(P).SMALL},null,8,["icon","size"])],2)),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.DIRECTION.ROW,i.value?"":[e.unref(t).AXIS1.BETWEEN,e.unref(t).MARGIN.RIGHT.HALF]])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD)},e.toDisplayString(r.heading),3),r.ctaLabel&&!i.value?(e.openBlock(),e.createBlock(De,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(B).BUTTON,label:r.ctaLabel,onClick:d[0]||(d[0]=c=>s("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2),n.isDismissible?(e.openBlock(),e.createBlock(z,{key:1,class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(S).CLOSE,priority:e.unref(V).QUATERNARY,onClick:d[1]||(d[1]=c=>s("close")),"aria-label":"Close alert"},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.BODY_2,!r.isToast&&e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(u.$slots,"default",{},void 0,!0),r.ctaLabel&&i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).MARGIN.TOP.HALF])},[r.ctaLabel?(e.openBlock(),e.createBlock(De,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2]),element:e.unref(B).BUTTON,label:r.ctaLabel,onClick:d[2]||(d[2]=c=>s("ctaClick"))},null,8,["class","element","label"])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2)],2))}}),St=D(Tn,[["__scopeId","data-v-f7546546"]]),X={BLACK:"black",BLUE:"blue",GREEN:"green",LIME:"lime",ORANGE:"orange",PURPLE:"purple",RED:"red",SALMON:"salmon",TEAL:"teal",YELLOW:"yellow"},Qe={[X.BLACK]:{borderColor:t.BORDER.COLOR.HIGH,iconColor:t.FONT.COLOR.SURFACE.DEFAULT},[X.BLUE]:{borderColor:t.BORDER.COLOR.GLOBAL.BLUE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.BLUE},[X.GREEN]:{borderColor:t.BORDER.COLOR.GLOBAL.GREEN,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.GREEN},[X.LIME]:{borderColor:t.BORDER.COLOR.GLOBAL.LIME,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.LIME},[X.ORANGE]:{borderColor:t.BORDER.COLOR.GLOBAL.ORANGE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.ORANGE},[X.PURPLE]:{borderColor:t.BORDER.COLOR.GLOBAL.PURPLE,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.PURPLE},[X.RED]:{borderColor:t.BORDER.COLOR.GLOBAL.RED,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.RED},[X.SALMON]:{borderColor:t.BORDER.COLOR.GLOBAL.SALMON,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.SALMON},[X.TEAL]:{borderColor:t.BORDER.COLOR.GLOBAL.TEAL,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.TEAL},[X.YELLOW]:{borderColor:t.BORDER.COLOR.GLOBAL.YELLOW,iconColor:t.FONT.COLOR.GLOBAL.PRIMARY.YELLOW}},Ft={YEARS_10:"10",YEARS_15:"15",YEARS_20:"20",YEARS_25:"25",YEARS_30:"30",YEARS_35:"35",YEARS_5:"5"},An={},In=e.defineComponent({...An,__name:"TideBadge",props:{color:{default:void 0},iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",o.isFloating||o.color?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,o.color&&[e.unref(t).BORDER.LEFT.TWO,e.unref(Qe)[o.color].borderColor],e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[o.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF,o.color&&e.unref(Qe)[o.color].iconColor]),icon:o.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},e.toDisplayString(o.label),3)],2))}}),Nn={},gn=e.defineComponent({...Nn,__name:"TideBadgeTrustedPartner",props:{years:{default:Ft.YEARS_5}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).AWARD_STAR},null,8,["class","icon"]),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},[e.createElementVNode("span",null,e.toDisplayString(o.years)+" year trusted partner",1)],2)],2))}}),pn={},Cn=e.defineComponent({...pn,__name:"TideBadgeVerifiedVehicle",setup(n){return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-verified-vehicle",e.unref(t).BG.SECONDARY,e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SECONDARY,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).ELLIPSIS,e.unref(t).WHITESPACE_WRAP.OFF])},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).VERIFIED},null,8,["class","icon"]),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ELLIPSIS])},"Verified vehicle",2)],2))}}),hn=D(Cn,[["__scopeId","data-v-e9541ad7"]]),Sn=["data-track"],Fn={key:0},Dn={},Bn=e.defineComponent({...Dn,__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.breadCrumbs,(l,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[l.url?(e.openBlock(),e.createBlock(se,{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":l.dataTrack||void 0,href:l.url},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.label),1)]),_:2},1032,["class","data-track","href"])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":l.dataTrack||void 0},e.toDisplayString(l.label),11,Sn))],2),o.breadCrumbs&&i<o.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",Fn,[e.createVNode(y,{icon:e.unref(S).ARROW_RIGHT,size:e.unref(P).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),yn={},Pn=e.defineComponent({...yn,__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:B.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:V.PRIMARY},size:{default:Te.LARGE},type:{default:void 0}},setup(n){const o=n,r=e.computed(()=>o.element===B.BUTTON?o.type??B.BUTTON:void 0),s=e.computed(()=>o.element===B.LINK?se:o.element);return(l,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(s.value),{class:e.normalizeClass(["tide-button",e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).GAP.HALF,e.unref(t).PADDING.X.TWO,`tide-button-${n.priority}`,n.element===e.unref(B).LINK?[e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).UNDERLINE.REST.OFF]:[e.unref(t).DISPLAY.FLEX],n.size===e.unref(Te).SMALL?[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.Y.HALF]:[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.Y.ONE]]),disabled:n.element===e.unref(B).BUTTON&&n.disabled,href:n.element===e.unref(B).LINK&&n.href?n.href:void 0,target:n.element===e.unref(B).LINK&&n.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:r.value},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,icon:n.iconLeading,size:n.size===e.unref(Te).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.iconTrailing?(e.openBlock(),e.createBlock(y,{key:1,icon:n.iconTrailing,size:n.size===e.unref(Te).LARGE?e.unref(P).LARGE:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target","type"]))}}),bn={},kn=e.defineComponent({...bn,__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:H.BUTTON},href:{default:void 0},label:{default:void 0}},setup(n){const o=n,r=e.computed(()=>o.element===B.LINK?se:o.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{class:e.normalizeClass(["tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],o.element===e.unref(H).LINK?[e.unref(t).UNDERLINE.REST.OFF]:"",o.element===e.unref(H).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:o.element===e.unref(H).BUTTON&&o.disabled,href:o.element===e.unref(H).LINK&&o.href?o.href:void 0,type:n.element===e.unref(H).BUTTON?e.unref(H).BUTTON:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(o.label),3)]),_:1},8,["class","disabled","href","type"]))}}),Dt=D(kn,[["__scopeId","data-v-2da25be7"]]),Un={},_n=e.defineComponent({...Un,__name:"TideButtonSave",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(n){const o=e.ref(!1),r=e.useModel(n,"modelValue");return e.watch(r,()=>{o.value||(o.value=!0)},{immediate:!1}),(s,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-save",e.unref(t).PADDING.FULL.QUARTER,r.value&&"saved"]),onClick:l[0]||(l[0]=i=>r.value=!r.value),type:"button"},[e.createElementVNode("div",{class:e.normalizeClass(["heart-container",e.unref(t).DISPLAY.FLEX,r.value&&o.value&&"animate-heartbeat"])},[(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(["tide-button-save-icon",e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),height:"32",viewBox:"0 0 24 24",width:"32",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("path",{class:e.normalizeClass(["heart-filled",r.value?e.unref(t).FONT.COLOR.GLOBAL.PRIMARY.RED:"filled-transparent"]),d:"m12 21-1.45-1.3c-1.6833-1.5167-3.075-2.825-4.175-3.925-1.1-1.1-1.975-2.0875-2.625-2.9625-.65-.875-1.1042-1.6792-1.3625-2.4125C2.1292 9.6667 2 8.9167 2 8.15c0-1.5667.525-2.875 1.575-3.925C4.625 3.175 5.9333 2.65 7.5 2.65c.8667 0 1.6917.1833 2.475.55.7833.3667 1.4583.8833 2.025 1.55.5667-.6667 1.2417-1.1833 2.025-1.55.7833-.3667 1.6083-.55 2.475-.55 1.5667 0 2.875.525 3.925 1.575C21.475 5.275 22 6.5833 22 8.15c0 .7667-.1292 1.5167-.3875 2.25-.2583.7333-.7125 1.5375-1.3625 2.4125s-1.525 1.8625-2.625 2.9625c-1.1 1.1-2.4917 2.4083-4.175 3.925L12 21Z"},null,2),e.createElementVNode("path",{class:e.normalizeClass(["heart-outline",e.unref(t).FONT.COLOR.SURFACE.INVERSE]),d:"m12 21-1.45-1.3c-1.6833-1.5167-3.075-2.825-4.175-3.925-1.1-1.1-1.975-2.0875-2.625-2.9625-.65-.875-1.1042-1.6792-1.3625-2.4125C2.1292 9.6667 2 8.9167 2 8.15c0-1.5667.525-2.875 1.575-3.925C4.625 3.175 5.9333 2.65 7.5 2.65c.8667 0 1.6917.1833 2.475.55.7833.3667 1.4583.8833 2.025 1.55.5667-.6667 1.2417-1.1833 2.025-1.55.7833-.3667 1.6083-.55 2.475-.55 1.5667 0 2.875.525 3.925 1.575C21.475 5.275 22 6.5833 22 8.15c0 .7667-.1292 1.5167-.3875 2.25-.2583.7333-.7125 1.5375-1.3625 2.4125s-1.525 1.8625-2.625 2.9625c-1.1 1.1-2.4917 2.4083-4.175 3.925L12 21Zm0-2.7c1.6-1.4333 2.9167-2.6625 3.95-3.6875s1.85-1.9167 2.45-2.675c.6-.7583 1.0167-1.4333 1.25-2.025.2333-.5917.35-1.1792.35-1.7625 0-1-.3333-1.8333-1-2.5-.6667-.6667-1.5-1-2.5-1-.7833 0-1.5083.2208-2.175.6625C13.6583 5.7542 13.2 6.3167 12.95 7h-1.9c-.25-.6833-.7083-1.2458-1.375-1.6875S8.2833 4.65 7.5 4.65c-1 0-1.8333.3333-2.5 1-.6667.6667-1 1.5-1 2.5 0 .5833.1167 1.1708.35 1.7625.2333.5917.65 1.2667 1.25 2.025s1.4167 1.65 2.45 2.675S10.4 16.8667 12 18.3Z"},null,2)],2))],2)],2))}}),Vn=D(_n,[["__scopeId","data-v-26c152aa"]]),wn=["data-track"],Gn=["checked","form","name","value","onChange"],Mn={},xn=e.defineComponent({...Mn,__name:"TideButtonSegmented",props:e.mergeModels({tabs:{},name:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),s=e.useId(),l=e.computed(()=>o.name?void 0:"none"),i=e.computed(()=>o.name??s);return(a,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).GAP.QUARTER,e.unref(t).OVERFLOW.XY.AUTO,e.unref(t).PADDING.FULL.QUARTER]),role:"radiogroup"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tabs,(d,c)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["tide-button-segmented-tab",c===r.value?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).ALIGN.X.CENTER,e.unref(t).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).CURSOR.POINTER,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.HALF,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WHITESPACE_WRAP.OFF,e.unref(t).WIDTH.AUTO]),"data-track":d.dataTrack||void 0,key:d.label},[e.createElementVNode("input",{checked:c===r.value,class:e.normalizeClass(["tide-screen-reader-only"]),form:l.value,name:i.value,value:c,onChange:f=>r.value=c,type:"radio"},null,40,Gn),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(d.label),3),d.count&&d.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(d.count)+") ",3)):e.createCommentVNode("",!0)],10,wn))),128))],2))}}),Hn=D(xn,[["__scopeId","data-v-57a30386"]]),Ae={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},zn={},Yn=e.defineComponent({...zn,__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:Ae.INFORMATIONAL},href:{default:void 0}},setup(n){const o=n,r=e.computed(()=>o.href?se:o.type===Ae.INFORMATIONAL?H.DIV:H.BUTTON);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(Ae).INFORMATIONAL&&"hoverable",n.type===e.unref(Ae).SELECTABLE&&n.selected&&"selected"]),href:n.href,type:r.value===e.unref(H).BUTTON?e.unref(H).BUTTON:void 0},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href","type"]))}}),Xn=D(Yn,[["__scopeId","data-v-5fe33e2a"]]),Wn={},qn=e.defineComponent({...Wn,__name:"TideCarousel",props:{hasDots:{type:Boolean,default:void 0},isFloating:{type:Boolean,default:!1},isHeadline1:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isScrollByPage:{type:Boolean,default:!0},maxDots:{default:5},subtitle:{default:void 0},title:{default:void 0}},emits:["slidesAddedToView"],setup(n,{emit:o}){const r=n,s=o,l=e.ref(null),i=e.ref(null),a=e.ref(0),u=e.ref(0),d=e.ref(null),c=e.ref(0),f=e.ref(!0),E=e.ref(!1),v=e.ref(!0),m=e.ref(null),L=e.ref([]),O=e.ref([]),T=e.ref(null),A=e.ref(void 0),R=e.ref(1),g=e.computed(()=>u.value+1),N=e.computed(()=>I.value*w+(I.value-1)*h),I=e.computed(()=>r.maxDots>C.value?C.value:r.maxDots),C=e.computed(()=>{if(!L.value.length)return 0;if(!r.isScrollByPage)return L.value.length;const p=Math.floor(L.value.length/R.value);return L.value.length%R.value?p+1:p}),h=8,w=8;let $;const b=p=>{let F="";return p===u.value&&(F="tide-carousel-dot-active"),Math.abs(u.value-p)===1&&(F="tide-carousel-dot-neighbor"),F},_=(p,F)=>{const k=F.getBoundingClientRect(),x=k.left+k.width,ee=p.getBoundingClientRect();return ee.left+ee.width<=x&&ee.left>=k.left},J=p=>{if(!A.value)return;const F=p.changedTouches[0],k=A.value.clientX-F.clientX,x=F.clientY-A.value.clientY;Math.abs(k)>Math.abs(x)&&it(k)},He=p=>{A.value=p.touches[0]},Zt=p=>{const F=p.shiftKey,k=Math.abs(p.deltaY)>=80;k&&!F||(p.shiftKey&&p.preventDefault(),clearTimeout($),$=window.setTimeout(()=>{var x;if(k)it(p.deltaY);else{const ee=((x=L.value[O.value[0]])==null?void 0:x.offsetLeft)||0;Le(ee)}},100))},ze=()=>{i.value&&(a.value=i.value.scrollWidth,c.value=i.value.clientWidth,v.value=a.value>c.value,R.value=L.value.filter(p=>_(p,i.value)).length)},at=()=>{const p={root:l==null?void 0:l.value,rootMargin:"0px 1px 0px 0px",threshold:1};m.value=new IntersectionObserver(F=>{let k=[];F.forEach(x=>{const ee=L.value.indexOf(x.target);x.isIntersecting?(k.push(ee),O.value.push(ee)):O.value=O.value.filter(pe=>pe!==ee),O.value.sort((pe,en)=>pe-en)}),f.value=O.value.includes(0),E.value=O.value.includes(L.value.length-1),k.length>0&&s("slidesAddedToView",k)},p),L.value.forEach(F=>{m.value&&m.value.observe(F)})},jt=()=>{const p=()=>{i.value!==null&&(L.value=Array.from(i.value.children),at())};T.value=new MutationObserver(p),i.value&&T.value.observe(i.value,{childList:!0})},it=p=>{p<0?r.isScrollByPage?Xe():qe():r.isScrollByPage?Ye():We()},Le=p=>{if(i.value===null)return;const F=p<=i.value.scrollLeft;u.value=F?u.value-1:u.value+1,i.value.scrollTo({behavior:"smooth",left:p}),Jt(F)},Ye=()=>{var k;if(O.value.length===0||E.value)return;const p=O.value[O.value.length-1]+1,F=(k=L.value[p])==null?void 0:k.offsetLeft;Le(F)},Xe=()=>{var k;if(O.value.length===0||f.value)return;const p=O.value[0]-O.value.length,F=((k=L.value[p])==null?void 0:k.offsetLeft)||0;Le(F)},We=()=>{if(O.value.length===0)return;const p=O.value.length>1?O.value[1]:O.value[0]+1;Le(L.value[p].offsetLeft)},qe=()=>{if(O.value.length===0)return;const p=O.value[0]-1;Le(L.value[p].offsetLeft)},Jt=p=>{if(!d.value||I.value>=C.value)return;const k=I.value%2!==0||p?Math.floor(I.value/2)+1:Math.floor(I.value/2);d.value.scrollTo({behavior:"smooth",left:g.value<k?0:(g.value-k)*(w+h)})};return e.onMounted(()=>{i.value!==null&&(L.value=Array.from(i.value.children),ze(),at(),jt(),window&&window.addEventListener("resize",ze))}),e.onUnmounted(()=>{var p,F;(p=m.value)==null||p.disconnect(),(F=T.value)==null||F.disconnect(),window.removeEventListener("resize",ze)}),(p,F)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.ONE,e.unref(t).WIDTH.MAX_FULL]),ref_key:"carouselRef",ref:l},[!r.isFloating&&v.value||r.title?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,r.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([n.isHeadline1?e.unref(t).FONT.ROLE.HEADLINE_1:e.unref(t).FONT.ROLE.HEADLINE_2])},e.toDisplayString(r.title),3)):e.createCommentVNode("",!0),r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),!r.isFloating&&v.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(z,{disabled:f.value,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).TERTIARY,onClick:F[0]||(F[0]=k=>n.isScrollByPage?Xe():qe())},null,8,["disabled","icon","priority"]),e.createVNode(z,{disabled:E.value,icon:e.unref(S).CHEVRON_RIGHT,priority:e.unref(V).TERTIARY,onClick:F[1]||(F[1]=k=>n.isScrollByPage?Ye():We())},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(p.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX])},[e.createElementVNode("ul",{class:e.normalizeClass(["tide-carousel-container",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON]),ref_key:"containerRef",ref:i,onTouchend:J,onTouchstartPassive:He,onWheel:Zt},[e.renderSlot(p.$slots,"default",{},void 0,!0)],34),n.hasDots&&C.value>1?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).MARGIN.BOTTOM.HALF,e.unref(t).WIDTH.FULL,e.unref(t).POINTER_EVENTS.OFF])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-carousel-dots-container"]),style:e.normalizeStyle({width:`${N.value}px`})},[e.createElementVNode("div",{class:e.normalizeClass(["tide-carousel-dots",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.START,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).POINTER_EVENTS.OFF,e.unref(t).SCROLLBAR.OFF]),ref_key:"dotsRef",ref:d},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(k,x)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-carousel-dot",e.unref(t).FLEX.SHRINK.OFF,e.unref(t).HEIGHT.ZERO,e.unref(t).WIDTH.ZERO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,b(x)]),key:x},null,2))),128))],2)],4)],2)):e.createCommentVNode("",!0),n.isFloating&&v.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.TOP,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,r.isHideawayButtons?"hideaway":""])},[e.createVNode(z,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:f.value,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:F[2]||(F[2]=k=>n.isScrollByPage?Xe():qe())},null,8,["class","disabled","icon","priority"]),e.createVNode(z,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:E.value,icon:e.unref(S).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:F[3]||(F[3]=k=>n.isScrollByPage?Ye():We())},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}}),Bt=D(qn,[["__scopeId","data-v-a9f0952b"]]),$n={},Kn=e.defineComponent({...$n,__name:"TideChipAction",props:{element:{default:B.LINK},href:{default:void 0},iconLeading:{default:S.SEARCH},isNewTab:{type:Boolean,default:!1},label:{}},setup(n){const o=n,r=e.computed(()=>o.element===B.LINK?se:o.element);return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.REST.OFF]),href:o.href,target:o.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF,type:n.element===e.unref(B).BUTTON?e.unref(B).BUTTON:void 0},{default:e.withCtx(()=>[e.createVNode(y,{icon:o.iconLeading},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(o.label),1)]),_:1},8,["class","href","target","type"]))}}),Qn=D(Kn,[["__scopeId","data-v-5ea552aa"]]),Zn={},jn=e.defineComponent({...Zn,__name:"TideChipFilter",props:e.mergeModels({label:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=e.useModel(n,"modelValue"),r=()=>{o.value=!o.value};return(s,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",o.value?["active",e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2]),onClick:r,type:"button"},[e.renderSlot(s.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}}),Jn=D(jn,[["__scopeId","data-v-15ee34b6"]]),er={},tr=e.defineComponent({...er,__name:"TideChipInput",props:{label:{}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2]),type:"button"},[e.createElementVNode("span",null,e.toDisplayString(o.label),1),e.createVNode(y,{icon:e.unref(S).CLOSE},null,8,["icon"])],2))}}),nr=D(tr,[["__scopeId","data-v-bd65d6f6"]]),rr={class:"tide-columns"},or={class:"tide-columns-column"},sr={class:"tide-columns-column"},lr={class:"tide-columns-column"},ar={class:"tide-columns-column"},ir={},ur=e.defineComponent({...ir,__name:"TideColumns",props:{heading:{default:""}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("section",rr,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(o.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",or,[e.renderSlot(r.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",sr,[e.renderSlot(r.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",lr,[e.renderSlot(r.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",ar,[e.renderSlot(r.$slots,"section4",{},void 0,!0)])],2)]))}}),cr=D(ur,[["__scopeId","data-v-1f7e2e25"]]),yt=Symbol("tide-form"),Pt=()=>{const n=e.ref(!1);return e.provide(yt,{forceShowErrors:n}),{revealValidationErrors:()=>{n.value=!0}}},ke=()=>e.inject(yt),dr={},fr=e.defineComponent({...dr,__name:"TideForm",emits:["submit"],setup(n,{emit:o}){const r=o,{revealValidationErrors:s}=Pt(),l=i=>{s(),r("submit",i)};return(i,a)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(l,["prevent"]),novalidate:""},[e.renderSlot(i.$slots,"default")],32))}}),ae={CONTAIN:"contain",COVER:"cover",SCALE_DOWN:"scale-down"},Er=["media","srcset"],mr=["alt","fetchpriority","height","loading","src","width"],vr={},Or=e.defineComponent({...vr,__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},objectFit:{default:ae.COVER},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(n){const o=n,r=e.ref(),s=e.ref(),l="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",i=e.computed(()=>{switch(o.objectFit){case ae.CONTAIN:return t.OBJECT.CONTAIN;case ae.COVER:return t.OBJECT.COVER;case ae.SCALE_DOWN:return t.OBJECT.SCALE_DOWN;default:return ae.COVER}}),a=()=>{var c,f,E;const u=(c=s.value)==null?void 0:c.currentSrc,d=((f=r.value)==null?void 0:f.querySelectorAll("source"))??[];if(u){for(const v of d)if(new URL(v.srcset,window.location.href).href===u){v.remove();return}((E=s.value)==null?void 0:E.getAttribute("src"))!==l&&(s.value.src=l)}};return(u,d)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:r},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.sources,c=>(e.openBlock(),e.createElementBlock("source",{key:c.srcset,media:`(min-width:${c.media}px)`,srcset:c.srcset},null,8,Er))),128)),e.createElementVNode("img",{alt:n.alt,class:e.normalizeClass(["tide-image-img",!o.width&&e.unref(t).WIDTH.FULL,!o.height&&e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,i.value]),fetchpriority:n.isLazy?void 0:"high",height:o.height,loading:o.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:n.src??l,width:o.width,onError:a},null,42,mr)],2))}}),bt=D(Or,[["__scopeId","data-v-bfc515e8"]]),Lr={},Rr=e.defineComponent({...Lr,__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-image-background",e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(bt,{alt:o.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":o.isLazy,"object-fit":e.unref(ae).COVER,sources:o.sources,src:o.src},null,8,["alt","class","is-lazy","object-fit","sources","src"])],2),e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}}),Tr=D(Rr,[["__scopeId","data-v-8695bcc4"]]),Ar={key:0,class:e.normalizeClass(["tide-indicator-label"])},Ir={},Nr=e.defineComponent({...Ir,__name:"TideIndicator",props:{label:{default:void 0}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",o.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,o.label&&o.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],o.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[o.label?(e.openBlock(),e.createElementBlock("div",Ar,e.toDisplayString(o.label),1)):e.createCommentVNode("",!0)],2))}}),gr=D(Nr,[["__scopeId","data-v-96a6263b"]]),pr={},Ue=e.defineComponent({...pr,__name:"TideInputSupportingText",props:{isError:{type:Boolean},message:{}},setup(n){return(o,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.LABEL_3,n.isError?[e.unref(t).FONT.COLOR.GLOBAL.ERROR]:[e.unref(t).FONT.COLOR.SURFACE.DEFAULT]])},[n.isError?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",null,e.toDisplayString(n.message),1)],2))}}),kt="Please enter a valid value",te={NO_ERROR:{message:"",valid:!0},REQUIRED:{message:"Please fill out this field",valid:!1}},de=(n,o)=>r=>{let s=te.NO_ERROR;return r.trim().match(n)||(s={message:o??kt,valid:!1}),s},Cr=({maxlength:n,minlength:o,required:r,value:s})=>{const l=s.length===0&&!r,i=n&&s.length>n;return!(!l&&o&&s.length<o)&&!i},Je=({errorFromProps:n,maxlength:o,minlength:r,required:s,validators:l,value:i})=>{var a;if(n!=="")return{message:n,valid:!1};if(l){const u=Sr(i.value??"",l);if(!u.valid)return u}if(s&&((a=i.value)==null?void 0:a.trim())==="")return te.REQUIRED;if(o||r){const u=hr({maxlength:o,minlength:r,required:s,value:i.value});if(!u.valid)return u}return te.NO_ERROR},hr=({maxlength:n,minlength:o,required:r,value:s})=>{const l={message:"",valid:!0};return l.valid=Cr({maxlength:n,minlength:o,required:r,value:s}),l.valid||(l.message=kt,n&&o?l.message=`Enter a value between ${K(o)} and ${K(n)} characters`:n?l.message=`Use ${K(n)} characters or fewer`:o&&(l.message=`Enter at least ${K(o)} characters`)),l};function Sr(n,o){for(const r of o){const s=r(n);if(!s.valid)return s}return{message:"",valid:!0}}const Fr=["checked","disabled","name","id"],Dr={},Br=e.defineComponent({...Dr,__name:"TideInputCheckbox",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0},required:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,s=o,l=e.useModel(n,"modelValue"),i=ke(),a=e.ref(!1),u=e.ref(te.NO_ERROR),d=e.computed(()=>r.required?`${r.label} *`:r.label),c=e.computed(()=>l.value||r.indeterminate),f=e.computed(()=>E.value?!0:a.value?!u.value.valid:!1),E=e.computed(()=>r.error!==""),v=e.computed(()=>f.value&&u.value.message),m=()=>r.error!==""?{message:r.error,valid:!1}:!r.required||c.value?te.NO_ERROR:te.REQUIRED;return e.watchEffect(()=>{u.value=m()}),e.watch(l,()=>{l.value&&(a.value=!0)},{immediate:!0}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,L=>{L&&(a.value=!0)},{immediate:!0}),e.watch(u,()=>{s("valid",u.value.valid)},{deep:!0,immediate:!0}),(L,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER])},[e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).AXIS2.CENTER,e.unref(t).DISPLAY.FLEX,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).GAP.HALF,e.unref(t).USER_SELECT.NONE,f.value?e.unref(t).FONT.COLOR.GLOBAL.ERROR:e.unref(t).FONT.COLOR.SURFACE.DEFAULT,n.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]])},[e.withDirectives(e.createElementVNode("input",{checked:c.value,class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,ref:"input",id:n.inputId,type:"checkbox","onUpdate:modelValue":O[0]||(O[0]=T=>l.value=T)},null,8,Fr),[[e.vModelCheckbox,l.value]]),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).POSITION.RELATIVE,c.value?[f.value?e.unref(t).BG.GLOBAL.PRIMARY.ERROR:[e.unref(t).BG.SECONDARY,e.unref(t).BORDER.COLOR.HIGH]]:[f.value?[e.unref(t).BORDER.COLOR.GLOBAL.ERROR,e.unref(t).BG.GLOBAL.SURFACE.ERROR]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT]]])},[c.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(S).REMOVE:e.unref(S).CHECK,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).AXIS1.BETWEEN,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(d.value),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(n.number))+") ",3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2),v.value?(e.openBlock(),e.createBlock(Ue,{key:0,message:v.value,"is-error":""},null,8,["message"])):e.createCommentVNode("",!0)],2))}}),yr=D(Br,[["__scopeId","data-v-2b691c9a"]]),Pr=["checked","disabled","name","id"],br=["for"],kr={},Ur=e.defineComponent({...kr,__name:"TideInputCheckboxDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const o=n,r=e.computed(()=>o.checked||o.indeterminate);return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,n.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:o.disabled,name:o.name,ref:"input",onClick:l[0]||(l[0]=e.withModifiers(()=>{},["prevent"])),id:o.inputId,type:"checkbox"},null,10,Pr),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,r.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,r.value&&"checked",n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[r.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:o.indeterminate?e.unref(S).REMOVE:e.unref(S).CHECK,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FONT.ROLE.BODY_1,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:o.inputId,onClick:l[1]||(l[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),o.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(o.number))+") ",3)):e.createCommentVNode("",!0)],10,br)):e.createCommentVNode("",!0)],2))}}),_r=D(Ur,[["__scopeId","data-v-345366c5"]]),Vr=["for"],wr=["disabled","name","value","id"],Gr={},Mr=e.defineComponent({...Gr,__name:"TideInputRadio",props:e.mergeModels({disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{},number:{default:void 0},value:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),s=e.computed(()=>r.value===o.value);return(l,i)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).USER_SELECT.NONE,o.disabled?[e.unref(t).OPACITY.DISABLED,e.unref(t).CURSOR.NOT_ALLOWED]:[e.unref(t).CURSOR.POINTER]]),for:o.inputId},[e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["tide-screen-reader-only"]),disabled:n.disabled,name:n.name,value:n.value,id:o.inputId,type:"radio","onUpdate:modelValue":i[0]||(i[0]=a=>r.value=a)},null,8,wr),[[e.vModelRadio,r.value]]),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,s.value?[e.unref(t).BORDER.COLOR.HIGH]:[e.unref(t).BORDER.COLOR.DEFAULT],e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,s.value&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),o.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(o.number))+") ",3)):e.createCommentVNode("",!0)],2)],10,Vr))}}),xr=D(Mr,[["__scopeId","data-v-2346e8b9"]]),Hr=["checked","id"],zr=["for"],Yr={},Xr=e.defineComponent({...Yr,__name:"TideInputRadioDeprecated",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(n){const o=n,r=e.ref(o.checked);return e.watch(()=>o.checked,(s,l)=>{(s!==l||s!==r.value)&&(r.value=s)}),(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,o.disabled&&"disabled"])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:o.inputId,name:"",type:"radio",value:""},null,10,Hr),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,r.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,r.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,o.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.GROW.ON,e.unref(t).AXIS1.BETWEEN,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:o.inputId},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),o.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(K)(o.number))+") ",3)):e.createCommentVNode("",!0)],10,zr)],2))}}),Wr=D(Xr,[["__scopeId","data-v-bde66757"]]),qr={NUMBER:K,PHONE:sn,PRICE:ln},le={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@(?!(?:[a-zA-Z0-9-]+\.)*(?<tld>[a-zA-Z]{2,})\.\k<tld>$)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,zip:/^\d{5}$/},$r={ALPHA_NUMBER_EMPTY:de(le.alphaNumberOrEmpty),ALPHA_SPACE:de(le.alphaSpace),EMAIL:de(le.email,"Enter a valid email address (e.g. name@example.com)"),NUMBER:de(le.numberFormatted,"Enter a valid number"),PHONE:de(le.phone,"Enter a valid phone number"),ZIP:de(le.zip,"Enter a valid Zip code")},ne={EAGER:"eager",LAZY:"lazy"},Kr=["for"],Qr=["disabled","name","required","id"],Zr=["label"],jr=["value"],Jr=["selected","value"],eo=["selected","value"],to={},no=e.defineComponent({...to,__name:"TideInputSelect",props:e.mergeModels({disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:ne.LAZY},label:{default:void 0},name:{default:void 0},optgroups:{default:void 0},options:{default:void 0},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,s=o,l=e.useModel(n,"modelValue"),i=ke(),a=e.ref(te.NO_ERROR),u=e.ref(!1),d=e.useId(),c=e.ref(!1),f=e.ref(null),E=e.computed(()=>r.required?`${r.label} *`:r.label),v=e.computed(()=>m.value?!0:c.value?!a.value.valid:!1),m=e.computed(()=>r.error!==""),L=e.computed(()=>u.value||!O.value),O=e.computed(()=>l.value==null||l.value===""),T=e.computed(()=>v.value&&a.value.message||r.supportingText),A=()=>{var I;const N=new MouseEvent("mousedown");(I=f==null?void 0:f.value)==null||I.dispatchEvent(N)},R=()=>{u.value=!0,r.errorDisplay===ne.EAGER&&(c.value=!0)},g=()=>{u.value=!1,r.errorDisplay===ne.LAZY&&(c.value=!0)};return e.watchEffect(()=>{a.value=Je({errorFromProps:r.error,required:r.required,value:l})}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,N=>{N&&(c.value=!0)},{immediate:!0}),e.watch(a,()=>{s("valid",a.value.valid)},{deep:!0,immediate:!0}),(N,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",v.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:A},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([L.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:e.unref(d)},e.toDisplayString(E.value),11,Kr)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).GAP.HALF])},[n.prefix?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_1,e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.OFF,n.label&&e.unref(t).MARGIN.TOP.ONE])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.TOP.ONE,e.unref(t).PADDING.RIGHT.TWO,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,n.prefix?e.unref(t).PADDING.LEFT.ZERO:e.unref(t).PADDING.LEFT.ONE]),disabled:n.disabled,name:n.name,ref_key:"selectElement",ref:f,required:n.required,onFocus:R,onFocusout:g,id:e.unref(d),"onUpdate:modelValue":I[0]||(I[0]=C=>l.value=C)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.optgroups,C=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[C.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:`group-${C.label}`,label:C.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.options,h=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:h.value,value:h.value},e.toDisplayString(h.label),11,jr))),128))],10,Zr)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:`option-${C.value}`,selected:l.value===C.value?!0:void 0,value:C.value},e.toDisplayString(C.label),11,Jr))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,C=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:C.value,selected:l.value===C.value?!0:void 0,value:C.value},e.toDisplayString(C.label),11,eo))),128))],42,Qr),[[e.vModelSelect,l.value]])],2)],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).MARGIN.RIGHT.TWO,e.unref(t).POINTER_EVENTS.OFF,n.label&&e.unref(t).MARGIN.TOP.ONE])},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(t).PADDING.RIGHT.ONE)},e.toDisplayString(n.suffix),3)],2)):e.createCommentVNode("",!0),e.createVNode(y,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(S).EXPAND_MORE,size:e.unref(P).SMALL},null,8,["class","icon","size"])],2),T.value?(e.openBlock(),e.createBlock(Ue,{key:0,"is-error":v.value,message:T.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),ro=D(no,[["__scopeId","data-v-5a079d8b"]]),Ut="Please enter a valid value.",et=(n,o)=>typeof n=="string"&&n.length>0?n:typeof o=="string"&&o.length>0?o:Ut,tt=(n,o)=>n!==!1||o!==!1,oo=({maxlength:n,minlength:o,required:r,value:s})=>{const l=s.length===0&&!r,i=n&&s.length>n;return!(!l&&o&&s.length<o)&&!i},_t=({error:n,errorFromProps:o,maxlength:r,minlength:s,required:l=!1,validators:i,value:a})=>{if(n.value=o||!1,!n.value&&i){const u=lo((a==null?void 0:a.value)||"",i);u.valid||(n.value=u.message)}if(!n.value&&(r||s)){const u=so({maxlength:r,minlength:s,required:l,value:(a==null?void 0:a.value)||""});u.valid||(n.value=u.message)}},so=({maxlength:n,minlength:o,required:r=!1,value:s})=>{const l={message:"",valid:!0};return l.valid=oo({maxlength:n,minlength:o,required:r,value:s}),l.valid||(l.message=Ut,n&&o?l.message=`Please enter a value between ${o} and ${n} characters in length.`:n?l.message=`Please enter a value no more than ${n} characters in length.`:o&&(l.message=`Please enter a value no less than ${o} characters in length.`)),l};function lo(n,o){for(const r of o){const s=r(n);if(!s.valid)return s}return{message:"",valid:!0}}const ao=["for"],io=["disabled","name","required","id"],uo=["label"],co=["value"],fo=["selected","value"],Eo=["selected","value"],mo={},vo=e.defineComponent({...mo,__name:"TideInputSelectDeprecated",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(n,{expose:o}){const r=n,s=e.ref(r.error),l=e.ref(!1),i=e.ref(null),a=e.ref(r.required),u=e.ref(r.value),d=e.computed(()=>et(r.error,s.value)),c=e.computed(()=>r.required?`${r.label} *`:r.label),f=e.computed(()=>r.required&&!u.value||tt(s.value,r.error)),E=e.computed(()=>l.value||!v.value),v=e.computed(()=>u.value===void 0),m=()=>{var A;const T=new MouseEvent("mousedown");(A=i==null?void 0:i.value)==null||A.dispatchEvent(T)},L=()=>{l.value=!0},O=()=>{l.value=!1};return e.watch(()=>r.value,(T,A)=>{(T!==A||T!==u.value)&&(u.value=T)}),o({error:s,value:u}),(T,A)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:m},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(c.value),11,ao)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,name:n.name,ref_key:"input",ref:i,required:a.value,onFocus:L,onFocusout:O,id:r.inputId,"onUpdate:modelValue":A[0]||(A[0]=R=>u.value=R)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,R=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[R.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.label,label:R.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.options,g=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:g.value,value:g.value},e.toDisplayString(g.label),11,co))),128))],10,uo)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.value,selected:u.value===R.value?!0:void 0,value:R.value},e.toDisplayString(R.label),11,fo))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,R=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:R.value,selected:u.value===R.value?!0:void 0,value:R.value},e.toDisplayString(R.label),11,Eo))),128))],42,io),[[e.vModelSelect,u.value]])],2),e.createVNode(y,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(S).EXPAND_MORE,size:e.unref(P).SMALL},null,8,["class","icon","size"])],2),r.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([]),icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?d.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Oo=D(vo,[["__scopeId","data-v-4cfaa9a8"]]),U={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},fe={DECIMAL:"decimal",EMAIL:"email",NUMERIC:"numeric",SEARCH:"search",TEL:"tel",TEXT:"text",URL:"url"},Lo=(n,o)=>{if(o)return o;switch(n){case U.TEL:return fe.TEL;case U.SEARCH:return fe.SEARCH;case U.NUMBER:return fe.NUMERIC;case U.EMAIL:return fe.EMAIL;case U.URL:return fe.URL}},Ro=["for"],To=["autocomplete","disabled","inputmode","maxlength","minlength","name","required","type","id"],Ao={},Io=e.defineComponent({...Ao,__name:"TideInputText",props:e.mergeModels({autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{default:""},errorDisplay:{default:ne.LAZY},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},inputmode:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:U.TEXT},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,s=o,l=e.useModel(n,"modelValue"),i=ke(),a=e.ref(te.NO_ERROR),u=e.ref(!1),d=e.ref(null),c=e.ref(!1),f=e.ref(!1),E=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),v=e.computed(()=>m.value?!0:c.value?!a.value.valid:!1),m=e.computed(()=>r.error!==""),L=e.computed(()=>u.value||!A.value),O=e.computed(()=>Lo(r.type,r.inputmode)),T=e.computed(()=>r.type===U.PASSWORD&&f.value===!0?U.TEXT:r.type),A=e.computed(()=>l.value==null||l.value===""),R=e.computed(()=>r.hasClear&&l.value&&r.type!==U.PASSWORD),g=e.computed(()=>r.type===U.PASSWORD),N=e.computed(()=>v.value&&a.value.message||r.supportingText),I=()=>{var b;l.value="",(b=d.value)==null||b.focus()},C=()=>{u.value=!0,r.errorDisplay===ne.EAGER&&(c.value=!0)},h=()=>{u.value=!1,r.errorDisplay===ne.LAZY&&(c.value=!0)},w=()=>{var b;(b=d.value)==null||b.focus()},$=b=>{u.value&&b.target!==d.value&&b.preventDefault()};return e.watchEffect(()=>{a.value=Je({errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:l})}),e.watch([l,()=>r.transformValue],()=>{var _,J;if(!r.transformValue)return;const b=((J=(_=l.value)==null?void 0:_.match(/\d/g))==null?void 0:J.join(""))||void 0;l.value=b?r.transformValue(b):""},{immediate:!0}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,b=>{b&&(c.value=!0)},{immediate:!0}),e.watch(a,()=>{s("valid",a.value.valid)},{deep:!0,immediate:!0}),(b,_)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",v.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).PADDING.Y.HALF,R.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:w,onMousedown:$},[n.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,L.value?"":"offset"])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",L.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(E.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:n.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED]),disabled:n.disabled,inputmode:O.value,maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"inputElement",ref:d,required:n.required,type:T.value,onFocus:C,onFocusout:h,id:n.inputId,"onUpdate:modelValue":_[0]||(_[0]=J=>l.value=J)},null,42,To),[[e.vModelDynamic,l.value]])],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!v.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,L.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),R.value?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:I,type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:_[1]||(_[1]=J=>f.value=!f.value),type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],42,Ro),N.value?(e.openBlock(),e.createBlock(Ue,{key:0,"is-error":v.value,message:N.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),No=D(Io,[["__scopeId","data-v-0a1e4747"]]),go=["for"],po=["autocomplete","disabled","maxlength","minlength","name","required","type","id"],Co={},ho=e.defineComponent({...Co,__name:"TideInputTextDeprecated",props:{autocomplete:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:U.TEXT},validators:{default:void 0},value:{default:void 0}},setup(n,{expose:o}){const r=n,s=e.ref(r.error),l=e.ref(!1),i=e.ref(null),a=e.ref(!1),u=e.ref(r.value),d=e.computed(()=>et(r.error,s.value)),c=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),f=e.computed(()=>r.hasClear&&u.value),E=e.computed(()=>r.required&&u.value!==void 0&&!u.value||tt(s.value,r.error)),v=e.computed(()=>l.value||!m.value),m=e.computed(()=>u.value===""||u.value===void 0),L=e.computed(()=>r.type===U.PASSWORD&&a.value===!0?U.TEXT:r.type),O=()=>{var I;u.value="",(I=i.value)==null||I.focus()},T=()=>{l.value=!0},A=()=>{l.value=!1,u.value||(u.value=""),g()},R=()=>{var I,C;if(r.transformValue){const h=((C=(I=u.value)==null?void 0:I.match(/\d/g))==null?void 0:C.join(""))||void 0;u.value=h?r.transformValue(h):""}},g=()=>{_t({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:u})},N=I=>{u.value=I};return e.watch(()=>r.value,(I,C)=>{(I!==C||I!==u.value)&&(u.value=I)}),o({error:s,required:r.required,updateValue:N,value:u}),(I,C)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,n.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-text-field",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,n.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.iconLeading?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:n.iconLeading,size:e.unref(P).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[n.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,v.value?"":"offset"])},e.toDisplayString(n.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-label",v.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(c.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:n.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,n.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:n.disabled,maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"input",ref:i,required:n.required,type:L.value,onChange:g,onFocus:T,onFocusout:A,onInput:R,id:n.inputId,"onUpdate:modelValue":C[0]||(C[0]=h=>u.value=h)},null,42,po),[[e.vModelDynamic,u.value]])],2),n.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,v.value?"":"offset"])},e.toDisplayString(n.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&n.type!==e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:O,type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).CLOSE,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0),n.type===e.unref(U).PASSWORD?(e.openBlock(),e.createElementBlock("button",{key:2,onClick:C[1]||(C[1]=h=>a.value=!a.value),type:"button"},[e.createVNode(y,{class:e.normalizeClass([e.unref(t).MARGIN.FULL.HALF]),icon:e.unref(S).VISIBILITY,size:e.unref(P).SMALL},null,8,["class","icon","size"])])):e.createCommentVNode("",!0)],10,go),n.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([]),icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?d.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),So=D(ho,[["__scopeId","data-v-dbb301e9"]]),Fo=["for"],Do=["maxlength","minlength","name","required","rows","id"],Bo={},yo=e.defineComponent({...Bo,__name:"TideInputTextarea",props:e.mergeModels({error:{default:""},errorDisplay:{default:ne.LAZY},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},validators:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:e.mergeModels(["valid"],["update:modelValue"]),setup(n,{emit:o}){const r=n,s=o,l=e.useModel(n,"modelValue"),i=ke(),a=e.ref(te.NO_ERROR),u=e.ref(!1),d=e.ref(!1),c=e.ref(null),f=e.computed(()=>r.required?`${r.label} *`:r.label),E=e.computed(()=>v.value?!0:d.value?!a.value.valid:!1),v=e.computed(()=>r.error!==""),m=e.computed(()=>u.value||!L.value),L=e.computed(()=>l.value===""),O=e.computed(()=>E.value&&a.value.message||r.supportingText),T=()=>{u.value=!0,r.errorDisplay===ne.EAGER&&(d.value=!0)},A=()=>{u.value=!1,r.errorDisplay===ne.LAZY&&(d.value=!0)},R=()=>{var N;(N=c.value)==null||N.focus()},g=N=>{u.value&&N.target!==c.value&&N.preventDefault()};return e.watchEffect(()=>{a.value=Je({errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:l})}),e.watch(()=>i==null?void 0:i.forceShowErrors.value,N=>{N&&(d.value=!0)},{immediate:!0}),e.watch(a,()=>{s("valid",a.value.valid)},{deep:!0,immediate:!0}),(N,I)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,E.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId,onClick:R,onMousedown:g},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",e.unref(t).PADDING.X.ONE,m.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(f.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"textareaElement",ref:c,required:n.required,rows:n.rows,onFocus:T,onFocusout:A,id:n.inputId,"onUpdate:modelValue":I[0]||(I[0]=C=>l.value=C)},null,42,Do),[[e.vModelText,l.value]])],42,Fo),O.value?(e.openBlock(),e.createBlock(Ue,{key:0,"is-error":E.value,message:O.value},null,8,["is-error","message"])):e.createCommentVNode("",!0)],2))}}),Po=D(yo,[["__scopeId","data-v-27ae9283"]]),bo=["for"],ko=["maxlength","minlength","name","required","rows","id"],Uo={},_o=e.defineComponent({...Uo,__name:"TideInputTextareaDeprecated",props:{error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(n,{expose:o}){const r=n,s=e.ref(r.error),l=e.ref(!1),i=e.ref(null),a=e.ref(r.value),u=e.computed(()=>et(r.error,s.value)),d=e.computed(()=>r.required?`${r.label} *`:r.label),c=e.computed(()=>r.required&&a.value!==void 0&&!a.value||tt(s.value,r.error)),f=e.computed(()=>l.value||!E.value),E=e.computed(()=>a.value===""||a.value===void 0),v=()=>{l.value=!0},m=()=>{l.value=!1,a.value||(a.value="")},L=()=>_t({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,value:a});return e.watch(()=>r.value,(O,T)=>{(O!==T||O!==a.value)&&(a.value=O)}),o({error:s,required:r.required,value:a}),(O,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,c.value&&"error"])},[e.createElementVNode("label",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.TEXT]),for:n.inputId},[n.label?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-textarea-label",f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!c.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF])},e.toDisplayString(d.value),3)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),maxlength:n.maxlength,minlength:n.minlength,name:n.name,ref_key:"input",ref:i,required:n.required,rows:n.rows,onChange:L,onFocus:v,onFocusout:m,id:n.inputId,"onUpdate:modelValue":T[0]||(T[0]=A=>a.value=A)},null,42,ko),[[e.vModelText,a.value]])],10,bo),n.supportingText||c.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[c.value?(e.openBlock(),e.createBlock(y,{key:0,icon:e.unref(S).ERROR,size:e.unref(P).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(c.value?u.value:n.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}}),Vo=D(_o,[["__scopeId","data-v-9b7af68f"]]),wo={},Go=e.defineComponent({...wo,__name:"TideMenuItem",props:{element:{default:B.LINK},href:{default:void 0},isNewTab:{type:Boolean,default:!1},iconTrailing:{default:void 0},label:{}},setup(n){return(o,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element),{class:e.normalizeClass(["tide-menu-item",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.ZERO,e.unref(t).DISPLAY.FLEX,e.unref(t).ELLIPSIS,e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).UNDERLINE.REST.OFF,e.unref(t).WIDTH.FULL]),href:n.href,target:n.isNewTab?e.unref(Y).BLANK:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(n.label),1),n.iconTrailing?(e.openBlock(),e.createBlock(y,{key:0,class:e.normalizeClass([e.unref(t).MARGIN.LEFT.AUTO]),icon:n.iconTrailing,size:e.unref(P).LARGE},null,8,["class","icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),Mo=D(Go,[["__scopeId","data-v-da373674"]]),Vt={SM:"sm",MD:"md",LG:"lg",XL:"xl"},xo={SM:768,MD:992,LG:1232,XL:1920},Be=async n=>{const o=document.body;if(n){if(!o.dataset.scrollLockY){const r=window.scrollY;o.dataset.scrollLockY=r.toString(),o.style.setProperty("--saved-scroll-y",`${r}px`),o.style.setProperty("inset","0"),o.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),o.style.setProperty("overflow-y","scroll"),o.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const r=parseInt(o.dataset.scrollLockY||"0");o.style.removeProperty("inset"),o.style.removeProperty("margin-top"),o.style.removeProperty("overflow-y"),o.style.removeProperty("position"),o.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:r}),delete o.dataset.scrollLockY}},me="tide-top-layer",_e=()=>{let n=document.getElementById(me);n||(n=document.createElement("div"),n.id=me,n.setAttribute("data-css-scope",""),document.body.appendChild(n)),n.style.isolation="isolate"},Ho=["textContent"],zo={},Yo=e.defineComponent({...zo,__name:"TideModal",props:e.mergeModels({beforeClose:{type:Function,default:void 0},isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},title:{default:void 0},width:{default:void 0}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["back"],["update:modelValue"]),setup(n,{emit:o}){const r=n,s=o,l=e.ref(),i=e.ref(),a=e.useModel(n,"modelValue"),u=()=>{var m;(m=i.value)==null||m.showModal(),Be(!0)},d=()=>{var m;(m=i.value)==null||m.close(),Be(!1)},c=()=>{e.nextTick(()=>{l.value&&(l.value.scrollTop=0)})},f=async()=>{r.beforeClose&&await r.beforeClose()===!1||(a.value=!1)},E=()=>{r.isDismissible&&f()},v=m=>{m.preventDefault(),r.isDismissible&&f()};return e.watch(a,()=>{i.value&&(a.value?(u(),c()):d())}),e.onBeforeMount(()=>{_e()}),e.onMounted(()=>{a.value&&u()}),e.onBeforeUnmount(()=>{a.value&&(a.value=!1,d())}),(m,L)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(me)}`},[e.createElementVNode("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:i,style:e.normalizeStyle({"--modal-width":n.width}),onClick:e.withModifiers(E,["self"]),onClose:L[1]||(L[1]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(v,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(Vt).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[n.isBackButton?(e.openBlock(),e.createBlock(z,{key:0,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:L[0]||(L[0]=O=>s("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(n.title)},null,10,Ho),n.isDismissible?(e.openBlock(),e.createBlock(z,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(S).CLOSE,priority:e.unref(V).QUATERNARY,onClick:f},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.Y.TWO,e.unref(t).WIDTH.FULL]),ref_key:"modalContent",ref:l},[e.renderSlot(m.$slots,"default",{},void 0,!0)],2),m.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(m.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38)],8,["to"]))}}),Xo=D(Yo,[["__scopeId","data-v-05f5899b"]]),Wo=e.defineComponent({__name:"TidePagination",props:e.mergeModels({pageTotal:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),s=e.computed(()=>new Array(o.pageTotal).fill("").map((u,d)=>d+1)),l=u=>{r.value=u},i=()=>{r.value--},a=()=>{r.value++};return(u,d)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(z,{disabled:r.value<=1,icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:i},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c},[e.createVNode(Dt,{disabled:r.value===c,label:c,priority:e.unref(V).QUATERNARY,onClick:f=>l(c)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(z,{disabled:r.value>=s.value[s.value.length-1],icon:e.unref(S).CHEVRON_RIGHT,priority:e.unref(V).QUATERNARY,onClick:a},null,8,["disabled","icon","priority"])],2))}}),qo=["top","right","bottom","left"],ut=["start","end"],ct=qo.reduce((n,o)=>n.concat(o,o+"-"+ut[0],o+"-"+ut[1]),[]),ye=Math.min,ie=Math.max,Pe=Math.round,Ce=Math.floor,Q=n=>({x:n,y:n}),$o={left:"right",right:"left",bottom:"top",top:"bottom"},Ko={start:"end",end:"start"};function dt(n,o,r){return ie(n,ye(o,r))}function Ve(n,o){return typeof n=="function"?n(o):n}function Oe(n){return n.split("-")[0]}function re(n){return n.split("-")[1]}function wt(n){return n==="x"?"y":"x"}function Gt(n){return n==="y"?"height":"width"}function we(n){return["top","bottom"].includes(Oe(n))?"y":"x"}function Mt(n){return wt(we(n))}function Qo(n,o,r){r===void 0&&(r=!1);const s=re(n),l=Mt(n),i=Gt(l);let a=l==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return o.reference[i]>o.floating[i]&&(a=ft(a)),[a,ft(a)]}function Zo(n){return n.replace(/start|end/g,o=>Ko[o])}function ft(n){return n.replace(/left|right|bottom|top/g,o=>$o[o])}function jo(n){return{top:0,right:0,bottom:0,left:0,...n}}function Jo(n){return typeof n!="number"?jo(n):{top:n,right:n,bottom:n,left:n}}function be(n){const{x:o,y:r,width:s,height:l}=n;return{width:s,height:l,top:r,left:o,right:o+s,bottom:r+l,x:o,y:r}}function Et(n,o,r){let{reference:s,floating:l}=n;const i=we(o),a=Mt(o),u=Gt(a),d=Oe(o),c=i==="y",f=s.x+s.width/2-l.width/2,E=s.y+s.height/2-l.height/2,v=s[u]/2-l[u]/2;let m;switch(d){case"top":m={x:f,y:s.y-l.height};break;case"bottom":m={x:f,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:E};break;case"left":m={x:s.x-l.width,y:E};break;default:m={x:s.x,y:s.y}}switch(re(o)){case"start":m[a]-=v*(r&&c?-1:1);break;case"end":m[a]+=v*(r&&c?-1:1);break}return m}const es=async(n,o,r)=>{const{placement:s="bottom",strategy:l="absolute",middleware:i=[],platform:a}=r,u=i.filter(Boolean),d=await(a.isRTL==null?void 0:a.isRTL(o));let c=await a.getElementRects({reference:n,floating:o,strategy:l}),{x:f,y:E}=Et(c,s,d),v=s,m={},L=0;for(let O=0;O<u.length;O++){const{name:T,fn:A}=u[O],{x:R,y:g,data:N,reset:I}=await A({x:f,y:E,initialPlacement:s,placement:v,strategy:l,middlewareData:m,rects:c,platform:a,elements:{reference:n,floating:o}});f=R??f,E=g??E,m={...m,[T]:{...m[T],...N}},I&&L<=50&&(L++,typeof I=="object"&&(I.placement&&(v=I.placement),I.rects&&(c=I.rects===!0?await a.getElementRects({reference:n,floating:o,strategy:l}):I.rects),{x:f,y:E}=Et(c,v,d)),O=-1)}return{x:f,y:E,placement:v,strategy:l,middlewareData:m}};async function xt(n,o){var r;o===void 0&&(o={});const{x:s,y:l,platform:i,rects:a,elements:u,strategy:d}=n,{boundary:c="clippingAncestors",rootBoundary:f="viewport",elementContext:E="floating",altBoundary:v=!1,padding:m=0}=Ve(o,n),L=Jo(m),T=u[v?E==="floating"?"reference":"floating":E],A=be(await i.getClippingRect({element:(r=await(i.isElement==null?void 0:i.isElement(T)))==null||r?T:T.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(u.floating)),boundary:c,rootBoundary:f,strategy:d})),R=E==="floating"?{x:s,y:l,width:a.floating.width,height:a.floating.height}:a.reference,g=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u.floating)),N=await(i.isElement==null?void 0:i.isElement(g))?await(i.getScale==null?void 0:i.getScale(g))||{x:1,y:1}:{x:1,y:1},I=be(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:R,offsetParent:g,strategy:d}):R);return{top:(A.top-I.top+L.top)/N.y,bottom:(I.bottom-A.bottom+L.bottom)/N.y,left:(A.left-I.left+L.left)/N.x,right:(I.right-A.right+L.right)/N.x}}function ts(n,o,r){return(n?[...r.filter(l=>re(l)===n),...r.filter(l=>re(l)!==n)]:r.filter(l=>Oe(l)===l)).filter(l=>n?re(l)===n||(o?Zo(l)!==l:!1):!0)}const ns=function(n){return n===void 0&&(n={}),{name:"autoPlacement",options:n,async fn(o){var r,s,l;const{rects:i,middlewareData:a,placement:u,platform:d,elements:c}=o,{crossAxis:f=!1,alignment:E,allowedPlacements:v=ct,autoAlignment:m=!0,...L}=Ve(n,o),O=E!==void 0||v===ct?ts(E||null,m,v):v,T=await xt(o,L),A=((r=a.autoPlacement)==null?void 0:r.index)||0,R=O[A];if(R==null)return{};const g=Qo(R,i,await(d.isRTL==null?void 0:d.isRTL(c.floating)));if(u!==R)return{reset:{placement:O[0]}};const N=[T[Oe(R)],T[g[0]],T[g[1]]],I=[...((s=a.autoPlacement)==null?void 0:s.overflows)||[],{placement:R,overflows:N}],C=O[A+1];if(C)return{data:{index:A+1,overflows:I},reset:{placement:C}};const h=I.map(b=>{const _=re(b.placement);return[b.placement,_&&f?b.overflows.slice(0,2).reduce((J,He)=>J+He,0):b.overflows[0],b.overflows]}).sort((b,_)=>b[1]-_[1]),$=((l=h.filter(b=>b[2].slice(0,re(b[0])?2:3).every(_=>_<=0))[0])==null?void 0:l[0])||h[0][0];return $!==u?{data:{index:A+1,overflows:I},reset:{placement:$}}:{}}}};async function rs(n,o){const{placement:r,platform:s,elements:l}=n,i=await(s.isRTL==null?void 0:s.isRTL(l.floating)),a=Oe(r),u=re(r),d=we(r)==="y",c=["left","top"].includes(a)?-1:1,f=i&&d?-1:1,E=Ve(o,n);let{mainAxis:v,crossAxis:m,alignmentAxis:L}=typeof E=="number"?{mainAxis:E,crossAxis:0,alignmentAxis:null}:{mainAxis:E.mainAxis||0,crossAxis:E.crossAxis||0,alignmentAxis:E.alignmentAxis};return u&&typeof L=="number"&&(m=u==="end"?L*-1:L),d?{x:m*f,y:v*c}:{x:v*c,y:m*f}}const os=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(o){var r,s;const{x:l,y:i,placement:a,middlewareData:u}=o,d=await rs(o,n);return a===((r=u.offset)==null?void 0:r.placement)&&(s=u.arrow)!=null&&s.alignmentOffset?{}:{x:l+d.x,y:i+d.y,data:{...d,placement:a}}}}},ss=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(o){const{x:r,y:s,placement:l}=o,{mainAxis:i=!0,crossAxis:a=!1,limiter:u={fn:T=>{let{x:A,y:R}=T;return{x:A,y:R}}},...d}=Ve(n,o),c={x:r,y:s},f=await xt(o,d),E=we(Oe(l)),v=wt(E);let m=c[v],L=c[E];if(i){const T=v==="y"?"top":"left",A=v==="y"?"bottom":"right",R=m+f[T],g=m-f[A];m=dt(R,m,g)}if(a){const T=E==="y"?"top":"left",A=E==="y"?"bottom":"right",R=L+f[T],g=L-f[A];L=dt(R,L,g)}const O=u.fn({...o,[v]:m,[E]:L});return{...O,data:{x:O.x-r,y:O.y-s,enabled:{[v]:i,[E]:a}}}}}};function Ge(){return typeof window<"u"}function ce(n){return nt(n)?(n.nodeName||"").toLowerCase():"#document"}function M(n){var o;return(n==null||(o=n.ownerDocument)==null?void 0:o.defaultView)||window}function j(n){var o;return(o=(nt(n)?n.ownerDocument:n.document)||window.document)==null?void 0:o.documentElement}function nt(n){return Ge()?n instanceof Node||n instanceof M(n).Node:!1}function W(n){return Ge()?n instanceof Element||n instanceof M(n).Element:!1}function Z(n){return Ge()?n instanceof HTMLElement||n instanceof M(n).HTMLElement:!1}function mt(n){return!Ge()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof M(n).ShadowRoot}function ge(n){const{overflow:o,overflowX:r,overflowY:s,display:l}=q(n);return/auto|scroll|overlay|hidden|clip/.test(o+s+r)&&!["inline","contents"].includes(l)}function ls(n){return["table","td","th"].includes(ce(n))}function Me(n){return[":popover-open",":modal"].some(o=>{try{return n.matches(o)}catch{return!1}})}function rt(n){const o=ot(),r=W(n)?q(n):n;return["transform","translate","scale","rotate","perspective"].some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!o&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!o&&(r.filter?r.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(r.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(r.contain||"").includes(s))}function as(n){let o=oe(n);for(;Z(o)&&!ve(o);){if(rt(o))return o;if(Me(o))return null;o=oe(o)}return null}function ot(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function ve(n){return["html","body","#document"].includes(ce(n))}function q(n){return M(n).getComputedStyle(n)}function xe(n){return W(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function oe(n){if(ce(n)==="html")return n;const o=n.assignedSlot||n.parentNode||mt(n)&&n.host||j(n);return mt(o)?o.host:o}function Ht(n){const o=oe(n);return ve(o)?n.ownerDocument?n.ownerDocument.body:n.body:Z(o)&&ge(o)?o:Ht(o)}function Ne(n,o,r){var s;o===void 0&&(o=[]),r===void 0&&(r=!0);const l=Ht(n),i=l===((s=n.ownerDocument)==null?void 0:s.body),a=M(l);if(i){const u=Ze(a);return o.concat(a,a.visualViewport||[],ge(l)?l:[],u&&r?Ne(u):[])}return o.concat(l,Ne(l,[],r))}function Ze(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function zt(n){const o=q(n);let r=parseFloat(o.width)||0,s=parseFloat(o.height)||0;const l=Z(n),i=l?n.offsetWidth:r,a=l?n.offsetHeight:s,u=Pe(r)!==i||Pe(s)!==a;return u&&(r=i,s=a),{width:r,height:s,$:u}}function st(n){return W(n)?n:n.contextElement}function Ee(n){const o=st(n);if(!Z(o))return Q(1);const r=o.getBoundingClientRect(),{width:s,height:l,$:i}=zt(o);let a=(i?Pe(r.width):r.width)/s,u=(i?Pe(r.height):r.height)/l;return(!a||!Number.isFinite(a))&&(a=1),(!u||!Number.isFinite(u))&&(u=1),{x:a,y:u}}const is=Q(0);function Yt(n){const o=M(n);return!ot()||!o.visualViewport?is:{x:o.visualViewport.offsetLeft,y:o.visualViewport.offsetTop}}function us(n,o,r){return o===void 0&&(o=!1),!r||o&&r!==M(n)?!1:o}function ue(n,o,r,s){o===void 0&&(o=!1),r===void 0&&(r=!1);const l=n.getBoundingClientRect(),i=st(n);let a=Q(1);o&&(s?W(s)&&(a=Ee(s)):a=Ee(n));const u=us(i,r,s)?Yt(i):Q(0);let d=(l.left+u.x)/a.x,c=(l.top+u.y)/a.y,f=l.width/a.x,E=l.height/a.y;if(i){const v=M(i),m=s&&W(s)?M(s):s;let L=v,O=Ze(L);for(;O&&s&&m!==L;){const T=Ee(O),A=O.getBoundingClientRect(),R=q(O),g=A.left+(O.clientLeft+parseFloat(R.paddingLeft))*T.x,N=A.top+(O.clientTop+parseFloat(R.paddingTop))*T.y;d*=T.x,c*=T.y,f*=T.x,E*=T.y,d+=g,c+=N,L=M(O),O=Ze(L)}}return be({width:f,height:E,x:d,y:c})}function lt(n,o){const r=xe(n).scrollLeft;return o?o.left+r:ue(j(n)).left+r}function Xt(n,o,r){r===void 0&&(r=!1);const s=n.getBoundingClientRect(),l=s.left+o.scrollLeft-(r?0:lt(n,s)),i=s.top+o.scrollTop;return{x:l,y:i}}function cs(n){let{elements:o,rect:r,offsetParent:s,strategy:l}=n;const i=l==="fixed",a=j(s),u=o?Me(o.floating):!1;if(s===a||u&&i)return r;let d={scrollLeft:0,scrollTop:0},c=Q(1);const f=Q(0),E=Z(s);if((E||!E&&!i)&&((ce(s)!=="body"||ge(a))&&(d=xe(s)),Z(s))){const m=ue(s);c=Ee(s),f.x=m.x+s.clientLeft,f.y=m.y+s.clientTop}const v=a&&!E&&!i?Xt(a,d,!0):Q(0);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-d.scrollLeft*c.x+f.x+v.x,y:r.y*c.y-d.scrollTop*c.y+f.y+v.y}}function ds(n){return Array.from(n.getClientRects())}function fs(n){const o=j(n),r=xe(n),s=n.ownerDocument.body,l=ie(o.scrollWidth,o.clientWidth,s.scrollWidth,s.clientWidth),i=ie(o.scrollHeight,o.clientHeight,s.scrollHeight,s.clientHeight);let a=-r.scrollLeft+lt(n);const u=-r.scrollTop;return q(s).direction==="rtl"&&(a+=ie(o.clientWidth,s.clientWidth)-l),{width:l,height:i,x:a,y:u}}function Es(n,o){const r=M(n),s=j(n),l=r.visualViewport;let i=s.clientWidth,a=s.clientHeight,u=0,d=0;if(l){i=l.width,a=l.height;const c=ot();(!c||c&&o==="fixed")&&(u=l.offsetLeft,d=l.offsetTop)}return{width:i,height:a,x:u,y:d}}function ms(n,o){const r=ue(n,!0,o==="fixed"),s=r.top+n.clientTop,l=r.left+n.clientLeft,i=Z(n)?Ee(n):Q(1),a=n.clientWidth*i.x,u=n.clientHeight*i.y,d=l*i.x,c=s*i.y;return{width:a,height:u,x:d,y:c}}function vt(n,o,r){let s;if(o==="viewport")s=Es(n,r);else if(o==="document")s=fs(j(n));else if(W(o))s=ms(o,r);else{const l=Yt(n);s={x:o.x-l.x,y:o.y-l.y,width:o.width,height:o.height}}return be(s)}function Wt(n,o){const r=oe(n);return r===o||!W(r)||ve(r)?!1:q(r).position==="fixed"||Wt(r,o)}function vs(n,o){const r=o.get(n);if(r)return r;let s=Ne(n,[],!1).filter(u=>W(u)&&ce(u)!=="body"),l=null;const i=q(n).position==="fixed";let a=i?oe(n):n;for(;W(a)&&!ve(a);){const u=q(a),d=rt(a);!d&&u.position==="fixed"&&(l=null),(i?!d&&!l:!d&&u.position==="static"&&!!l&&["absolute","fixed"].includes(l.position)||ge(a)&&!d&&Wt(n,a))?s=s.filter(f=>f!==a):l=u,a=oe(a)}return o.set(n,s),s}function Os(n){let{element:o,boundary:r,rootBoundary:s,strategy:l}=n;const a=[...r==="clippingAncestors"?Me(o)?[]:vs(o,this._c):[].concat(r),s],u=a[0],d=a.reduce((c,f)=>{const E=vt(o,f,l);return c.top=ie(E.top,c.top),c.right=ye(E.right,c.right),c.bottom=ye(E.bottom,c.bottom),c.left=ie(E.left,c.left),c},vt(o,u,l));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function Ls(n){const{width:o,height:r}=zt(n);return{width:o,height:r}}function Rs(n,o,r){const s=Z(o),l=j(o),i=r==="fixed",a=ue(n,!0,i,o);let u={scrollLeft:0,scrollTop:0};const d=Q(0);if(s||!s&&!i)if((ce(o)!=="body"||ge(l))&&(u=xe(o)),s){const v=ue(o,!0,i,o);d.x=v.x+o.clientLeft,d.y=v.y+o.clientTop}else l&&(d.x=lt(l));const c=l&&!s&&!i?Xt(l,u):Q(0),f=a.left+u.scrollLeft-d.x-c.x,E=a.top+u.scrollTop-d.y-c.y;return{x:f,y:E,width:a.width,height:a.height}}function $e(n){return q(n).position==="static"}function Ot(n,o){if(!Z(n)||q(n).position==="fixed")return null;if(o)return o(n);let r=n.offsetParent;return j(n)===r&&(r=r.ownerDocument.body),r}function qt(n,o){const r=M(n);if(Me(n))return r;if(!Z(n)){let l=oe(n);for(;l&&!ve(l);){if(W(l)&&!$e(l))return l;l=oe(l)}return r}let s=Ot(n,o);for(;s&&ls(s)&&$e(s);)s=Ot(s,o);return s&&ve(s)&&$e(s)&&!rt(s)?r:s||as(n)||r}const Ts=async function(n){const o=this.getOffsetParent||qt,r=this.getDimensions,s=await r(n.floating);return{reference:Rs(n.reference,await o(n.floating),n.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function As(n){return q(n).direction==="rtl"}const Is={convertOffsetParentRelativeRectToViewportRelativeRect:cs,getDocumentElement:j,getClippingRect:Os,getOffsetParent:qt,getElementRects:Ts,getClientRects:ds,getDimensions:Ls,getScale:Ee,isElement:W,isRTL:As};function $t(n,o){return n.x===o.x&&n.y===o.y&&n.width===o.width&&n.height===o.height}function Ns(n,o){let r=null,s;const l=j(n);function i(){var u;clearTimeout(s),(u=r)==null||u.disconnect(),r=null}function a(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),i();const c=n.getBoundingClientRect(),{left:f,top:E,width:v,height:m}=c;if(u||o(),!v||!m)return;const L=Ce(E),O=Ce(l.clientWidth-(f+v)),T=Ce(l.clientHeight-(E+m)),A=Ce(f),g={rootMargin:-L+"px "+-O+"px "+-T+"px "+-A+"px",threshold:ie(0,ye(1,d))||1};let N=!0;function I(C){const h=C[0].intersectionRatio;if(h!==d){if(!N)return a();h?a(!1,h):s=setTimeout(()=>{a(!1,1e-7)},1e3)}h===1&&!$t(c,n.getBoundingClientRect())&&a(),N=!1}try{r=new IntersectionObserver(I,{...g,root:l.ownerDocument})}catch{r=new IntersectionObserver(I,g)}r.observe(n)}return a(!0),i}function gs(n,o,r,s){s===void 0&&(s={});const{ancestorScroll:l=!0,ancestorResize:i=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,c=st(n),f=l||i?[...c?Ne(c):[],...Ne(o)]:[];f.forEach(A=>{l&&A.addEventListener("scroll",r,{passive:!0}),i&&A.addEventListener("resize",r)});const E=c&&u?Ns(c,r):null;let v=-1,m=null;a&&(m=new ResizeObserver(A=>{let[R]=A;R&&R.target===c&&m&&(m.unobserve(o),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var g;(g=m)==null||g.observe(o)})),r()}),c&&!d&&m.observe(c),m.observe(o));let L,O=d?ue(n):null;d&&T();function T(){const A=ue(n);O&&!$t(O,A)&&r(),O=A,L=requestAnimationFrame(T)}return r(),()=>{var A;f.forEach(R=>{l&&R.removeEventListener("scroll",r),i&&R.removeEventListener("resize",r)}),E==null||E(),(A=m)==null||A.disconnect(),m=null,d&&cancelAnimationFrame(L)}}const Lt=os,Rt=ns,Tt=ss,ps=(n,o,r)=>{const s=new Map,l={platform:Is,...r},i={...l.platform,_c:s};return es(n,o,{...l,platform:i})};function Cs(n){return n!=null&&typeof n=="object"&&"$el"in n}function At(n){if(Cs(n)){const o=n.$el;return nt(o)&&ce(o)==="#comment"?null:o}return n}function Re(n){return typeof n=="function"?n():e.unref(n)}function Kt(n){return typeof window>"u"?1:(n.ownerDocument.defaultView||window).devicePixelRatio||1}function It(n,o){const r=Kt(n);return Math.round(o*r)/r}function hs(n,o,r){r===void 0&&(r={});const s=r.whileElementsMounted,l=e.computed(()=>{var h;return(h=Re(r.open))!=null?h:!0}),i=e.computed(()=>Re(r.middleware)),a=e.computed(()=>{var h;return(h=Re(r.placement))!=null?h:"bottom"}),u=e.computed(()=>{var h;return(h=Re(r.strategy))!=null?h:"absolute"}),d=e.computed(()=>{var h;return(h=Re(r.transform))!=null?h:!0}),c=e.computed(()=>At(n.value)),f=e.computed(()=>At(o.value)),E=e.ref(0),v=e.ref(0),m=e.ref(u.value),L=e.ref(a.value),O=e.shallowRef({}),T=e.ref(!1),A=e.computed(()=>{const h={position:m.value,left:"0",top:"0"};if(!f.value)return h;const w=It(f.value,E.value),$=It(f.value,v.value);return d.value?{...h,transform:"translate("+w+"px, "+$+"px)",...Kt(f.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:w+"px",top:$+"px"}});let R;function g(){if(c.value==null||f.value==null)return;const h=l.value;ps(c.value,f.value,{middleware:i.value,placement:a.value,strategy:u.value}).then(w=>{E.value=w.x,v.value=w.y,m.value=w.strategy,L.value=w.placement,O.value=w.middlewareData,T.value=h!==!1})}function N(){typeof R=="function"&&(R(),R=void 0)}function I(){if(N(),s===void 0){g();return}if(c.value!=null&&f.value!=null){R=s(c.value,f.value,g);return}}function C(){l.value||(T.value=!1)}return e.watch([i,a,u,l],g,{flush:"sync"}),e.watch([c,f],I,{flush:"sync"}),e.watch(l,C,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(N),{x:e.shallowReadonly(E),y:e.shallowReadonly(v),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(L),middlewareData:e.shallowReadonly(O),isPositioned:e.shallowReadonly(T),floatingStyles:A,update:g}}const Ss=(n,o)=>!(Array.isArray(o)?o:[o]).some(s=>s.contains(n.target)),Fs={},Ds=e.defineComponent({...Fs,__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(n){const o=n,r=e.ref(null),s=e.ref(null),l=e.ref(null),i=e.ref(!1),a=e.ref(!1),u=e.ref([Rt(),Lt({mainAxis:o.offset}),Tt({padding:16})]),d=e.computed(()=>i.value||a.value),{floatingStyles:c}=hs(r,s,{middleware:u,strategy:"fixed",whileElementsMounted:gs}),f=N=>{!r.value||!s.value||Ss(N,[r.value,s.value])&&(a.value=!1,N.preventDefault(),N.stopImmediatePropagation())},E=()=>{i.value=!0},v=()=>{i.value=!1},m=N=>{N.preventDefault(),a.value?(a.value=!1,i.value=!1):a.value=!0},L=()=>{if(!r.value)return null;r.value.addEventListener("mouseover",E),r.value.addEventListener("mouseleave",v),r.value.addEventListener("click",m)},O=()=>{if(!r.value)return null;r.value.removeEventListener("mouseover",E),r.value.removeEventListener("mouseleave",v),r.value.removeEventListener("click",m)},T=N=>{N.key==="Escape"&&(a.value=!1)},A=()=>{l.value&&(l.value.addEventListener("click",f,!0),l.value.addEventListener("keydown",T))},R=()=>{l.value&&(l.value.removeEventListener("click",f,!0),l.value.removeEventListener("keydown",T))},g=()=>{r.value=document.getElementById(o.anchorId)};return e.watch(()=>a.value,N=>{N?A():R()}),e.watch(()=>o.anchorId,()=>{O(),g(),L()}),e.watchEffect(()=>{u.value=[Rt(),Lt({mainAxis:o.offset}),Tt({padding:16})]}),e.onBeforeMount(()=>{_e()}),e.onMounted(()=>{g(),l.value=document.documentElement,L()}),e.onUnmounted(()=>{O()}),(N,I)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(me)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:s,style:e.normalizeStyle({...e.unref(c)})},[e.renderSlot(N.$slots,"default",{},void 0,!0)],6),[[e.vShow,d.value]])]),_:3})],8,["to"]))}}),Bs=D(Ds,[["__scopeId","data-v-95cdc5e1"]]),ys=["onClick"],Ps={},bs=e.defineComponent({...Ps,__name:"TideRating",props:e.mergeModels({description:{default:void 0},maxRating:{default:10},showRating:{type:Boolean,default:!1},title:{default:void 0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),s=e.computed(()=>Array.from({length:o.maxRating},(i,a)=>a+1)),l=i=>{r.value=i};return(i,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-rating",e.unref(t).WIDTH.FULL])},[e.createElementVNode("section",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.BOTTOM.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2])},e.toDisplayString(o.title),3),o.showRating?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.value)+"/"+e.toDisplayString(o.maxRating),3)):e.createCommentVNode("",!0)],2),o.description?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ELLIPSIS])},e.toDisplayString(o.description),3)):e.createCommentVNode("",!0),e.createElementVNode("section",{class:e.normalizeClass(["tide-rating-bar",e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.ON])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,u=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-rating-segment",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).FLEX.GROW.ON,e.unref(t).FLEX.SHRINK.ON,e.unref(t).FLEX.BASIS.ZERO,e.unref(t).BORDER.FULL.ZERO,u===1&&["tide-rating-segment-first"],u===s.value.length&&["tide-rating-segment-last"],u<=r.value&&[e.unref(t).BG.SURFACE.GRADIENT]]),key:u,onClick:d=>l(u),type:"button"},null,10,ys))),128))],2)],2))}}),ks=D(bs,[["__scopeId","data-v-4ae61636"]]),Ie={LARGE:"large",MARK:"mark",SMALL:"small"},he={LARGE:32,SMALL:24},Us={AERO:186,ATV:192,BOATMART:152,CYCLE:169,EQUIPMENT:112,PWC:177,RV:169,SNOW:150,TRUCK:185},_s={AERO:32,ATV:32,BOATMART:33,CYCLE:32,EQUIPMENT:37,PWC:32,RV:32,SNOW:32,TRUCK:32},Nt=n=>{const r=Object.entries(je).find(s=>s[1]===n);if(!r)throw new Error(`Mapping for ${n} not found`);return r[0]},Vs={},ws=e.defineComponent({...Vs,__name:"TideRealmLogo",props:{size:{},realm:{}},setup(n){const o=n,r=e.ref(),s=e.computed(()=>{if(o.size===Ie.MARK)return _s[Nt(o.realm)];const i=Us[Nt(o.realm)];if(o.size===Ie.SMALL){const a=he.SMALL/he.LARGE;return Math.round(i*a)}else return i}),l=e.computed(()=>o.size===Ie.SMALL?he.SMALL:he.LARGE);return e.watch(()=>[o.size,o.realm],async()=>{const i=e.defineAsyncComponent(()=>o.size===Ie.MARK?Fe(Object.assign({"../assets/svg/branding/mark/mark-aero.svg":()=>Promise.resolve().then(()=>require("./mark-aero-CFjGMjbx.cjs")),"../assets/svg/branding/mark/mark-atv.svg":()=>Promise.resolve().then(()=>require("./mark-atv-BhRn5mUA.cjs")),"../assets/svg/branding/mark/mark-boatmart.svg":()=>Promise.resolve().then(()=>require("./mark-boatmart-Bmkv3dOs.cjs")),"../assets/svg/branding/mark/mark-cycle.svg":()=>Promise.resolve().then(()=>require("./mark-cycle-QCLSEZTF.cjs")),"../assets/svg/branding/mark/mark-equipment.svg":()=>Promise.resolve().then(()=>require("./mark-equipment-ThuZOvf6.cjs")),"../assets/svg/branding/mark/mark-pwc.svg":()=>Promise.resolve().then(()=>require("./mark-pwc-CQWDRntw.cjs")),"../assets/svg/branding/mark/mark-rv.svg":()=>Promise.resolve().then(()=>require("./mark-rv-BtQWH4-a.cjs")),"../assets/svg/branding/mark/mark-snow.svg":()=>Promise.resolve().then(()=>require("./mark-snow-Bek2T8IY.cjs")),"../assets/svg/branding/mark/mark-truck.svg":()=>Promise.resolve().then(()=>require("./mark-truck-BsOOC6Lx.cjs"))}),`../assets/svg/branding/mark/mark-${o.realm}.svg`,6):Fe(Object.assign({"../assets/svg/branding/logo/logo-aero.svg":()=>Promise.resolve().then(()=>require("./logo-aero-Z-V0eOLB.cjs")),"../assets/svg/branding/logo/logo-atv.svg":()=>Promise.resolve().then(()=>require("./logo-atv-xQMzut2h.cjs")),"../assets/svg/branding/logo/logo-boatmart.svg":()=>Promise.resolve().then(()=>require("./logo-boatmart-B9upxiMl.cjs")),"../assets/svg/branding/logo/logo-cycle.svg":()=>Promise.resolve().then(()=>require("./logo-cycle-c9schUUY.cjs")),"../assets/svg/branding/logo/logo-equipment.svg":()=>Promise.resolve().then(()=>require("./logo-equipment-3VYa6YcW.cjs")),"../assets/svg/branding/logo/logo-pwc.svg":()=>Promise.resolve().then(()=>require("./logo-pwc-DhXtaTyu.cjs")),"../assets/svg/branding/logo/logo-rv.svg":()=>Promise.resolve().then(()=>require("./logo-rv-BRXxuciP.cjs")),"../assets/svg/branding/logo/logo-snow.svg":()=>Promise.resolve().then(()=>require("./logo-snow-PVobISvF.cjs")),"../assets/svg/branding/logo/logo-truck.svg":()=>Promise.resolve().then(()=>require("./logo-truck-DE0J4OIJ.cjs"))}),`../assets/svg/branding/logo/logo-${o.realm}.svg`,6));r.value=e.markRaw(i)},{immediate:!0}),(i,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-realm-logo"]),style:e.normalizeStyle({"--tide-logo-width":`${s.value}px`,"--tide-logo-height":`${l.value}px`})},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK])},null,8,["class"])):e.createCommentVNode("",!0)],4))}}),Gs={class:"tide-seo-links"},Ms=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(n){const o=n;return(r,s)=>(e.openBlock(),e.createElementBlock("section",Gs,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(o.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.links,l=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:l.label},[e.createVNode(se,{class:e.normalizeClass([e.unref(t).UNDERLINE.REST.OFF]),href:l.url,target:l.isNewTab?e.unref(Y).BLANK:e.unref(Y).SELF},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.label),1)]),_:2},1032,["class","href","target"])],2))),128))],2)]))}}),xs=D(Ms,[["__scopeId","data-v-5cd4472f"]]),Hs={},zs=e.defineComponent({...Hs,__name:"TideSheet",props:e.mergeModels({isBackButton:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:e.mergeModels(["back"],["update:modelValue"]),setup(n,{emit:o}){const r=o,s=e.ref(null),l=e.useModel(n,"modelValue"),i=()=>{var f;(f=s.value)==null||f.showModal(),Be(!0)},a=()=>{var f;(f=s.value)==null||f.close(),Be(!1)},u=()=>{l.value=!1},d=()=>{u()},c=f=>{f.preventDefault(),u()};return e.watch(l,()=>{s.value&&(l.value?i():a())}),e.onBeforeMount(()=>{_e()}),e.onMounted(()=>{l.value&&i()}),e.onBeforeUnmount(()=>{l.value&&(l.value=!1,a())}),(f,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(me)}`},[e.createElementVNode("dialog",{class:e.normalizeClass(["tide-sheet",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"dialogElement",ref:s,onClick:e.withModifiers(d,["self"]),onClose:E[1]||(E[1]=e.withModifiers(()=>{},["prevent"])),onKeydown:e.withKeys(c,["escape"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).HEIGHT.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[e.createElementVNode("header",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).ISOLATION.ISOLATE,e.unref(t).PADDING.TOP.ONE,e.unref(t).PADDING.X.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).Z_INDEX.ONE])},[n.isBackButton?(e.openBlock(),e.createBlock(z,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:e.unref(S).CHEVRON_LEFT,priority:e.unref(V).QUATERNARY,onClick:E[0]||(E[0]=v=>r("back"))},null,8,["class","icon","priority"])):e.createCommentVNode("",!0),e.createVNode(z,{class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(S).CLOSE,priority:e.unref(V).QUATERNARY,onClick:u},null,8,["class","icon","priority"])],2),e.createVNode(Se),e.createElementVNode("div",{class:e.normalizeClass(["tide-sheet-content",e.unref(t).DISPLAY.GRID,e.unref(t).HEIGHT.FULL,e.unref(t).ISOLATION.ISOLATE,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).POSITION.RELATIVE,e.unref(t).WIDTH.FULL])},[e.renderSlot(f.$slots,"default",{},void 0,!0)],2)],2)],34)],8,["to"]))}}),Ys=D(zs,[["__scopeId","data-v-deeca97c"]]),Xs=["disabled"],Ws={},qs=e.defineComponent({...Ws,__name:"TideSwitch",props:e.mergeModels({disabled:{type:Boolean,default:!1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=n,r=e.useModel(n,"modelValue"),s=()=>{o.disabled||(r.value=!r.value)};return(l,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).FLEX.GROW.OFF,r.value?["active",e.unref(t).BG.SECONDARY]:[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.DEFAULT],n.disabled&&[e.unref(t).OPACITY.DISABLED]]),disabled:o.disabled,onClick:s,"aria-label":"Switch",type:"button"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,r.value?["active",e.unref(t).BG.SURFACE.DEFAULT]:[e.unref(t).BG.SECONDARY]])},[e.createVNode(y,{icon:e.unref(S).CHECK,size:e.unref(P).LARGE},null,8,["icon","size"])],2)],10,Xs))}}),$s=D(qs,[["__scopeId","data-v-d623c7da"]]),Ks={},Qs=e.defineComponent({...Ks,__name:"TideTabs",props:e.mergeModels({tabs:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const o=e.useModel(n,"modelValue"),r=s=>{o.value=s};return(s,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-tabs",e.unref(t).DISPLAY.FLEX,e.unref(t).BORDER.BOTTOM.TWO,e.unref(t).BORDER.COLOR.LOW])},[e.createVNode(Bt,{"is-floating":!0},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.tabs,(i,a)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass([e.unref(t).PADDING.X.HALF]),key:i.label},[e.createVNode(De,{class:e.normalizeClass([a===o.value?[e.unref(t).FONT.COLOR.SURFACE.BRAND]:[e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).PADDING.BOTTOM.ONE,e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF]),element:e.unref(B).BUTTON,label:i.label,subtle:!0,onClick:u=>r(a)},null,8,["class","element","label","onClick"]),e.createElementVNode("div",{class:e.normalizeClass(["rounded-border",e.unref(t).MARGIN.X.HALF,a===o.value&&[e.unref(t).BG.PRIMARY]])},null,2)],2))),128))]),_:1})],2))}}),Zs=D(Qs,[["__scopeId","data-v-92f91fcb"]]),gt=Symbol("tide-toaster"),pt={ACTIONABLE:1e4,INFORMATIONAL:5e3},Qt=()=>{const n=e.inject(gt);if(n)return n;const o=e.ref(null),r=e.ref([]),s=e.ref(0),l=c=>{s.value++,i(),r.value.push({...c,id:`tide-toast-${s.value}`}),typeof window<"u"&&(a(),u())},i=()=>{r.value=[]},a=()=>{o.value&&clearTimeout(o.value)},u=()=>{if(!r.value.length)return;const c=r.value[0].action?pt.ACTIONABLE:pt.INFORMATIONAL;o.value=setTimeout(i,c)},d={addToast:l,cancelAutoDismiss:a,clearToasts:i,startAutoDismiss:u,toasts:e.readonly(r)};return e.provide(gt,d),d},js={},Js=e.defineComponent({...js,__name:"TideToaster",setup(n){const{toasts:o,clearToasts:r,cancelAutoDismiss:s,startAutoDismiss:l}=Qt();return e.onBeforeMount(()=>{_e()}),(i,a)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(me)}`},[e.createElementVNode("div",{class:e.normalizeClass(["tide-toaster",e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,e.unref(t).POSITION.FIXED,e.unref(t).POSITIONING.LEFT,e.unref(t).POSITIONING.TOP,e.unref(t).WIDTH.FULL])},[e.createVNode(e.TransitionGroup,{name:"pop"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),u=>{var d,c;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-toast-wrap",e.unref(t).POINTER_EVENTS.ON,e.unref(t).POSITION.ABSOLUTE,e.unref(t).Z_INDEX.ONE,e.unref(t).POSITIONING.RIGHT,e.unref(t).POSITIONING.TOP,e.unref(t).MARGIN.FULL.ONE,e.unref(t).WIDTH.STRETCH]),key:u.id,onMouseenter:a[0]||(a[0]=(...f)=>e.unref(s)&&e.unref(s)(...f)),onMouseleave:a[1]||(a[1]=(...f)=>e.unref(l)&&e.unref(l)(...f))},[e.createVNode(St,{"cta-label":(d=u.action)==null?void 0:d.label,heading:u.heading,style:{"--tide-max-width":"none"},onClose:e.unref(r),onCtaClick:(c=u==null?void 0:u.action)==null?void 0:c.callback,"is-dismissible":"","is-toast":""},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.description),1)]),_:2},1032,["cta-label","heading","onClose","onCtaClick"])],34)}),128))]),_:1})],2)],8,["to"]))}}),el=D(Js,[["__scopeId","data-v-b1b65776"]]);exports.ALERT=G;exports.BADGE_COLOR=X;exports.BADGE_COLOR_DETAILS=Qe;exports.BADGE_TRUSTED=Ft;exports.BREAKPOINT=Vt;exports.CSS=t;exports.ELEMENT=B;exports.ELEMENT_BROAD=H;exports.FORMAT=qr;exports.FORMAT_REGEX=le;exports.ICON=S;exports.ICON_REALM=un;exports.INPUT_MODE=fe;exports.MEDIA=xo;exports.OBJECT_FIT=ae;exports.ORIENTATION=Ke;exports.PRIORITY=V;exports.REALM=je;exports.SIZE=P;exports.SIZE_BUTTON=Te;exports.SIZE_LOGO=Ie;exports.TARGET=Y;exports.TEXT_INPUT_TYPE=U;exports.TYPE_CARD=Ae;exports.TideAccordionItem=En;exports.TideAlert=St;exports.TideBadge=In;exports.TideBadgeTrustedPartner=gn;exports.TideBadgeVerifiedVehicle=hn;exports.TideBreadCrumbs=Bn;exports.TideButton=Pn;exports.TideButtonIcon=z;exports.TideButtonPagination=Dt;exports.TideButtonSave=Vn;exports.TideButtonSegmented=Hn;exports.TideCard=Xn;exports.TideCarousel=Bt;exports.TideChipAction=Qn;exports.TideChipFilter=Jn;exports.TideChipInput=nr;exports.TideColumns=cr;exports.TideDivider=Se;exports.TideForm=fr;exports.TideIcon=y;exports.TideImage=bt;exports.TideImageBackground=Tr;exports.TideIndicator=gr;exports.TideInputCheckbox=yr;exports.TideInputCheckboxDeprecated=_r;exports.TideInputRadio=xr;exports.TideInputRadioDeprecated=Wr;exports.TideInputSelect=ro;exports.TideInputSelectDeprecated=Oo;exports.TideInputText=No;exports.TideInputTextDeprecated=So;exports.TideInputTextarea=Po;exports.TideInputTextareaDeprecated=Vo;exports.TideLink=De;exports.TideMenuItem=Mo;exports.TideModal=Xo;exports.TidePagination=Wo;exports.TidePopover=Bs;exports.TideRating=ks;exports.TideRealmLogo=ws;exports.TideSeoLinks=xs;exports.TideSheet=Ys;exports.TideSwitch=$s;exports.TideTabs=Zs;exports.TideToaster=el;exports.VALIDATOR=$r;exports.provideTideConfig=mn;exports.useTideForm=Pt;exports.useTideToaster=Qt;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcudHMiLCIuLi9zcmMvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTGluay52dWUiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCYWRnZVZlcmlmaWVkVmVoaWNsZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnJlYWRDcnVtYnMudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJ1dHRvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2F2ZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2VnbWVudGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9DYXJkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwQWN0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwRmlsdGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVDaGlwSW5wdXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNvbHVtbnMudnVlIiwiLi4vc3JjL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUZvcm0udnVlIiwiLi4vc3JjL3R5cGVzL0ltYWdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZUJhY2tncm91bmQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUluZGljYXRvci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW8udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0UmFkaW9EZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9Gb3JtYXR0ZWQudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdC52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFNlbGVjdERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybXMudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHREZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHRhcmVhRGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTWVudUl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSYXRpbmcudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtTG9nby50cyIsIi4uL3NyYy91dGlsaXRpZXMvcmVhbG0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUmVhbG1Mb2dvLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTZW9MaW5rcy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2hlZXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVN3aXRjaC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlVGFicy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZVRvYXN0ZXIudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlVG9hc3Rlci52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE9SSUVOVEFUSU9OID0ge1xuICBIT1JJWk9OVEFMOiAnaG9yaXpvbnRhbCcsXG4gIFZFUlRJQ0FMOiAndmVydGljYWwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT3JpZW50YXRpb24gPSAodHlwZW9mIE9SSUVOVEFUSU9OKVtrZXlvZiB0eXBlb2YgT1JJRU5UQVRJT05dO1xuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5pbXBvcnQgdHlwZSB7IEJyZWFrcG9pbnQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuXG5leHBvcnQgY29uc3QgQ1NTID0ge1xuICB3aXRoQnJlYWtwb2ludDogKHV0aWxpdGllczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQpOiBzdHJpbmdbXSA9PiB7XG4gICAgcmV0dXJuIHV0aWxpdGllcy5tYXAoKHV0aWxpdHkpID0+IGAke2JyZWFrcG9pbnR9LSR7dXRpbGl0eX1gKTtcbiAgfSxcbiAgQUxJR046IHtcbiAgICBYOiB7XG4gICAgICBDRU5URVI6ICd0aWRlLXRleHQtY2VudGVyJyxcbiAgICAgIEpVU1RJRlk6ICd0aWRlLXRleHQtanVzdGlmeScsXG4gICAgICBMRUZUOiAndGlkZS10ZXh0LWxlZnQnLFxuICAgICAgUklHSFQ6ICd0aWRlLXRleHQtcmlnaHQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgSU5JVElBTDogJ3RpZGUtYWxpZ24taW5pdGlhbCcsXG4gICAgICBNSURETEU6ICd0aWRlLWFsaWduLW1pZGRsZScsXG4gICAgfSxcbiAgfSxcbiAgQVhJUzE6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMxLWFyb3VuZCcsXG4gICAgQkVUV0VFTjogJ3RpZGUtYXhpczEtYmV0d2VlbicsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMS1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczEtZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczEtc3RhcnQnLFxuICB9LFxuICBBWElTMjoge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczItYXJvdW5kJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMyLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMi1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMi1zdGFydCcsXG4gICAgU1RSRVRDSDogJ3RpZGUtYXhpczItc3RyZXRjaCcsXG4gIH0sXG4gIEJHOiB7XG4gICAgR0xPQkFMOiB7XG4gICAgICBQUklNQVJZOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1iZy1wcmltYXJ5LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYmctcHJpbWFyeS1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctcHJpbWFyeS1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYmctcHJpbWFyeS13YXJuaW5nJyxcbiAgICAgIH0sXG4gICAgICBTVVJGQUNFOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1iZy1zdXJmYWNlLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYmctc3VyZmFjZS1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VyZmFjZS1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtYmctc3VyZmFjZS13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1iZy1zdXJmYWNlLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYmctc3VyZmFjZS1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWJnLXN1cmZhY2UtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYmctc3VyZmFjZS1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJnLXN1cmZhY2UtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1iZy1zdXJmYWNlLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYmctc3VyZmFjZS1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1iZy1zdXJmYWNlLXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWJnLXN1cmZhY2UteWVsbG93JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBJTklUSUFMOiAndGlkZS1iZy1pbml0aWFsJyxcbiAgICBCTFVSOiAndGlkZS1iZy1ibHVyJyxcbiAgICBQUklNQVJZOiAndGlkZS1iZy1wcmltYXJ5JyxcbiAgICBTRUNPTkRBUlk6ICd0aWRlLWJnLXNlY29uZGFyeScsXG4gICAgU1VSRkFDRToge1xuICAgICAgQUNDRU5UOiAndGlkZS1iZy1zdXJmYWNlLWFjY2VudCcsXG4gICAgICBCUkFORDogJ3RpZGUtYmctc3VyZmFjZS1icmFuZCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1iZy1zdXJmYWNlJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1iZy1zdXJmYWNlLWZsb2F0aW5nJyxcbiAgICAgIEdSQURJRU5UOiAndGlkZS1iZy1zdXJmYWNlLWdyYWRpZW50JyxcbiAgICAgIElOVkVSU0U6ICd0aWRlLWJnLXN1cmZhY2UtaW52ZXJzZScsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBESVNBQkxFRDogJ3RpZGUtb3BhY2l0eS1kaXNhYmxlZCcsXG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBTVFJJS0VUSFJPVUdIOiB7XG4gICAgT0ZGOiAndGlkZS1zdHJpa2V0aHJvdWdoLW5vbmUnLFxuICAgIE9OOiAndGlkZS1zdHJpa2V0aHJvdWdoJyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyLW5vbmUnLFxuICAgIH0sXG4gICAgUkVTVDoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICB9LFxuICB9LFxuICBVU0VSX1NFTEVDVDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXVzZXItc2VsZWN0LWluaXRpYWwnLFxuICAgIE5PTkU6ICd0aWRlLXVzZXItc2VsZWN0LW5vbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgQVVUTzogJ3RpZGUtd2lkdGgtYXV0bycsXG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLXdpZHRoLTAnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLXdpZHRoLXN0cmV0Y2gnLFxuICAgIFpFUk86ICd0aWRlLXdpZHRoLTAnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBkaXZpZGVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWRpdmlkZXItLWRvY3MpIGZvciBUaWRlRGl2aWRlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgT1JJRU5UQVRJT04gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT3JpZW50YXRpb24gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgRGl2aWRlciBpcyBob3Jpem9udGFsIG9yIHZlcnRpY2FsICovXG4gICAgb3JpZW50YXRpb24/OiBPcmllbnRhdGlvbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9yaWVudGF0aW9uOiBPUklFTlRBVElPTi5IT1JJWk9OVEFMLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWRpdmlkZXInXVwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgIHByb3BzLm9yaWVudGF0aW9uID09PSBPUklFTlRBVElPTi5IT1JJWk9OVEFMXG4gICAgICAgICAgPyBbQ1NTLk1BUkdJTi5ZLkhBTEYsIENTUy5CT1JERVIuQk9UVE9NLk9ORSwgQ1NTLldJRFRILkZVTExdXG4gICAgICAgICAgOiBbQ1NTLk1BUkdJTi5YLkhBTEYsIENTUy5CT1JERVIuUklHSFQuT05FLCBDU1MuSEVJR0hULkZVTExdLFxuICAgICAgXVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1kaXZpZGVyIHtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFJFQUxNID0ge1xuICBBRVJPOiAnYWVybycsXG4gIEFUVjogJ2F0dicsXG4gIEJPQVRNQVJUOiAnYm9hdG1hcnQnLFxuICBDWUNMRTogJ2N5Y2xlJyxcbiAgRVFVSVBNRU5UOiAnZXF1aXBtZW50JyxcbiAgUFdDOiAncHdjJyxcbiAgUlY6ICdydicsXG4gIFNOT1c6ICdzbm93JyxcbiAgVFJVQ0s6ICd0cnVjaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZWFsbUtleSA9IGtleW9mIHR5cGVvZiBSRUFMTTtcbmV4cG9ydCB0eXBlIFJlYWxtID0gKHR5cGVvZiBSRUFMTSlbUmVhbG1LZXldO1xuIiwiZXhwb3J0IGNvbnN0IFNJWkUgPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcblxuZXhwb3J0IGNvbnN0IFNJWkVfQlVUVE9OID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplQnV0dG9uID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG4iLCJjb25zdCBjYXBpdGFsaXplRmlyc3QgPSAoc3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKTtcbn07XG5cbmNvbnN0IGZvcm1hdENhbWVsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC9eW1xcc18tXS8sICcnKVxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkLCBpbmRleCkgPT4gKGluZGV4ID09PSAwID8gd29yZCA6IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0S2ViYWJDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICctJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0TGFiZWwgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBsYWJlbE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBmYWxzZTogJ05vJyxcbiAgICB0cnVlOiAnWWVzJyxcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5oYXNPd24obGFiZWxNYXAsIHZhbHVlKSA/IGxhYmVsTWFwW3ZhbHVlXSA6IHZhbHVlO1xufTtcblxuY29uc3QgZm9ybWF0TnVtYmVyID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgaWYgKE51bWJlcihkaWdpdHMpKSB7XG4gICAgICBvdXRwdXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoTnVtYmVyKGRpZ2l0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQgPSAnMCc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBhc2NhbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGhvbmUgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gU3RyaW5nKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG4gIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuXG4gIHN3aXRjaCAoZGlnaXRzLmxlbmd0aCkge1xuICAgIGNhc2UgNzpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMsIDYpfS0ke2RpZ2l0cy5zbGljZSg2KX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMTpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAxKX0tJHtkaWdpdHMuc2xpY2UoMSwgNCl9LSR7ZGlnaXRzLnNsaWNlKDQsIDcpfS0ke2RpZ2l0cy5zbGljZSg3KX1gO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG91dHB1dCA9IGRpZ2l0cztcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFByaWNlID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAkJHtvdXRwdXR9YDtcbn07XG5cbmNvbnN0IGZvcm1hdFF1b3RlcyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIHZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmNvbnN0IGZvcm1hdFNlbnRlbmNlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IHNlbnRlbmNlQ2FzZSA9IGlucHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG93ZXJDYXNlID0gaW5wdXRcbiAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJyk7XG5cbiAgICBzZW50ZW5jZUNhc2UgPSBsb3dlckNhc2Uuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIGxvd2VyQ2FzZS5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBzZW50ZW5jZUNhc2U7XG59O1xuXG5jb25zdCBmb3JtYXRTbmFrZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJ18nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRUaXRsZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignICcpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFVybEZyb21Sb290ID0gKHVybDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybEZvcm1hdHRlZCA9IHVybC5zcGxpdCgnLmNvbS8nKTtcblxuICByZXR1cm4gdXJsRm9ybWF0dGVkLmxlbmd0aCA+IDEgPyBgLyR7dXJsRm9ybWF0dGVkWzFdfWAgOiB1cmw7XG59O1xuXG5jb25zdCBmb3JtYXRXZWlnaHQgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCR7b3V0cHV0fSBsYnNgO1xufTtcblxuY29uc3QgZ2V0QXJ0aWNsZSA9IChub3VuOiBzdHJpbmcsIGlzUGx1cmFsID0gZmFsc2UsIGlzRGVmaW5pdGUgPSBmYWxzZSkgPT4ge1xuICBjb25zdCB2b3dlbHMgPSBbJ2EnLCAnZScsICdpJywgJ28nLCAndSddO1xuICBjb25zdCBpc1Zvd2VsTGVhZGluZyA9IHZvd2Vscy5pbmNsdWRlcyhub3VuLmNoYXJBdCgwKSk7XG5cbiAgcmV0dXJuIGlzRGVmaW5pdGUgPyAndGhlJyA6IGlzUGx1cmFsID8gJ3NvbWUnIDogaXNWb3dlbExlYWRpbmcgPyAnYW4nIDogJ2EnO1xufTtcblxuY29uc3QgcHJpY2VUb051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmIChOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyQnLCAnJyk7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbn07XG5cbmNvbnN0IHVuZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0LnJlcGxhY2UoL1xcJC9nLCAnJykucmVwbGFjZSgvLC9nLCAnJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9YDtcbn07XG5cbmV4cG9ydCB7XG4gIGNhcGl0YWxpemVGaXJzdCxcbiAgZm9ybWF0Q2FtZWxDYXNlLFxuICBmb3JtYXRLZWJhYkNhc2UsXG4gIGZvcm1hdExhYmVsLFxuICBmb3JtYXROdW1iZXIsXG4gIGZvcm1hdFBhc2NhbENhc2UsXG4gIGZvcm1hdFBob25lLFxuICBmb3JtYXRQcmljZSxcbiAgZm9ybWF0UXVvdGVzLFxuICBmb3JtYXRTZW50ZW5jZUNhc2UsXG4gIGZvcm1hdFNuYWtlQ2FzZSxcbiAgZm9ybWF0VGl0bGVDYXNlLFxuICBmb3JtYXRVcmxGcm9tUm9vdCxcbiAgZm9ybWF0V2VpZ2h0LFxuICBnZXRBcnRpY2xlLFxuICBwcmljZVRvTnVtYmVyLFxuICB1bmZvcm1hdFByaWNlLFxufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGljb24gY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaWNvbi0tZG9jcykgZm9yIFRpZGVJY29uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEljb24gKi9cbiAgICBpY29uOiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgaWNvbiBkaW1lbnNpb25zICovXG4gICAgc2l6ZT86IFNpemU7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBzaXplOiBTSVpFLlNNQUxMLFxuICB9KTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaWNvbixcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gcHJvcHMuaWNvbjtcbiAgICAgIGNvbnN0IG5hbWUgPSBmb3JtYXRQYXNjYWxDYXNlKGlkKTtcbiAgICAgIGNvbnN0IFtwcmVmaXhdID0gaWQuc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IHJlYWxtRm9sZGVyID0gUkVBTE1bcHJlZml4Py50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBSRUFMTV07XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBUlJPV19VUDogJ2Fycm93LXVwJyxcbiAgQVNTSUdOTUVOVDogJ2Fzc2lnbm1lbnQnLFxuICBBVFRBQ0hfTU9ORVk6ICdhdHRhY2gtbW9uZXknLFxuICBBVVRPX1JFTkVXOiAnYXV0by1yZW5ldycsXG4gIEFXQVJEX1NUQVI6ICdhd2FyZC1zdGFyJyxcbiAgQkVEOiAnYmVkJyxcbiAgQk9MVDogJ2JvbHQnLFxuICBCT09LTUFSSzogJ2Jvb2ttYXJrJyxcbiAgQlVOS0hPVVNFOiAnYnVua2hvdXNlJyxcbiAgQ0FMQ1VMQVRFOiAnY2FsY3VsYXRlJyxcbiAgQ0FMRU5EQVJfTU9OVEg6ICdjYWxlbmRhci1tb250aCcsXG4gIENBTEw6ICdjYWxsJyxcbiAgQ0FMTF9RVUFMSVRZOiAnY2FsbC1xdWFsaXR5JyxcbiAgQ0FSX1JFTlRBTDogJ2Nhci1yZW50YWwnLFxuICBDSEVDSzogJ2NoZWNrJyxcbiAgQ0hFVlJPTl9MRUZUOiAnY2hldnJvbi1sZWZ0JyxcbiAgQ0hFVlJPTl9SSUdIVDogJ2NoZXZyb24tcmlnaHQnLFxuICBDTEVBUjogJ2NsZWFyJyxcbiAgQ0xPU0U6ICdjbG9zZScsXG4gIENPTlRSQUNUOiAnY29udHJhY3QnLFxuICBDUkFTSDogJ2NyYXNoJyxcbiAgREFTSEJPQVJEX0NVU1RPTUlaRTogJ2Rhc2hib2FyZC1jdXN0b21pemUnLFxuICBERUxFVEU6ICdkZWxldGUnLFxuICBESUFNT05EOiAnZGlhbW9uZCcsXG4gIERJUkVDVElPTlNfQk9BVDogJ2RpcmVjdGlvbnMtYm9hdCcsXG4gIERPTUFJTjogJ2RvbWFpbicsXG4gIERSQUZUOiAnZHJhZnQnLFxuICBFRElUOiAnZWRpdCcsXG4gIEVOR0lORTogJ2VuZ2luZScsXG4gIEVOR0lORUVSSU5HOiAnZW5naW5lZXJpbmcnLFxuICBFUlJPUjogJ2Vycm9yJyxcbiAgRVhQQU5EX0NPTlRFTlQ6ICdleHBhbmQtY29udGVudCcsXG4gIEVYUEFORF9MRVNTOiAnZXhwYW5kLWxlc3MnLFxuICBFWFBBTkRfTU9SRTogJ2V4cGFuZC1tb3JlJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIEZBVk9SSVRFOiAnZmF2b3JpdGUnLFxuICBGQVZPUklURV9GSUxMRUQ6ICdmYXZvcml0ZS1maWxsZWQnLFxuICBGTEFHOiAnZmxhZycsXG4gIEZPUk1BVF9CT0xEOiAnZm9ybWF0LWJvbGQnLFxuICBGT1JNQVRfSVRBTElDOiAnZm9ybWF0LWl0YWxpYycsXG4gIEZPUk1BVF9MSVNUX0JVTExFVEVEOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQnLFxuICBGT1JVTTogJ2ZvcnVtJyxcbiAgR0FTOiAnZ2FzJyxcbiAgR0FWRUw6ICdnYXZlbCcsXG4gIEdFQVJTOiAnZ2VhcnMnLFxuICBHTE9CRV9MT0NBVElPTl9QSU46ICdnbG9iZS1sb2NhdGlvbi1waW4nLFxuICBHT09HTEU6ICdnb29nbGUnLFxuICBHT09HTEVfUEFZOiAnZ29vZ2xlLXBheScsXG4gIEdSSUQ6ICdncmlkJyxcbiAgSEFORFNIQUtFOiAnaGFuZHNoYWtlJyxcbiAgSEFORFlNQU46ICdoYW5keW1hbicsXG4gIEhFSUdIVDogJ2hlaWdodCcsXG4gIEhFTFA6ICdoZWxwJyxcbiAgSU5GTzogJ2luZm8nLFxuICBJTkZPUk1BVElPTjogJ2luZm9ybWF0aW9uJyxcbiAgSU5TRVJUX1RFWFQ6ICdpbnNlcnQtdGV4dCcsXG4gIElOU1RBR1JBTTogJ2luc3RhZ3JhbScsXG4gIElPU19TSEFSRTogJ2lvcy1zaGFyZScsXG4gIExBWU9VVDogJ2xheW91dCcsXG4gIExFVkVMTElOR19KQUNLOiAnbGV2ZWxsaW5nLWphY2snLFxuICBMSU5LRURfSU46ICdsaW5rZWQgaW4nLFxuICBMT0NBTF9TSElQUElORzogJ2xvY2FsLXNoaXBwaW5nJyxcbiAgTE9DSzogJ2xvY2snLFxuICBNQUlMOiAnbWFpbCcsXG4gIE1FTlU6ICdtZW51JyxcbiAgTU9ORVlfQkFHOiAnbW9uZXktYmFnJyxcbiAgTU9SRV9IT1JJWjogJ21vcmUtaG9yaXonLFxuICBOT1RJRklDQVRJT05TOiAnbm90aWZpY2F0aW9ucycsXG4gIE9ET01FVEVSOiAnb2RvbWV0ZXInLFxuICBPUEVOX0lOX05FVzogJ29wZW4taW4tbmV3JyxcbiAgUEFMRVRURTogJ3BhbGV0dGUnLFxuICBQQVlQQUw6ICdwYXlwYWwnLFxuICBQRVJTT046ICdwZXJzb24nLFxuICBQRVJTT05fU0VBUkNIOiAncGVyc29uLXNlYXJjaCcsXG4gIFBIT1RPX0NBTUVSQTogJ3Bob3RvLWNhbWVyYScsXG4gIFBJTlRFUkVTVDogJ3BpbnRlcmVzdCcsXG4gIFBMQVlfQVJST1c6ICdwbGF5LWFycm93JyxcbiAgUE9MSUNZOiAncG9saWN5JyxcbiAgUE9XRVI6ICdwb3dlcicsXG4gIFBPV0VSX09GRjogJ3Bvd2VyLW9mZicsXG4gIFBSSU9SSVRZX0hJR0g6ICdwcmlvcml0eS1oaWdoJyxcbiAgUkVNT1ZFOiAncmVtb3ZlJyxcbiAgUkVRVUVTVF9RVU9URTogJ3JlcXVlc3QtcXVvdGUnLFxuICBSRVNFVF9XUkVOQ0g6ICdyZXNldC13cmVuY2gnLFxuICBST0FEOiAncm9hZCcsXG4gIFJPVU5ERURfQ09STkVSOiAncm91bmRlZC1jb3JuZXInLFxuICBSVUxFUjogJ3J1bGVyJyxcbiAgU0FJTElORzogJ3NhaWxpbmcnLFxuICBTQ0hPT0w6ICdzY2hvb2wnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUFUSU5HOiAnc2VhdGluZycsXG4gIFNFTEw6ICdzZWxsJyxcbiAgU0VOU09SUzogJ3NlbnNvcnMnLFxuICBTRVRUSU5HUzogJ3NldHRpbmdzJyxcbiAgU0hBUkU6ICdzaGFyZScsXG4gIFNISUVMRF9DSEVDSzogJ3NoaWVsZC1jaGVjaycsXG4gIFNIT1BQSU5HX0NBUlQ6ICdzaG9wcGluZy1jYXJ0JyxcbiAgU0xFRVBTOiAnc2xlZXBzJyxcbiAgU01TOiAnc21zJyxcbiAgU05PV0ZMQUtFOiAnc25vd2ZsYWtlJyxcbiAgU1RBUjogJ3N0YXInLFxuICBTVEFSX0ZJTExFRDogJ3N0YXItZmlsbGVkJyxcbiAgU1RBUl9IQUxGOiAnc3Rhci1oYWxmJyxcbiAgU1VNTUFSSVpFOiAnc3VtbWFyaXplJyxcbiAgU1dBUF9IT1JJWjogJ3N3YXAtaG9yaXonLFxuICBTV0FQX1ZFUlQ6ICdzd2FwLXZlcnQnLFxuICBUSFJFRV9EX1JPVEFUSU9OOiAndGhyZWUtZC1yb3RhdGlvbicsXG4gIFRIVU1CX1VQOiAndGh1bWItdXAnLFxuICBUUkVORElOR19ET1dOOiAndHJlbmRpbmctZG93bicsXG4gIFRST1BIWTogJ3Ryb3BoeScsXG4gIFRVTkU6ICd0dW5lJyxcbiAgVFdJVFRFUjogJ3R3aXR0ZXInLFxuICBVTUJSRUxMQTogJ3VtYnJlbGxhJyxcbiAgVkVSSUZJRUQ6ICd2ZXJpZmllZCcsXG4gIFZJREVPQ0FNOiAndmlkZW9jYW0nLFxuICBWSUVXX0lOX0FSOiAndmlldy1pbi1hcicsXG4gIFZJU0lCSUxJVFk6ICd2aXNpYmlsaXR5JyxcbiAgVk9MVU1FX09GRjogJ3ZvbHVtZS1vZmYnLFxuICBWT0xVTUVfT046ICd2b2x1bWUtb24nLFxuICBXQVJFSE9VU0U6ICd3YXJlaG91c2UnLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFdBVEVSOiAnd2F0ZXInLFxuICBXRUlHSFQ6ICd3ZWlnaHQnLFxuICBXSURUSDogJ3dpZHRoJyxcbiAgV09SS1NQQUNFX1BSRU1JVU06ICd3b3Jrc3BhY2UtcHJlbWl1bScsXG4gIFdSRU5DSDogJ3dyZW5jaCcsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBJQ09OX1JFQUxNID0ge1xuICBBVFY6IHtcbiAgICBBVFY6ICdhdHYtYXR2JyxcbiAgICBEVU5FX0JVR0dZOiAnYXR2LWR1bmUtYnVnZ3knLFxuICAgIEdPTEZfQ0FSVDogJ2F0di1nb2xmLWNhcnQnLFxuICAgIEdPX0tBUlQ6ICdhdHYtZ28ta2FydCcsXG4gICAgU0FORF9SQUlMOiAnYXR2LXNhbmQtcmFpbCcsXG4gICAgU0lERV9CWV9TSURFOiAnYXR2LXNpZGUtYnktc2lkZScsXG4gICAgVFJBSUxFUjogJ2F0di10cmFpbGVyJyxcbiAgfSxcbiAgQk9BVE1BUlQ6IHtcbiAgICBQV0M6ICdib2F0bWFydC1wd2MnLFxuICAgIFRSQUlMRVI6ICdib2F0bWFydC10cmFpbGVyJyxcbiAgfSxcbiAgQ1lDTEU6IHtcbiAgICBNT1RPUkNZQ0xFOiAnY3ljbGUtbW90b3JjeWNsZScsXG4gICAgVFJBSUxFUjogJ2N5Y2xlLXRyYWlsZXInLFxuICB9LFxuICBSVjoge1xuICAgIENMQVNTX0E6ICdydi1jbGFzcy1hJyxcbiAgICBDTEFTU19COiAncnYtY2xhc3MtYicsXG4gICAgQ0xBU1NfQzogJ3J2LWNsYXNzLWMnLFxuICAgIEZJRlRIX1dIRUVMOiAncnYtZmlmdGgtd2hlZWwnLFxuICAgIEZJU0hfSE9VU0U6ICdydi1maXNoLWhvdXNlJyxcbiAgICBQQVJLX01PREVMOiAncnYtcGFyay1tb2RlbCcsXG4gICAgUE9QX1VQX0NBTVBFUjogJ3J2LXBvcC11cC1jYW1wZXInLFxuICAgIFRSQVZFTF9UUkFJTEVSOiAncnYtdHJhdmVsLXRyYWlsZXInLFxuICAgIFRSVUNLX0NBTVBFUjogJ3J2LXRydWNrLWNhbXBlcicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG50eXBlIFJlYWxtS2V5c1dpdGhJY29ucyA9IEV4dHJhY3Q8UmVhbG1LZXksIGtleW9mIHR5cGVvZiBJQ09OX1JFQUxNPjtcbnR5cGUgUmVhbG1JY29uID0ge1xuICBbUmVhbG1LZXkgaW4gUmVhbG1LZXlzV2l0aEljb25zXTogKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1ba2V5b2YgKHR5cGVvZiBJQ09OX1JFQUxNKVtSZWFsbUtleV1dO1xufVtSZWFsbUtleXNXaXRoSWNvbnNdO1xuXG5leHBvcnQgdHlwZSBHbG9iYWxJY29uID0gKHR5cGVvZiBJQ09OKVtrZXlvZiB0eXBlb2YgSUNPTl07XG5leHBvcnQgdHlwZSBJY29uID0gR2xvYmFsSWNvbiB8IFJlYWxtSWNvbjtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGFjY29yZGlvbiBpdGVtIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyByZWxhdGluZyB0byBhY2NvcmRpb24gZHJvcGRvd25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYWNjb3JkaW9uaXRlbS0tZG9jcykgZm9yIFRpZGVBY2NvcmRpb25JdGVtXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBhY2NvcmRpb24gaXRlbSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaW5jbHVkZSBib3R0b20gZGl2aWRlciAqL1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIHRvcCBkaXZpZGVyICovXG4gICAgaGFzVG9wRGl2aWRlcj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgXCIob3B0aW9uYWwpXCIgaW5kaWNhdG9yIGFmdGVyIGxhYmVsICovXG4gICAgaXNPcHRpb25hbD86IGJvb2xlYW47XG5cbiAgICAvKiogVGhlIGxhYmVsIG9mIHRoZSBhY2NvcmRpb24gaXRlbSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaGFzQm90dG9tRGl2aWRlcjogZmFsc2UsXG4gICAgaGFzVG9wRGl2aWRlcjogZmFsc2UsXG4gICAgaXNPcHRpb25hbDogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGlzRXhwYW5kZWQgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlzRXhwYW5kZWQudmFsdWUgPSAhaXNFeHBhbmRlZC52YWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5kaXNhYmxlZCxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBpc0V4cGFuZGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24taXRlbSddXCI+XG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJoYXNUb3BEaXZpZGVyXCIgLz5cblxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLFxuICAgICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW10sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVRvZ2dsZUNsaWNrXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEYsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cImlzT3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKG9wdGlvbmFsKVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIGlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCcsIENTUy5ESVNQTEFZLkdSSURdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuT1ZFUkZMT1cuWS5ISURERU4sIENTUy5NQVJHSU4uWS5PTkUsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwiaGFzQm90dG9tRGl2aWRlclwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWNjb3JkaW9uLWl0ZW0ge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keSB7XG4gICAgdHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1yb3dzIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5leHBhbmRlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoMHB4LCAxZnIpO1xuICB9XG5cbiAgLnRpZGUtYWNjb3JkaW9uLWJvZHkuY29sbGFwc2VkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDBmcik7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfQlJPQUQgPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIERJVjogJ2RpdicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnQgPSAodHlwZW9mIEVMRU1FTlQpW2tleW9mIHR5cGVvZiBFTEVNRU5UXTtcbmV4cG9ydCB0eXBlIEVsZW1lbnRCcm9hZCA9ICh0eXBlb2YgRUxFTUVOVF9CUk9BRClba2V5b2YgdHlwZW9mIEVMRU1FTlRfQlJPQURdO1xuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAndnVlJztcblxudHlwZSBUaWRlQ29uZmlnID0ge1xuICBsaW5rQ29tcG9uZW50OiBDb21wb25lbnQgfCB0eXBlb2YgRUxFTUVOVC5MSU5LO1xufTtcblxuY29uc3QgdGlkZUNvbmZpZ0RlZmF1bHRzOiBUaWRlQ29uZmlnID0geyBsaW5rQ29tcG9uZW50OiBFTEVNRU5ULkxJTksgfTtcblxuY29uc3QgQ09ORklHX0tFWSA9IFN5bWJvbCgndGlkZS1jb25maWcnKTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVUaWRlQ29uZmlnID0gKGNvbmZpZzogUGFydGlhbDxUaWRlQ29uZmlnPiA9IHt9KSA9PiB7XG4gIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0czogVGlkZUNvbmZpZyA9IHsgLi4udGlkZUNvbmZpZ0RlZmF1bHRzLCAuLi5jb25maWcgfTtcblxuICBwcm92aWRlPFRpZGVDb25maWc+KENPTkZJR19LRVksIGNvbmZpZ1dpdGhEZWZhdWx0cyk7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZUNvbmZpZyA9ICgpID0+IHtcbiAgcmV0dXJuIGluamVjdDxUaWRlQ29uZmlnPihDT05GSUdfS0VZLCB0aWRlQ29uZmlnRGVmYXVsdHMpO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHVzZVRpZGVDb25maWcgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVDb25maWcnO1xuXG4gIGNvbnN0IHsgbGlua0NvbXBvbmVudCB9ID0gdXNlVGlkZUNvbmZpZygpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJsaW5rQ29tcG9uZW50XCI+XG4gICAgPHNsb3QgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgUFJJT1JJVFkgPSB7XG4gIFBSSU1BUlk6ICdwcmltYXJ5JyxcbiAgU0VDT05EQVJZOiAnc2Vjb25kYXJ5JyxcbiAgVEVSVElBUlk6ICd0ZXJ0aWFyeScsXG4gIFFVQVRFUk5BUlk6ICdxdWF0ZXJuYXJ5JyxcbiAgRkxPQVRJTkc6ICdmbG9hdGluZycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcmlvcml0eSA9ICh0eXBlb2YgUFJJT1JJVFkpW2tleW9mIHR5cGVvZiBQUklPUklUWV07XG4iLCJleHBvcnQgY29uc3QgVEFSR0VUID0ge1xuICBCTEFOSzogJ19ibGFuaycsXG4gIFNFTEY6IHVuZGVmaW5lZCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhcmdldCA9ICh0eXBlb2YgVEFSR0VUKVtrZXlvZiB0eXBlb2YgVEFSR0VUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgaWNvbiBidXR0b24gY29tcG9uZW50IHdpdGggdmFyaW91cyBzdHlsaW5nIG9wdGlvbnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25pY29uLS1kb2NzKSBmb3IgVGlkZUJ1dHRvbkljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBQcmlvcml0eSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgdHlwZSB7IEJ1dHRvblR5cGUgfSBmcm9tICdAL3R5cGVzL1R5cGUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5IChCdXR0b24gb25seSkgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIHNob3cgKi9cbiAgICBpY29uOiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB2aXN1YWwgcHJvbWluZW5jZSAqL1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG5cbiAgICAvKiogQXBwbGllcyB0eXBlIGF0dHJpYnV0ZSB0byBIVE1MIGVsZW1lbnQgKi9cbiAgICB0eXBlPzogQnV0dG9uVHlwZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5ULkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBwcmlvcml0eTogUFJJT1JJVFkuUFJJTUFSWSxcbiAgICB0eXBlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHR5cGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxzdHJpbmcgfCB1bmRlZmluZWQ+KCgpID0+XG4gICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBwcm9wcy50eXBlID8/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6YXJpYS1sYWJlbD1cImljb25cIlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICBgdGlkZS1idXR0b24tJHtwcmlvcml0eX1gLFxuICAgICAgZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgZGlzYWJsZWRcIlxuICAgIDpocmVmPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGhyZWYgPyBocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJpY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGxpbmsgZWxlbWVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWxpbmstLWRvY3MpIGZvciBUaWRlTGlua1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbiAoTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIFNpemUgb2YgdGhlIGljb25zICovXG4gICAgaWNvblNpemU/OiBTaXplO1xuXG4gICAgLyoqIEljb24gdG8gcmlnaHQgb2YgbGFiZWwgKi9cbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogTGluayB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBIaWRlcyB0aGUgdW5kZXJsaW5lIHVudGlsIGhvdmVyZWQsIGRlLWVtcGhhc2l6aW5nIHRoZSBsaW5rICovXG4gICAgc3VidGxlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uU2l6ZTogU0laRS5TTUFMTCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBzdWJ0bGU6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLlJJR0hULlFVQVJURVJdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkFMSUdOLlkuTUlERExFXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVJdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwiaWNvblNpemVcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGFsZXJ0IGNvbXBvbmVudCB3aXRoIGN1c3RvbWl6YWJsZSBjb250ZW50IGFuZCBiZWhhdmlvci5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWFsZXJ0LS1kb2NzKSBmb3IgVGlkZUFsZXJ0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDb21tZW50LCBjb21wdXRlZCwgdXNlU2xvdHMgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEFMRVJUIH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQ2FsbCBUbyBBY3Rpb24gdGhhdCByZW5kZXJzIGFzIGEgVGlkZUxpbms7IGNsaWNraW5nIGVtaXRzIGEgc2VwYXJhdGUgYGNsaWNrYCBldmVudCAqL1xuICAgIGN0YUxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIEhlYWRpbmcgdGV4dCAqL1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBBbGVydCBjYW4gYmUgY2xvc2VkIGJ5IHRoZSB1c2VyICovXG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBBbGVydCBpcyBhbiBvdmVybGF5IG9yIGRpc3BsYWNlcyBjb250ZW50ICovXG4gICAgaXNUb2FzdD86IGJvb2xlYW47XG5cbiAgICAvKiogQWxlcnQgdHlwZSAqL1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGV2ZW50OiAnY3RhQ2xpY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGN0YUxhYmVsOiB1bmRlZmluZWQsXG4gICAgaGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgaXNUb2FzdDogZmFsc2UsXG4gICAgdHlwZTogQUxFUlQuSU5GTyxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuICBjb25zdCBzbG90cyA9IHVzZVNsb3RzKCk7XG4gIGNvbnN0IGhhc0JvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZXMgPSBzbG90cy5kZWZhdWx0Py4oKTtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gbm9kZXMuc29tZShcbiAgICAgIChub2RlKSA9PiBub2RlLnR5cGUgIT09IENvbW1lbnQgJiYgKHR5cGVvZiBub2RlLmNoaWxkcmVuICE9PSAnc3RyaW5nJyB8fCBub2RlLmNoaWxkcmVuLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICk7XG4gIH0pO1xuXG4gIGNvbnN0IGljb25UeXBlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUikgcmV0dXJuIElDT04uUFJJT1JJVFlfSElHSDtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUykgcmV0dXJuIElDT04uQ0hFQ0s7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcpIHJldHVybiBJQ09OLldBUk5JTkc7XG4gICAgcmV0dXJuIElDT04uSU5GT1JNQVRJT047XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLnR5cGUsXG4gICAgICAndGlkZS1hbGVydCcsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUiwgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1JdIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5JTkZPLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5JTkZPXSA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTU1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuU1VDQ0VTUywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuU1VDQ0VTU11cbiAgICAgICAgOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkdcbiAgICAgICAgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLldBUk5JTkcsIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLldBUk5JTkddXG4gICAgICAgIDogJycsXG4gICAgICBwcm9wcy5pc1RvYXN0ID8gW0NTUy5CRy5TRUNPTkRBUlksIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSwgQ1NTLlNIQURPVy5CT1RUT01dIDogQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWxlcnQtaWNvbicsXG4gICAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5FUlJPUiAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLklORk8sXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLlNVQ0NFU1MsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULldBUk5JTkcgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLldBUk5JTkcsXG4gICAgICBdXCJcbiAgICAgIHYtaWY9XCIhcHJvcHMuaXNUb2FzdFwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiaWNvblR5cGVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYWxlcnQtaGVhZGluZycsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gICAgICAgICFoYXNCb2R5ID8gW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuTUFSR0lOLlJJR0hULkhBTEZdIDogJycsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERcIj57eyBwcm9wcy5oZWFkaW5nIH19PC9zcGFuPlxuXG4gICAgICA8VGlkZUxpbmtcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yXVwiXG4gICAgICAgIDplbGVtZW50PVwiRUxFTUVOVC5CVVRUT05cIlxuICAgICAgICA6bGFiZWw9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgIEBjbGljaz1cImVtaXQoJ2N0YUNsaWNrJylcIlxuICAgICAgICB2LWlmPVwicHJvcHMuY3RhTGFiZWwgJiYgIWhhc0JvZHlcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5ST0xFLkJPRFlfMiwgIXByb3BzLmlzVG9hc3QgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgPHNsb3QgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5UT1AuSEFMRl1cIlxuICAgICAgICB2LWlmPVwicHJvcHMuY3RhTGFiZWwgJiYgaGFzQm9keVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMl1cIlxuICAgICAgICAgIDplbGVtZW50PVwiRUxFTUVOVC5CVVRUT05cIlxuICAgICAgICAgIDpsYWJlbD1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdjdGFDbGljaycpXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYWxlcnQge1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAnaWNvbiBoZWFkaW5nIGNsb3NlJ1xuICAgICAgJy4gYm9keSAuJztcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gdmFyKC0tdGlkZS1zYWZlLWZyKSBhdXRvO1xuICAgIGdyaWQtY29sdW1uLWdhcDogdmFyKC0tdGlkZS1zcGFjaW5nLTFcXC8yKTtcbiAgICBtYXgtd2lkdGg6IHZhcigtLXRpZGUtbWF4LXdpZHRoLCA2NDBweCk7XG4gIH1cblxuICAudGlkZS1hbGVydC1pY29uIHtcbiAgICBncmlkLWFyZWE6IGljb247XG4gIH1cblxuICAudGlkZS1hbGVydC1oZWFkaW5nIHtcbiAgICBncmlkLWFyZWE6IGhlYWRpbmc7XG4gIH1cblxuICAudGlkZS1hbGVydC1jbG9zZSB7XG4gICAgZ3JpZC1hcmVhOiBjbG9zZTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWJvZHkge1xuICAgIGdyaWQtYXJlYTogYm9keTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SID0ge1xuICBCTEFDSzogJ2JsYWNrJyxcbiAgQkxVRTogJ2JsdWUnLFxuICBHUkVFTjogJ2dyZWVuJyxcbiAgTElNRTogJ2xpbWUnLFxuICBPUkFOR0U6ICdvcmFuZ2UnLFxuICBQVVJQTEU6ICdwdXJwbGUnLFxuICBSRUQ6ICdyZWQnLFxuICBTQUxNT046ICdzYWxtb24nLFxuICBURUFMOiAndGVhbCcsXG4gIFlFTExPVzogJ3llbGxvdycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1JfREVUQUlMUzogUmVjb3JkPFxuICBCYWRnZUNvbG9yLFxuICB7XG4gICAgYm9yZGVyQ29sb3I6IHN0cmluZztcbiAgICBpY29uQ29sb3I6IHN0cmluZztcbiAgfVxuPiA9IHtcbiAgW0JBREdFX0NPTE9SLkJMQUNLXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkhJR0gsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5CTFVFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5CTFVFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuQkxVRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkdSRUVOXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5HUkVFTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkdSRUVOLFxuICB9LFxuICBbQkFER0VfQ09MT1IuTElNRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuTElNRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkxJTUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5PUkFOR0VdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLk9SQU5HRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLk9SQU5HRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlBVUlBMRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUFVSUExFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUFVSUExFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUkVEXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5SRUQsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5SRUQsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5TQUxNT05dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlNBTE1PTixcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlNBTE1PTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlRFQUxdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlRFQUwsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5URUFMLFxuICB9LFxuICBbQkFER0VfQ09MT1IuWUVMTE9XXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5ZRUxMT1csXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5ZRUxMT1csXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU18yMDogJzIwJyxcbiAgWUVBUlNfMjU6ICcyNScsXG4gIFlFQVJTXzMwOiAnMzAnLFxuICBZRUFSU18zNTogJzM1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2VDb2xvciA9ICh0eXBlb2YgQkFER0VfQ09MT1IpW2tleW9mIHR5cGVvZiBCQURHRV9DT0xPUl07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBiYWRnZSBjb21wb25lbnQgd2l0aCBjdXN0b21pemFibGUgY29udGVudCBhbmQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZS0tZG9jcykgZm9yIFRpZGVCYWRnZVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9DT0xPUl9ERVRBSUxTIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlQ29sb3IgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoaWNoIGNvbG9yIG9wdGlvbiB0byBhZG9wdCAoaWYgYW55KSAqL1xuICAgIGNvbG9yPzogQmFkZ2VDb2xvcjtcblxuICAgIC8qKiBJY29uIHRvIGxlZnQgb2YgbGFiZWwgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIFwiRmxvYXRpbmdcIiB2YXJpYW50IHN0eWxlcyAqL1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqIEJhZGdlIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY29sb3I6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZScsXG4gICAgICBwcm9wcy5pc0Zsb2F0aW5nIHx8IHByb3BzLmNvbG9yID8gW0NTUy5CRy5TVVJGQUNFLkZMT0FUSU5HLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBbQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgcHJvcHMuY29sb3IgJiYgW0NTUy5CT1JERVIuTEVGVC5UV08sIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmJvcmRlckNvbG9yXSxcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRiwgcHJvcHMuY29sb3IgJiYgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uaWNvbkNvbG9yXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdHJ1c3RlZCBwYXJ0bmVyIGJhZGdlIGNvbXBvbmVudCB3aXRoIHByZXNldCB5ZWFycy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdldHJ1c3RlZHBhcnRuZXItLWRvY3MpIGZvciBUaWRlQmFkZ2VUcnVzdGVkUGFydG5lclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9UUlVTVEVEIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCYWRnZVRydXN0ZWRZZWFycyB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIE51bWJlciBvZiB5ZWFycyB0byBkaXNwbGF5IGluIHRoZSB0cnVzdGVkIHBhcnRuZXIgYmFkZ2UgKi9cbiAgICB5ZWFycz86IEJhZGdlVHJ1c3RlZFllYXJzO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgeWVhcnM6IEJBREdFX1RSVVNURUQuWUVBUlNfNSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdHJ1c3RlZC1wYXJ0bmVyJyxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkQsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5BV0FSRF9TVEFSXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlxuICAgICAgPHNwYW4+e3sgcHJvcHMueWVhcnMgfX0geWVhciB0cnVzdGVkIHBhcnRuZXI8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBiYWRnZSBjb21wb25lbnQgZm9yIGluZGljYXRpbmcgYSB2ZXJpZmllZCB2ZWhpY2xlLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2V2ZXJpZmllZHZlaGljbGUtLWRvY3MpIGZvciBUaWRlQmFkZ2VWZXJpZmllZFZlaGljbGVcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS12ZXJpZmllZC12ZWhpY2xlJyxcbiAgICAgIENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlksXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uVkVSSUZJRURcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlZlcmlmaWVkIHZlaGljbGU8L3NwYW4+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtaW5mby1wcmltYXJ5KTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2V0IG9mIGJyZWFkY3J1bWJzIGZvciBuYXZpZ2F0aW9uIHB1cnBvc2VzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnJlYWRjcnVtYnMtLWRvY3MpIGZvciBUaWRlQnJlYWRDcnVtYnNcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBCcmVhZENydW1iIH0gZnJvbSAnQC90eXBlcy9CcmVhZENydW1iJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBBbiBhcnJheSBvZiBsYWJlbHMgYW5kIG9wdGlvbmFsIFVSTHMgdG8gZGlzcGxheSBmb3IgZWFjaCBicmVhZCBjcnVtYi4gKi9cbiAgICBicmVhZENydW1iczogQnJlYWRDcnVtYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYnJlYWRDcnVtYnM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8dWwgOmNsYXNzPVwiWyd0aWRlLWJyZWFkLWNydW1icycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgPHRlbXBsYXRlXG4gICAgICA6a2V5PVwiY3J1bWIubGFiZWxcIlxuICAgICAgdi1mb3I9XCIoY3J1bWIsIGluZGV4KSBpbiBwcm9wcy5icmVhZENydW1ic1wiXG4gICAgPlxuICAgICAgPGxpIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIj5cbiAgICAgICAgPEludGVybmFsQmFzZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgOmhyZWY9XCJjcnVtYi51cmxcIlxuICAgICAgICAgIHYtaWY9XCJjcnVtYi51cmxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICB2LWVsc2VcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSB2LWlmPVwicHJvcHMuYnJlYWRDcnVtYnMgJiYgaW5kZXggPCBwcm9wcy5icmVhZENydW1icy5sZW5ndGggLSAxXCI+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5BUlJPV19SSUdIVFwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC91bD5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJ1dHRvbiBjb21wb25lbnQgd2l0aCB2YXJpb3VzIHN0eWxpbmcgb3B0aW9ucy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbi0tZG9jcykgZm9yIFRpZGVCdXR0b25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFLCBTSVpFX0JVVFRPTiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHR5cGUgeyBTaXplQnV0dG9uIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBCdXR0b25UeXBlIH0gZnJvbSAnQC90eXBlcy9UeXBlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIGNsaWNrYWJpbGl0eSAoQnV0dG9uIG9ubHkpICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gb3BlbiAoTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogSWNvbiB0byBsZWZ0IG9mIGxhYmVsICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIEljb24gdG8gcmlnaHQgb2YgbGFiZWwgKi9cbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byB0YXJnZXQgYSBuZXcgYnJvd3NlciB0YWIgKExpbmsgb25seSkgKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogQnV0dG9uIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdmlzdWFsIHByb21pbmVuY2UgKi9cbiAgICBwcmlvcml0eT86IEV4Y2x1ZGU8UHJpb3JpdHksIHR5cGVvZiBQUklPUklUWS5GTE9BVElORz47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyByZW5kZXJlZCBzaXplICovXG4gICAgc2l6ZT86IFNpemVCdXR0b247XG5cbiAgICAvKiogQXBwbGllcyB0eXBlIGF0dHJpYnV0ZSB0byBIVE1MIGVsZW1lbnQgKi9cbiAgICB0eXBlPzogQnV0dG9uVHlwZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5ULkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBwcmlvcml0eTogUFJJT1JJVFkuUFJJTUFSWSxcbiAgICBzaXplOiBTSVpFX0JVVFRPTi5MQVJHRSxcbiAgICB0eXBlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHR5cGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxzdHJpbmcgfCB1bmRlZmluZWQ+KCgpID0+XG4gICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBwcm9wcy50eXBlID8/IEVMRU1FTlQuQlVUVE9OIDogdW5kZWZpbmVkXG4gICk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24nLFxuICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuWC5UV08sXG4gICAgICBgdGlkZS1idXR0b24tJHtwcmlvcml0eX1gLFxuICAgICAgZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gW0NTUy5ESVNQTEFZLklOTElORV9GTEVYLCBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXSA6IFtDU1MuRElTUExBWS5GTEVYXSxcbiAgICAgIHNpemUgPT09IFNJWkVfQlVUVE9OLlNNQUxMXG4gICAgICAgID8gW0NTUy5GT05ULlJPTEUuQlVUVE9OXzIsIENTUy5QQURESU5HLlkuSEFMRl1cbiAgICAgICAgOiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSwgQ1NTLlBBRERJTkcuWS5PTkVdLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OICYmIGRpc2FibGVkXCJcbiAgICA6aHJlZj1cImVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBocmVmID8gaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnRhcmdldD1cImVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyAmJiBpc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cInR5cGVBdHRyaWJ1dGVcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAge3sgbGFiZWwgfX1cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmljb249XCJpY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSA/IFNJWkUuTEFSR0UgOiBTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYnV0dG9uIGNvbXBvbmVudCBmb3IgdXNlIGluIHBhZ2luYXRpb24gcHVycG9zZXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25wYWdpbmF0aW9uLS1kb2NzKSBmb3IgVGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5ULCBFTEVNRU5UX0JST0FEIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudEJyb2FkIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBQYWdpbmF0aW9uIEJ1dHRvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRpc3BsYXllZCBwYWdlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIEhUTUwgdGFnIHR5cGUgKi9cbiAgICBlbGVtZW50PzogRWxlbWVudEJyb2FkO1xuXG4gICAgLyoqIFVSTCB0byBvcGVuPGJyIC8+KExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX0JST0FELkJVVFRPTixcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBDU1MuUEFERElORy5GVUxMLkhBTEZdLFxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkRJViA/IFtDU1MuQ1VSU09SLlBPSU5URVJdIDogJycsXG4gICAgICBbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8zXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVF9CUk9BRC5CVVRUT04gPyBFTEVNRU5UX0JST0FELkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYnV0dG9uIGNvbXBvbmVudCBmb3IgdXNlIHRvIHNhdmUgaXRlbXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVidXR0b25zYXZlLS1kb2NzKSBmb3IgVGlkZUJ1dHRvblNhdmVcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBjb25zdCBpc1RvdWNoZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1NhdmVkID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICB3YXRjaChcbiAgICBpc1NhdmVkLFxuICAgICgpID0+IHtcbiAgICAgIGlmICghaXNUb3VjaGVkLnZhbHVlKSBpc1RvdWNoZWQudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IGZhbHNlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtYnV0dG9uLXNhdmUnLCBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsIGlzU2F2ZWQgJiYgJ3NhdmVkJ11cIlxuICAgIEBjbGljaz1cImlzU2F2ZWQgPSAhaXNTYXZlZFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8ZGl2IDpjbGFzcz1cIlsnaGVhcnQtY29udGFpbmVyJywgQ1NTLkRJU1BMQVkuRkxFWCwgaXNTYXZlZCAmJiBpc1RvdWNoZWQgJiYgJ2FuaW1hdGUtaGVhcnRiZWF0J11cIj5cbiAgICAgIDxzdmdcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWJ1dHRvbi1zYXZlLWljb24nLCBDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICB3aWR0aD1cIjMyXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgOmNsYXNzPVwiWydoZWFydC1maWxsZWQnLCBpc1NhdmVkID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVEIDogJ2ZpbGxlZC10cmFuc3BhcmVudCddXCJcbiAgICAgICAgICBkPVwibTEyIDIxLTEuNDUtMS4zYy0xLjY4MzMtMS41MTY3LTMuMDc1LTIuODI1LTQuMTc1LTMuOTI1LTEuMS0xLjEtMS45NzUtMi4wODc1LTIuNjI1LTIuOTYyNS0uNjUtLjg3NS0xLjEwNDItMS42NzkyLTEuMzYyNS0yLjQxMjVDMi4xMjkyIDkuNjY2NyAyIDguOTE2NyAyIDguMTVjMC0xLjU2NjcuNTI1LTIuODc1IDEuNTc1LTMuOTI1QzQuNjI1IDMuMTc1IDUuOTMzMyAyLjY1IDcuNSAyLjY1Yy44NjY3IDAgMS42OTE3LjE4MzMgMi40NzUuNTUuNzgzMy4zNjY3IDEuNDU4My44ODMzIDIuMDI1IDEuNTUuNTY2Ny0uNjY2NyAxLjI0MTctMS4xODMzIDIuMDI1LTEuNTUuNzgzMy0uMzY2NyAxLjYwODMtLjU1IDIuNDc1LS41NSAxLjU2NjcgMCAyLjg3NS41MjUgMy45MjUgMS41NzVDMjEuNDc1IDUuMjc1IDIyIDYuNTgzMyAyMiA4LjE1YzAgLjc2NjctLjEyOTIgMS41MTY3LS4zODc1IDIuMjUtLjI1ODMuNzMzMy0uNzEyNSAxLjUzNzUtMS4zNjI1IDIuNDEyNXMtMS41MjUgMS44NjI1LTIuNjI1IDIuOTYyNWMtMS4xIDEuMS0yLjQ5MTcgMi40MDgzLTQuMTc1IDMuOTI1TDEyIDIxWlwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICA6Y2xhc3M9XCJbJ2hlYXJ0LW91dGxpbmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0VdXCJcbiAgICAgICAgICBkPVwibTEyIDIxLTEuNDUtMS4zYy0xLjY4MzMtMS41MTY3LTMuMDc1LTIuODI1LTQuMTc1LTMuOTI1LTEuMS0xLjEtMS45NzUtMi4wODc1LTIuNjI1LTIuOTYyNS0uNjUtLjg3NS0xLjEwNDItMS42NzkyLTEuMzYyNS0yLjQxMjVDMi4xMjkyIDkuNjY2NyAyIDguOTE2NyAyIDguMTVjMC0xLjU2NjcuNTI1LTIuODc1IDEuNTc1LTMuOTI1QzQuNjI1IDMuMTc1IDUuOTMzMyAyLjY1IDcuNSAyLjY1Yy44NjY3IDAgMS42OTE3LjE4MzMgMi40NzUuNTUuNzgzMy4zNjY3IDEuNDU4My44ODMzIDIuMDI1IDEuNTUuNTY2Ny0uNjY2NyAxLjI0MTctMS4xODMzIDIuMDI1LTEuNTUuNzgzMy0uMzY2NyAxLjYwODMtLjU1IDIuNDc1LS41NSAxLjU2NjcgMCAyLjg3NS41MjUgMy45MjUgMS41NzVDMjEuNDc1IDUuMjc1IDIyIDYuNTgzMyAyMiA4LjE1YzAgLjc2NjctLjEyOTIgMS41MTY3LS4zODc1IDIuMjUtLjI1ODMuNzMzMy0uNzEyNSAxLjUzNzUtMS4zNjI1IDIuNDEyNXMtMS41MjUgMS44NjI1LTIuNjI1IDIuOTYyNWMtMS4xIDEuMS0yLjQ5MTcgMi40MDgzLTQuMTc1IDMuOTI1TDEyIDIxWm0wLTIuN2MxLjYtMS40MzMzIDIuOTE2Ny0yLjY2MjUgMy45NS0zLjY4NzVzMS44NS0xLjkxNjcgMi40NS0yLjY3NWMuNi0uNzU4MyAxLjAxNjctMS40MzMzIDEuMjUtMi4wMjUuMjMzMy0uNTkxNy4zNS0xLjE3OTIuMzUtMS43NjI1IDAtMS0uMzMzMy0xLjgzMzMtMS0yLjUtLjY2NjctLjY2NjctMS41LTEtMi41LTEtLjc4MzMgMC0xLjUwODMuMjIwOC0yLjE3NS42NjI1QzEzLjY1ODMgNS43NTQyIDEzLjIgNi4zMTY3IDEyLjk1IDdoLTEuOWMtLjI1LS42ODMzLS43MDgzLTEuMjQ1OC0xLjM3NS0xLjY4NzVTOC4yODMzIDQuNjUgNy41IDQuNjVjLTEgMC0xLjgzMzMuMzMzMy0yLjUgMS0uNjY2Ny42NjY3LTEgMS41LTEgMi41IDAgLjU4MzMuMTE2NyAxLjE3MDguMzUgMS43NjI1LjIzMzMuNTkxNy42NSAxLjI2NjcgMS4yNSAyLjAyNXMxLjQxNjcgMS42NSAyLjQ1IDIuNjc1UzEwLjQgMTYuODY2NyAxMiAxOC4zWlwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAuaGVhcnQtY29udGFpbmVyIHtcbiAgICAtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdDogOWRlZztcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4zKSk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1kdXJhdGlvbi0zMDApIHZhcigtLXRpZGUtZWFzaW5nLWVhc2Utb3V0KTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIHNjYWxlO1xuICAgIHJvdGF0ZTogMGRlZztcbiAgfVxuXG4gIC5oZWFydC1jb250YWluZXIuYW5pbWF0ZS1oZWFydGJlYXQge1xuICAgIGFuaW1hdGlvbjogaGVhcnRCZWF0IHZhcigtLXRpZGUtZHVyYXRpb24tMTUwKTtcbiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiBhbHRlcm5hdGU7XG4gICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogNDtcbiAgfVxuXG4gIC5oZWFydC1jb250YWluZXI6YWN0aXZlIHtcbiAgICBzY2FsZTogMC45O1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRpZGUtZHVyYXRpb24tNzUpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNhdmUtaWNvbiB7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICB9XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAuaGVhcnQtY29udGFpbmVyIHtcbiAgICAgIC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0OiAwZGVnO1xuICAgIH1cblxuICAgIC50aWRlLWJ1dHRvbi1zYXZlOndoZXJlKDpob3ZlciwgOmZvY3VzLXZpc2libGUpIC5oZWFydC1jb250YWluZXIge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOWRlZyk7XG4gICAgfVxuICB9XG5cbiAgLmhlYXJ0LWZpbGxlZCB7XG4gICAgc2NhbGU6IDAuOTg1OyAvKiBhdm9pZCBoYWlybGluZSBib3JkZXIgcmVuZGVyIGlzc3VlICovXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRpZGUtZHVyYXRpb24tNzUpIHZhcigtLXRpZGUtZWFzaW5nLWxpbmVhcik7XG4gIH1cblxuICAuZmlsbGVkLXRyYW5zcGFyZW50IHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICB9XG5cbiAgQGtleWZyYW1lcyBoZWFydEJlYXQge1xuICAgIGZyb20ge1xuICAgICAgc2NhbGU6IDE7XG4gICAgICByb3RhdGU6IDBkZWc7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgIHNjYWxlOiAxLjI1O1xuICAgICAgcm90YXRlOiB2YXIoLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2VnbWVudGVkIGJ1dHRvbiBjb21wb25lbnQgZm9yIG5hdmlnYXRpb24gcHVycG9zZXMuXG4gICAqXG4gICAqIFBvd2VyZWQgYnkgbmF0aXZlIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB1bmRlciB0aGUgaG9vZCBmb3IgZW5oYW5jZWQgYWNjZXNzaWJpbGl0eS5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbnNlZ21lbnRlZC0tZG9jcykgZm9yIFRpZGVCdXR0b25TZWdtZW50ZWRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCB1c2VJZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFNldHMgbGFiZWwgYW5kIGNhbGxiYWNrIGZvciBlYWNoIHRhYiAqL1xuICAgIHRhYnM6IFRhYltdIHwgcmVhZG9ubHkgVGFiW107XG5cbiAgICAvKiogT3B0cyBpbiBhcyBhIG5hdGl2ZSBIVE1MIGZvcm0gZmllbGQgd2l0aCB0aGlzIG5hbWUuICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB1bmlxdWVJZCA9IHVzZUlkKCk7XG5cbiAgY29uc3QgaW5wdXRGb3JtQXR0cmlidXRlID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLm5hbWUgPyB1bmRlZmluZWQgOiAnbm9uZScpKTtcbiAgY29uc3QgaW5wdXROYW1lQXR0cmlidXRlID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMubmFtZSA/PyB1bmlxdWVJZCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkFVVE8sXG4gICAgICBDU1MuUEFERElORy5GVUxMLlFVQVJURVIsXG4gICAgXVwiXG4gICAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiJyxcbiAgICAgICAgaW5kZXggPT09IGN1cnJlbnRJbmRleFxuICAgICAgICAgID8gW0NTUy5CRy5TVVJGQUNFLkRFRkFVTFQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLlNIQURPVy5CT1RUT01dXG4gICAgICAgICAgOiBbJ2luYWN0aXZlJywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQlVUVE9OXzEsXG4gICAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgICAgQ1NTLldJRFRILkFVVE8sXG4gICAgICBdXCJcbiAgICAgIDpkYXRhLXRyYWNrPVwidGFiLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiB0YWJzXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmNoZWNrZWQ9XCJpbmRleCA9PT0gY3VycmVudEluZGV4XCJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgICAgOmZvcm09XCJpbnB1dEZvcm1BdHRyaWJ1dGVcIlxuICAgICAgICA6bmFtZT1cImlucHV0TmFtZUF0dHJpYnV0ZVwiXG4gICAgICAgIDp2YWx1ZT1cImluZGV4XCJcbiAgICAgICAgQGNoYW5nZT1cImN1cnJlbnRJbmRleCA9IGluZGV4XCJcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24tc2VnbWVudGVkIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQ6aGFzKDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgfVxuXG4gIC5pbmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjYXJkIGNvbXBvbmVudCB3aXRoIGEgaGVhZGluZywgZGVzY3JpcHRpb24sIGFuZCBvcHRpb25hbCBpY29uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2FyZC0tZG9jcykgZm9yIFRpZGVDYXJkXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBUWVBFX0NBUkQgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgeyBFTEVNRU5UX0JST0FEIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IENhcmRUeXBlIH0gZnJvbSAnQC90eXBlcy9DYXJkJztcbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50QnJvYWQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIHRleHQgZGlzcGxheWVkIGJlbG93IHRoZSBoZWFkaW5nICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIG1haW4gaGVhZGluZyBvZiB0aGUgY2FyZC4gKi9cbiAgICBoZWFkaW5nOiBzdHJpbmc7XG5cbiAgICAvKiogT3B0aW9uYWwgaWNvbiBkaXNwbGF5ZWQgb24gdGhlIGNhcmQuICovXG4gICAgaWNvbj86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBDYXJkIGlzIHNlbGVjdGVkIChmb3Igc2VsZWN0YWJsZSBjYXJkcykuICovXG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIFR5cGUgb2YgdGhlIGNhcmQgKi9cbiAgICB0eXBlPzogQ2FyZFR5cGU7XG5cbiAgICAvKiogVVJMIHRvIG5hdmlnYXRlIHRvIG9uIGNsaWNrLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZDxFbGVtZW50QnJvYWQgfCB0eXBlb2YgSW50ZXJuYWxCYXNlTGluaz4oKCkgPT5cbiAgICBwcm9wcy5ocmVmID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLnR5cGUgPT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMID8gRUxFTUVOVF9CUk9BRC5ESVYgOiBFTEVNRU5UX0JST0FELkJVVFRPTlxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcmQnLFxuICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICB0eXBlICE9PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCAmJiAnaG92ZXJhYmxlJyxcbiAgICAgIHR5cGUgPT09IFRZUEVfQ0FSRC5TRUxFQ1RBQkxFICYmIHNlbGVjdGVkICYmICdzZWxlY3RlZCcsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dHlwZT1cInJvb3RFbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiA/IEVMRU1FTlRfQlJPQUQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5BWElTMi5TVEFSVCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IGhlYWRpbmcgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2FyZC5ob3ZlcmFibGU6bm90KC5zZWxlY3RlZCk6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItcmVzdCk7XG4gIH1cbiAgLnRpZGUtY2FyZC5zZWxlY3RlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjYXJvdXNlbCBjb21wb25lbnQgd2l0aCBuYXZpZ2F0aW9uIGNvbnRyb2xzIGFuZCBzbGlkZSBpbmRpY2F0b3JzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2Fyb3VzZWwtLWRvY3MpIGZvciBUaWRlQ2Fyb3VzZWxcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgaW5kaWNhdG9yIGRvdHMgb3ZlcmxheTxiciAvPihPbmx5IHZhbGlkIHdpdGggZnVsbCB3aWR0aCBjYXJkcykgKi9cbiAgICBoYXNEb3RzPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBvbi1wYWdlIG9yIGZsb2F0aW5nIGNhcm91c2VsICovXG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBmb250IHJvbGUgdXNlZCBmb3IgdGl0bGUgZGlzcGxheSAqL1xuICAgIGlzSGVhZGxpbmUxPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgb24tcGFnZSBidXR0b25zIHNob3VsZCBiZSBoaWRkZW4gdW50aWwgaG92ZXIgKi9cbiAgICBpc0hpZGVhd2F5QnV0dG9ucz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNjcm9sbCBieSBwYWdlIG9yIGJ5IGluZGl2aWR1YWwgc2xpZGUgKi9cbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgbWF4IG51bWJlciBvZiBpbmRpY2F0b3IgZG90cyB0byBkaXNwbGF5IGF0IGEgZ2l2ZW4gdGltZSAqL1xuICAgIG1heERvdHM/OiBudW1iZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdGV4dCBkaXNwbGF5ZWQgdG8gdGhlIHJpZ2h0IG9mIHRoZSB0aXRsZSAqL1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHRpdGxlIHRleHQgZGlzcGxheWVkIGFib3ZlIHRoZSBjYXJvdXNlbCAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGFzRG90czogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGVhZGxpbmUxOiBmYWxzZSxcbiAgICBpc0hpZGVhd2F5QnV0dG9uczogdHJ1ZSxcbiAgICBpc1Njcm9sbEJ5UGFnZTogdHJ1ZSxcbiAgICBtYXhEb3RzOiA1LFxuICAgIHN1YnRpdGxlOiB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdzbGlkZXNBZGRlZFRvVmlldycsIHNsaWRlc0luVmlldzogbnVtYmVyW10pOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBjYXJvdXNlbFJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSByZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY29udGVudFdpZHRoID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGN1cnJlbnRQYWdlSW5kZXggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgZG90c1JlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBmcmFtZVdpZHRoID0gcmVmPG51bWJlcj4oMCk7XG4gIGNvbnN0IGlzRmlyc3RTbGlkZSA9IHJlZjxib29sZWFuPih0cnVlKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZjxib29sZWFuPih0cnVlKTtcbiAgY29uc3Qgc2xpZGVPYnNlcnZlciA9IHJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzbGlkZXMgPSByZWY8SFRNTEVsZW1lbnRbXT4oW10pO1xuICBjb25zdCBzbGlkZXNJblZpZXcgPSByZWY8bnVtYmVyW10+KFtdKTtcbiAgY29uc3Qgc2xvdE9ic2VydmVyID0gcmVmPE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdG91Y2hTdGFydCA9IHJlZjxUb3VjaCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3Q291bnQgPSByZWY8bnVtYmVyPigxKTtcblxuICBjb25zdCBjdXJyZW50UGFnZSA9IGNvbXB1dGVkKCgpID0+IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxKTtcbiAgY29uc3QgZG90Q29udGFpbmVyV2lkdGggPSBjb21wdXRlZCgoKSA9PiBkb3RDb3VudFZpc2libGUudmFsdWUgKiBkb3RXaWR0aCArIChkb3RDb3VudFZpc2libGUudmFsdWUgLSAxKSAqIGRvdEdhcCk7XG4gIGNvbnN0IGRvdENvdW50VmlzaWJsZSA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5tYXhEb3RzID4gdG90YWxQYWdlcy52YWx1ZSA/IHRvdGFsUGFnZXMudmFsdWUgOiBwcm9wcy5tYXhEb3RzKSk7XG4gIGNvbnN0IHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKCFzbGlkZXMudmFsdWUubGVuZ3RoKSByZXR1cm4gMDtcbiAgICBpZiAoIXByb3BzLmlzU2Nyb2xsQnlQYWdlKSByZXR1cm4gc2xpZGVzLnZhbHVlLmxlbmd0aDtcblxuICAgIGNvbnN0IHF1b3RpZW50ID0gTWF0aC5mbG9vcihzbGlkZXMudmFsdWUubGVuZ3RoIC8gc2xpZGVzSW5WaWV3Q291bnQudmFsdWUpO1xuICAgIGNvbnN0IHJlbWFpbmRlciA9IHNsaWRlcy52YWx1ZS5sZW5ndGggJSBzbGlkZXNJblZpZXdDb3VudC52YWx1ZTtcblxuICAgIHJldHVybiByZW1haW5kZXIgPyBxdW90aWVudCArIDEgOiBxdW90aWVudDtcbiAgfSk7XG5cbiAgY29uc3QgZG90R2FwOiBudW1iZXIgPSA4O1xuICBjb25zdCBkb3RXaWR0aDogbnVtYmVyID0gODtcbiAgbGV0IHNjcm9sbFRpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdCBnZXREb3RDbGFzcyA9IChkb3RJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgbGV0IGNsYXNzTmFtZSA9ICcnO1xuXG4gICAgaWYgKGRvdEluZGV4ID09PSBjdXJyZW50UGFnZUluZGV4LnZhbHVlKSBjbGFzc05hbWUgPSAndGlkZS1jYXJvdXNlbC1kb3QtYWN0aXZlJztcbiAgICBpZiAoTWF0aC5hYnMoY3VycmVudFBhZ2VJbmRleC52YWx1ZSAtIGRvdEluZGV4KSA9PT0gMSkgY2xhc3NOYW1lID0gJ3RpZGUtY2Fyb3VzZWwtZG90LW5laWdoYm9yJztcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SXNFbGVtZW50V2l0aGluQ29udGFpbmVyID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb250YWluZXI6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjb250YWluZXJSaWdodCA9IGNvbnRhaW5lclJlY3QubGVmdCArIGNvbnRhaW5lclJlY3Qud2lkdGg7XG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSaWdodCA9IGVsZW1lbnRSZWN0LmxlZnQgKyBlbGVtZW50UmVjdC53aWR0aDtcblxuICAgIHJldHVybiBlbGVtZW50UmlnaHQgPD0gY29udGFpbmVyUmlnaHQgJiYgZWxlbWVudFJlY3QubGVmdCA+PSBjb250YWluZXJSZWN0LmxlZnQ7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVG91Y2hFbmQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcbiAgICBpZiAoIXRvdWNoU3RhcnQudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IHRvdWNoRW5kID0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07XG4gICAgY29uc3QgZGVsdGFYID0gdG91Y2hTdGFydC52YWx1ZS5jbGllbnRYIC0gdG91Y2hFbmQuY2xpZW50WDtcbiAgICBjb25zdCBkZWx0YVkgPSB0b3VjaEVuZC5jbGllbnRZIC0gdG91Y2hTdGFydC52YWx1ZS5jbGllbnRZO1xuXG4gICAgaWYgKE1hdGguYWJzKGRlbHRhWCkgPiBNYXRoLmFicyhkZWx0YVkpKSBzY3JvbGxCeURlbHRhKGRlbHRhWCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVG91Y2hTdGFydCA9IChldmVudDogVG91Y2hFdmVudCkgPT4ge1xuICAgIHRvdWNoU3RhcnQudmFsdWUgPSBldmVudC50b3VjaGVzWzBdO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVdoZWVsID0gKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNTaGlmdEtleURvd24gPSBldmVudC5zaGlmdEtleTtcbiAgICBjb25zdCBpc1doZWVsID0gTWF0aC5hYnMoZXZlbnQuZGVsdGFZKSA+PSA4MDtcblxuICAgIGlmIChpc1doZWVsICYmICFpc1NoaWZ0S2V5RG93bikgcmV0dXJuO1xuICAgIGlmIChldmVudC5zaGlmdEtleSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lb3V0KTtcblxuICAgIHNjcm9sbFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoaXNXaGVlbCkge1xuICAgICAgICBzY3JvbGxCeURlbHRhKGV2ZW50LmRlbHRhWSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBzbGlkZXMudmFsdWVbc2xpZGVzSW5WaWV3LnZhbHVlWzBdXT8ub2Zmc2V0TGVmdCB8fCAwO1xuXG4gICAgICAgIHNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfTtcblxuICBjb25zdCBtZWFzdXJlRG9tID0gKCkgPT4ge1xuICAgIGlmICghY29udGFpbmVyUmVmLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb250ZW50V2lkdGgudmFsdWUgPSBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5jbGllbnRXaWR0aDtcbiAgICBzaG93QnV0dG9ucy52YWx1ZSA9IGNvbnRlbnRXaWR0aC52YWx1ZSA+IGZyYW1lV2lkdGgudmFsdWU7XG5cbiAgICBzbGlkZXNJblZpZXdDb3VudC52YWx1ZSA9IHNsaWRlcy52YWx1ZS5maWx0ZXIoKHNsaWRlKSA9PlxuICAgICAgZ2V0SXNFbGVtZW50V2l0aGluQ29udGFpbmVyKHNsaWRlLCBjb250YWluZXJSZWYudmFsdWUgYXMgSFRNTEVsZW1lbnQpXG4gICAgKS5sZW5ndGg7XG4gIH07XG5cbiAgY29uc3Qgb2JzZXJ2ZVNsaWRlcyA9ICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogY2Fyb3VzZWxSZWY/LnZhbHVlLFxuICAgICAgcm9vdE1hcmdpbjogJzBweCAxcHggMHB4IDBweCcsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgfTtcblxuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWUgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGxldCBzbGlkZXNBZGRlZFRvVmlldzogbnVtYmVyW10gPSBbXTtcblxuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZUluZGV4ID0gc2xpZGVzLnZhbHVlLmluZGV4T2YoZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzbGlkZXNBZGRlZFRvVmlldy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNsaWRlc0luVmlldy52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5maWx0ZXIoKHNsaWRlKSA9PiBzbGlkZSAhPT0gc2xpZGVJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlzRmlyc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcygwKTtcbiAgICAgIGlzTGFzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKHNsaWRlcy52YWx1ZS5sZW5ndGggLSAxKTtcblxuICAgICAgaWYgKHNsaWRlc0FkZGVkVG9WaWV3Lmxlbmd0aCA+IDApIGVtaXQoJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzQWRkZWRUb1ZpZXcpO1xuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgc2xpZGVzLnZhbHVlLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoc2xpZGVPYnNlcnZlci52YWx1ZSkgc2xpZGVPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNoaWxkKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xvdCA9ICgpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICBzbGlkZXMudmFsdWUgPSBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIG9ic2VydmVTbGlkZXMoKTtcbiAgICB9O1xuXG4gICAgc2xvdE9ic2VydmVyLnZhbHVlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXJDYWxsYmFjayk7XG5cbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSBzbG90T2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjb250YWluZXJSZWYudmFsdWUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbEJ5RGVsdGEgPSAoZGVsdGE6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGlzU2Nyb2xsaW5nTGVmdCA9IGRlbHRhIDwgMDtcblxuICAgIGlmIChpc1Njcm9sbGluZ0xlZnQpIHtcbiAgICAgIHByb3BzLmlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvcHMuaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9PZmZzZXQgPSAodGFyZ2V0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBjb25zdCBpc1Njcm9sbGluZ0xlZnQgPSB0YXJnZXQgPD0gY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbExlZnQ7XG5cbiAgICBjdXJyZW50UGFnZUluZGV4LnZhbHVlID0gaXNTY3JvbGxpbmdMZWZ0ID8gY3VycmVudFBhZ2VJbmRleC52YWx1ZSAtIDEgOiBjdXJyZW50UGFnZUluZGV4LnZhbHVlICsgMTtcblxuICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiB0YXJnZXQsXG4gICAgfSk7XG4gICAgdXBkYXRlRG90cyhpc1Njcm9sbGluZ0xlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0UGFnZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCB8fCBpc0xhc3RTbGlkZS52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV4dFNsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCAtIDFdICsgMTtcbiAgICBjb25zdCBvZmZzZXQgPSBzbGlkZXMudmFsdWVbbmV4dFNsaWRlXT8ub2Zmc2V0TGVmdDtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzUGFnZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCB8fCBpc0ZpcnN0U2xpZGUudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzU2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVswXSAtIHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGg7XG4gICAgY29uc3Qgb2Zmc2V0ID0gc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdPy5vZmZzZXRMZWZ0IHx8IDA7XG5cbiAgICBzY3JvbGxUb09mZnNldChvZmZzZXQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA+IDEgPyBzbGlkZXNJblZpZXcudmFsdWVbMV0gOiBzbGlkZXNJblZpZXcudmFsdWVbMF0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzU2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVswXSAtIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlRG90cyA9IChpc1Njcm9sbGluZ0xlZnQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoIWRvdHNSZWYudmFsdWUgfHwgZG90Q291bnRWaXNpYmxlLnZhbHVlID49IHRvdGFsUGFnZXMudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnN0IGlzT2RkRG90Q291bnQgPSBkb3RDb3VudFZpc2libGUudmFsdWUgJSAyICE9PSAwO1xuICAgIGNvbnN0IGNlbnRlckRvdCA9XG4gICAgICBpc09kZERvdENvdW50IHx8IGlzU2Nyb2xsaW5nTGVmdFxuICAgICAgICA/IE1hdGguZmxvb3IoZG90Q291bnRWaXNpYmxlLnZhbHVlIC8gMikgKyAxXG4gICAgICAgIDogTWF0aC5mbG9vcihkb3RDb3VudFZpc2libGUudmFsdWUgLyAyKTtcblxuICAgIGRvdHNSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY3VycmVudFBhZ2UudmFsdWUgPCBjZW50ZXJEb3QgPyAwIDogKGN1cnJlbnRQYWdlLnZhbHVlIC0gY2VudGVyRG90KSAqIChkb3RXaWR0aCArIGRvdEdhcCksXG4gICAgfSk7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBzbGlkZXMudmFsdWUgPSBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXTtcblxuICAgIG1lYXN1cmVEb20oKTtcbiAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgb2JzZXJ2ZVNsb3QoKTtcblxuICAgIGlmICh3aW5kb3cpIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICBzbGlkZU9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gICAgc2xvdE9ic2VydmVyLnZhbHVlPy5kaXNjb25uZWN0KCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2Fyb3VzZWwnLFxuICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLk9ORSxcbiAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICBdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIHByb3BzLnRpdGxlID8gQ1NTLkFYSVMxLkJFVFdFRU4gOiBDU1MuQVhJUzEuRU5ELCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgdi1pZj1cIighcHJvcHMuaXNGbG9hdGluZyAmJiBzaG93QnV0dG9ucykgfHwgcHJvcHMudGl0bGVcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbaXNIZWFkbGluZTEgPyBDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzEgOiBDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYXVwiPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1jb250YWluZXInLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICAgICAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguU0NST0xMLFxuICAgICAgICAgIENTUy5TQ1JPTExCQVIuT0ZGLFxuICAgICAgICAgIENTUy5TTkFQLk9OLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiY29udGFpbmVyUmVmXCJcbiAgICAgICAgQHRvdWNoZW5kPVwiaGFuZGxlVG91Y2hFbmRcIlxuICAgICAgICBAdG91Y2hzdGFydC5wYXNzaXZlPVwiaGFuZGxlVG91Y2hTdGFydFwiXG4gICAgICAgIEB3aGVlbD1cImhhbmRsZVdoZWVsXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgICBDU1MuTUFSR0lOLkJPVFRPTS5IQUxGLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaGFzRG90cyAmJiB0b3RhbFBhZ2VzID4gMVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtY2Fyb3VzZWwtZG90cy1jb250YWluZXInXVwiXG4gICAgICAgICAgOnN0eWxlPVwie1xuICAgICAgICAgICAgd2lkdGg6IGAke2RvdENvbnRhaW5lcldpZHRofXB4YCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtZG90cycsXG4gICAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICAgIENTUy5BWElTMS5TVEFSVCxcbiAgICAgICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICAgIENTUy5TQ1JPTExCQVIuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICByZWY9XCJkb3RzUmVmXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAndGlkZS1jYXJvdXNlbC1kb3QnLFxuICAgICAgICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgICAgICAgICAgQ1NTLkhFSUdIVC5aRVJPLFxuICAgICAgICAgICAgICAgIENTUy5XSURUSC5aRVJPLFxuICAgICAgICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICAgICAgICBnZXREb3RDbGFzcyhpbmRleCksXG4gICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICAgICAgICB2LWZvcj1cIihfLCBpbmRleCkgaW4gdG90YWxQYWdlc1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheScsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIHByb3BzLmlzSGlkZWF3YXlCdXR0b25zID8gJ2hpZGVhd2F5JyA6ICcnLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNGaXJzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtZG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3QtbmVpZ2hib3Ige1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3QtYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkge1xuICAgIC50aWRlLWNhcm91c2VsIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjaGlwIGFjdGlvbiBidXR0b24gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIHJlbGF0aW5nIHRvIHNlYXJjaGVzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGFjdGlvbi0tZG9jcykgZm9yIFRpZGVDaGlwQWN0aW9uXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSFRNTCB0YWcgdHlwZS4gKi9cbiAgICBlbGVtZW50PzogRWxlbWVudDtcblxuICAgIC8qKiBVUkwgdG8gbmF2aWdhdGUgdG8gb24gY2xpY2suICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIHNob3cgYmVmb3JlIHRoZSBsYWJlbC4gKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYi4gKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogQ2hpcCB0ZXh0LiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiBJQ09OLlNFQVJDSCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1hY3Rpb24nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5GT05ULlJPTEUuTElOS18yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLlVOREVSTElORS5SRVNULk9GRixcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6dHlwZT1cImVsZW1lbnQgPT09IEVMRU1FTlQuQlVUVE9OID8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvbiA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCIgLz5cblxuICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNoaXAtYWN0aW9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY2hpcCBmaWx0ZXIgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBmaWx0ZXItLWRvY3MpIGZvciBUaWRlQ2hpcEZpbHRlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENoaXAgdGV4dC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGlzQWN0aXZlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpc0FjdGl2ZS52YWx1ZSA9ICFpc0FjdGl2ZS52YWx1ZTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWZpbHRlcicsXG4gICAgICBpc0FjdGl2ZVxuICAgICAgICA/IFsnYWN0aXZlJywgQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVxuICAgICAgICA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzbG90IC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLCBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRl1cIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBCb3JkZXIgbXVzdCBhbHdheXMgZXhpc3QgdG8gcHJldmVudCByZXNpemUgb24gaG92ZXIgc3RhdGUsIGJ1dCBtYXRjaCBiYWNrZ3JvdW5kIGNvbG9yIG9uIHJlc3Qgc3RhdGUgdG8gYmxlbmQgaW4uICovXG4gIC50aWRlLWNoaXAtZmlsdGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBpbnB1dCBjaGlwIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwaW5wdXQtLWRvY3MpIGZvciBUaWRlQ2hpcElucHV0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQ2hpcCB0ZXh0ICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtaW5wdXQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgXVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cblxuICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uQ0xPU0VcIiAvPlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNoaXAtaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1pbnB1dDpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgY29sdW1ucyBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY29sdW1ucy0tZG9jcykgZm9yIFRpZGVDb2x1bW5zXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBsYWJlbCBmb3IgdGhlIGNvbHVtbnMgc2VjdGlvbi4gKi9cbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLWNvbHVtbnNcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjFcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjJcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjNcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjRcIiAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxudHlwZSBUaWRlRm9ybUNvbnRleHQgPSB7XG4gIGZvcmNlU2hvd0Vycm9yczogUmVmPGJvb2xlYW4+O1xufTtcblxuY29uc3QgRk9STV9LRVkgPSBTeW1ib2woJ3RpZGUtZm9ybScpO1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZUZvcm0gPSAoKSA9PiB7XG4gIGNvbnN0IGZvcmNlU2hvd0Vycm9ycyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdmlkZTxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZLCB7IGZvcmNlU2hvd0Vycm9ycyB9KTtcblxuICBjb25zdCByZXZlYWxWYWxpZGF0aW9uRXJyb3JzID0gKCkgPT4ge1xuICAgIGZvcmNlU2hvd0Vycm9ycy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db250ZXh0ID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgZm9ybSBjb21wb25lbnQgdG8gYmUgdXNlZCB0byB3cmFwIGZvcm0gZWxlbWVudHMgYW5kIGhhbmRsZSBmb3JtIHN1Ym1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVmb3JtLS1kb2NzKSBmb3IgVGlkZUZvcm1cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IHVzZVRpZGVGb3JtIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICdzdWJtaXQnLCBlOiBTdWJtaXRFdmVudCk6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCB7IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgfSA9IHVzZVRpZGVGb3JtKCk7XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFN1Ym1pdEV2ZW50KSA9PiB7XG4gICAgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIGVtaXQoJ3N1Ym1pdCcsIGUpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGZvcm1cbiAgICBAc3VibWl0LnByZXZlbnQ9XCJoYW5kbGVTdWJtaXRcIlxuICAgIG5vdmFsaWRhdGVcbiAgPlxuICAgIDxzbG90IC8+XG4gIDwvZm9ybT5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgT0JKRUNUX0ZJVCA9IHtcbiAgQ09OVEFJTjogJ2NvbnRhaW4nLFxuICBDT1ZFUjogJ2NvdmVyJyxcbiAgU0NBTEVfRE9XTjogJ3NjYWxlLWRvd24nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0Rml0ID0gKHR5cGVvZiBPQkpFQ1RfRklUKVtrZXlvZiB0eXBlb2YgT0JKRUNUX0ZJVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbWFnZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbWFnZS0tZG9jcykgZm9yIFRpZGVJbWFnZVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPYmplY3RGaXQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGV4dCBkaXNwbGF5IHdoZW4gaW1hZ2UgY2FuJ3QgYmUgbG9hZGVkLiAqL1xuICAgIGFsdD86IHN0cmluZztcblxuICAgIC8qKiBBcHBseSBhIFwiaGVpZ2h0XCIgYXR0cmlidXRlIHRvIHRoZSBpbnRlcm5hbCBpbWFnZSB0YWcgKGluY2x1ZGluZyB1bml0KS4gKi9cbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRlbGF5IGxvYWRpbmcgdW50aWwgaW1hZ2UgaXMgaW4gdmlld3BvcnQuICovXG4gICAgaXNMYXp5PzogYm9vbGVhbjtcblxuICAgIC8qKiBDb250cm9scyBob3cgdGhlIGltYWdlIHNjYWxlcyB3aXRoaW4gaXRzIGJveCwgZWZmZWN0aXZlIG9ubHkgd2hlbiBpbWFnZSBzaXplIGRpZmZlcnMgZnJvbSBpdHMgaW50cmluc2ljIGRpbWVuc2lvbnMuICovXG4gICAgb2JqZWN0Rml0PzogT2JqZWN0Rml0O1xuXG4gICAgLyoqIERldGVybWluZXMgaW1hZ2Ugc291cmNlcyBieSBicmVha3BvaW50LiAqL1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcblxuICAgIC8qKiBJbWFnZSBVUkwuICovXG4gICAgc3JjPzogc3RyaW5nO1xuXG4gICAgLyoqIEFwcGx5IGEgXCJ3aWR0aFwiIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJuYWwgaW1hZ2UgdGFnIChpbmNsdWRpbmcgdW5pdCkuICovXG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBvYmplY3RGaXQ6IE9CSkVDVF9GSVQuQ09WRVIsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcGljdHVyZSA9IHJlZigpO1xuICBjb25zdCBpbWcgPSByZWYoKTtcblxuICBjb25zdCBpbWFnZURlZmF1bHQgPSAnaHR0cHM6Ly9jZG4tc3RhdGljLnRpbGFicy5pby9tYXJrZXRwbGFjZS9jb21tb24vaW1hZ2UtY29taW5nLXNvb24uc3ZnJztcblxuICBjb25zdCBvYmplY3RGaXRDbGFzc05hbWUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICBzd2l0Y2ggKHByb3BzLm9iamVjdEZpdCkge1xuICAgICAgY2FzZSBPQkpFQ1RfRklULkNPTlRBSU46XG4gICAgICAgIHJldHVybiBDU1MuT0JKRUNULkNPTlRBSU47XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09WRVI6XG4gICAgICAgIHJldHVybiBDU1MuT0JKRUNULkNPVkVSO1xuICAgICAgY2FzZSBPQkpFQ1RfRklULlNDQUxFX0RPV046XG4gICAgICAgIHJldHVybiBDU1MuT0JKRUNULlNDQUxFX0RPV047XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gT0JKRUNUX0ZJVC5DT1ZFUjtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHNldEltYWdlRnJvbURlZmF1bHQgPSAoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFNyYyA9IGltZy52YWx1ZT8uY3VycmVudFNyYztcbiAgICBjb25zdCBzb3VyY2VzID0gcGljdHVyZS52YWx1ZT8ucXVlcnlTZWxlY3RvckFsbCgnc291cmNlJykgPz8gW107XG5cbiAgICBpZiAoIWN1cnJlbnRTcmMpIHJldHVybjtcblxuICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gbmV3IFVSTChzb3VyY2Uuc3Jjc2V0LCB3aW5kb3cubG9jYXRpb24uaHJlZikuaHJlZjtcblxuICAgICAgaWYgKHJlc29sdmVkID09PSBjdXJyZW50U3JjKSB7XG4gICAgICAgIHNvdXJjZS5yZW1vdmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW1nLnZhbHVlPy5nZXRBdHRyaWJ1dGUoJ3NyYycpICE9PSBpbWFnZURlZmF1bHQpIHtcbiAgICAgIGltZy52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHBpY3R1cmVcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuRElTUExBWS5CTE9DS11cIlxuICAgIHJlZj1cInBpY3R1cmVcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWltYWdlLWltZycsXG4gICAgICAgICFwcm9wcy53aWR0aCAmJiBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgIXByb3BzLmhlaWdodCAmJiBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICAgICAgICBvYmplY3RGaXRDbGFzc05hbWUsXG4gICAgICBdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpoZWlnaHQ9XCJwcm9wcy5oZWlnaHRcIlxuICAgICAgOmxvYWRpbmc9XCJwcm9wcy5pc0xhenkgPyAnbGF6eScgOiAnZWFnZXInXCJcbiAgICAgIHJlZj1cImltZ1wiXG4gICAgICA6c3JjPVwic3JjID8/IGltYWdlRGVmYXVsdFwiXG4gICAgICA6d2lkdGg9XCJwcm9wcy53aWR0aFwiXG4gICAgICBAZXJyb3I9XCJzZXRJbWFnZUZyb21EZWZhdWx0XCJcbiAgICAvPlxuICA8L3BpY3R1cmU+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbWFnZS1pbWcge1xuICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbWFnZSBiYWNrZ3JvdW5kIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWltYWdlYmFja2dyb3VuZC0tZG9jcykgZm9yIFRpZGVJbWFnZUJhY2tncm91bmRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSW1hZ2UgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUnO1xuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUZXh0IGRpc3BsYXkgd2hlbiBpbWFnZSBjYW4ndCBiZSBsb2FkZWQuICovXG4gICAgYWx0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkZWxheSBsb2FkaW5nIHVudGlsIGltYWdlIGlzIGluIHZpZXdwb3J0LiAqL1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpbWFnZSBzb3VyY2VzIGJ5IGJyZWFrcG9pbnQuICovXG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuXG4gICAgLyoqIEltYWdlIFVSTC4gKi9cbiAgICBzcmM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbWFnZS1iYWNrZ3JvdW5kJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLCBDU1MuSVNPTEFUSU9OLklTT0xBVEVdXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUltYWdlXG4gICAgICAgIDphbHQ9XCJwcm9wcy5hbHRcIlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTF1cIlxuICAgICAgICA6aXMtbGF6eT1cInByb3BzLmlzTGF6eVwiXG4gICAgICAgIDpvYmplY3QtZml0PVwiT0JKRUNUX0ZJVC5DT1ZFUlwiXG4gICAgICAgIDpzb3VyY2VzPVwicHJvcHMuc291cmNlc1wiXG4gICAgICAgIDpzcmM9XCJwcm9wcy5zcmNcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxzbG90IC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgOmRlZXAoLnRpZGUtaW1hZ2UpIHtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGluZGljYXRvciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbmRpY2F0b3ItLWRvY3MpIGZvciBUaWRlSW5kaWNhdG9yXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSW5kaWNhdG9yIHRleHQgKi9cbiAgICBsYWJlbD86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWluZGljYXRvcicsXG4gICAgICBwcm9wcy5sYWJlbCA/ICcnIDogJ2RvdCcsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssXG4gICAgICBDU1MuQUxJR04uWC5DRU5URVIsXG4gICAgICBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMubGFiZWwgJiYgcHJvcHMubGFiZWwudG9TdHJpbmcoKS5sZW5ndGggPiAxID8gW0NTUy5QQURESU5HLlguSEFMRl0gOiBbXSxcbiAgICAgIHByb3BzLmxhYmVsXG4gICAgICAgID8gW0NTUy5QT1NJVElPTi5SRUxBVElWRSwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0VdXG4gICAgICAgIDogW0NTUy5CT1JERVIuRlVMTC5PTkVdLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWluZGljYXRvci1sYWJlbCddXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5sYWJlbFwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbmRpY2F0b3I6bm90KC5kb3QpIHtcbiAgICBtaW4td2lkdGg6IDFyZW07XG4gICAgbWluLWhlaWdodDogMXJlbTtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci5kb3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ncmF5LTEwMCk7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLWxhYmVsIHtcbiAgICAvKiBVc2UgYm90dG9tLXdlaWdodGluZyB0byBvZmZzZXQgdGhlIG1hdGhlbWF0aWNhbCBjZW50ZXIgdG8gdGhlIG9wdGljYWwgY2VudGVyLiAqL1xuICAgIG1hcmdpbi10b3A6IC0xcHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbnB1dCBzdXBwb3J0aW5nIHRleHQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXRzdXBwb3J0aW5ndGV4dC0tZG9jcykgZm9yIFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNFcnJvcjogYm9vbGVhbjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIH07XG4gIGRlZmluZVByb3BzPFByb3BzPigpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLFxuICAgICAgaXNFcnJvciA/IFtDU1MuRk9OVC5DT0xPUi5HTE9CQUwuRVJST1JdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpc0Vycm9yXCJcbiAgICAvPlxuXG4gICAgPGRpdj5cbiAgICAgIHt7IG1lc3NhZ2UgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZSc7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX1JFU1VMVCA9IHtcbiAgTk9fRVJST1I6IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfSxcbiAgUkVRVUlSRUQ6IHtcbiAgICBtZXNzYWdlOiAnUGxlYXNlIGZpbGwgb3V0IHRoaXMgZmllbGQnLFxuICAgIHZhbGlkOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPz8gZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0ID0gKHtcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yRnJvbVByb3BzOiBzdHJpbmc7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZTogUmVmPHN0cmluZz47XG59KTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmIChlcnJvckZyb21Qcm9wcyAhPT0gJycpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGVycm9yRnJvbVByb3BzLFxuICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgLy8gY3VzdG9tIHZhbGlkYXRvciBwcm9wIGVycm9ycyBmcm9tIGhhdmUgc2Vjb25kIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICBpZiAodmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlID8/ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gYWxsIG90aGVyIHByb3AtYmFzZWQgZXJyb3JzIGNvbWUgbGFzdFxuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUudmFsdWU/LnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH1cblxuICBpZiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb247XG4gICAgfVxuICB9XG4gIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGEgdmFsdWUgYmV0d2VlbiAke2Zvcm1hdE51bWJlcihtaW5sZW5ndGgpfSBhbmQgJHtmb3JtYXROdW1iZXIobWF4bGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBVc2UgJHtmb3JtYXROdW1iZXIobWF4bGVuZ3RoKX0gY2hhcmFjdGVycyBvciBmZXdlcmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhdCBsZWFzdCAke2Zvcm1hdE51bWJlcihtaW5sZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5wdXQgY2hlY2tib3ggY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXRjaGVja2JveC0tZG9jcykgZm9yIFRpZGVJbnB1dENoZWNrYm94XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBDaGVja2JveCBzdGF0ZSBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIENoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUgKi9cbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcblxuICAgIC8qKiBVbmlxdWUgSUQgYXR0cmlidXRlICh0byBiaW5kIENoZWNrYm94IGxhYmVsIHRvIGlucHV0KSAqL1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIFBhcmVudGhldGljYWwgcmVzcG9uc2UgY291bnQgKi9cbiAgICBudW1iZXI/OiBudW1iZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgdmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKTtcblxuICBjb25zdCBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQgPSAoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgaWYgKHByb3BzLmVycm9yICE9PSAnJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IHByb3BzLmVycm9yLFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIGlmICghcHJvcHMucmVxdWlyZWQgfHwgaXNDaGVja2VkLnZhbHVlKSByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCgpO1xuICB9KTtcblxuICB3YXRjaChcbiAgICBtb2RlbFZhbHVlLFxuICAgICgpID0+IHtcbiAgICAgIGlmIChtb2RlbFZhbHVlLnZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1jaGVja2JveCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUl1cIj5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICAgIHNob3dFcnJvciA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUiA6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW0NTUy5DVVJTT1IuUE9JTlRFUl0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIGlzQ2hlY2tlZFxuICAgICAgICAgICAgPyBbc2hvd0Vycm9yID8gQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SIDogW0NTUy5CRy5TRUNPTkRBUlksIENTUy5CT1JERVIuQ09MT1IuSElHSF1dXG4gICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICBzaG93RXJyb3JcbiAgICAgICAgICAgICAgICAgID8gW0NTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SLCBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1JdXG4gICAgICAgICAgICAgICAgICA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICAgIDppY29uPVwiaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgZm9ybWF0dGVkTGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cIm51bWJlclwiXG4gICAgICAgID5cbiAgICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKG51bWJlcikgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIGlzLWVycm9yXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94IHtcbiAgICBhbGlnbi1zZWxmOiBzdGFydDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRDaGVja2JveC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5jaGVja2VkIHx8IHByb3BzLmluZGV0ZXJtaW5hdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICBkaXNhYmxlZCA/IFsnZGlzYWJsZWQnLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXSA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICByZWY9XCJpbnB1dFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSCwgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgaXNDaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXCJcbiAgICAgICAgOmljb249XCJwcm9wcy5pbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImlzQ2hlY2tlZFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5wdXQgcmFkaW8gY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXRyYWRpby0tZG9jcykgZm9yIFRpZGVJbnB1dFJhZGlvXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogVW5pcXVlIElEIGF0dHJpYnV0ZSAodG8gYmluZCBpbnB1dCBsYWJlbCB0byBpbnB1dCkgKi9cbiAgICBpbnB1dElkPzogc3RyaW5nO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFBhcmVudGhldGljYWwgcmVzcG9uc2UgY291bnQgKi9cbiAgICBudW1iZXI/OiBudW1iZXI7XG5cbiAgICAvKiogVmFsdWUgYXR0cmlidXRlICovXG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSBwcm9wcy52YWx1ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8bGFiZWxcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW0NTUy5DVVJTT1IuUE9JTlRFUl0sXG4gICAgXVwiXG4gICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgIDp2YWx1ZT1cInZhbHVlXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0hdIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBpc0NoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbGFiZWw+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFJhZGlvLnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCg/ISg/OlthLXpBLVowLTktXStcXC4pKig/PHRsZD5bYS16QS1aXXsyLH0pXFwuXFxrPHRsZD4kKSgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aMC05LV0rXFwuKStbYS16QS1aXXsyLH0pKSQvLFxuICBudW1iZXJGb3JtYXR0ZWQ6IC9eJHwoPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgcGhvbmU6IC9eKD86XFxkezN9LVxcZHszfS1cXGR7NH18XFxkezF9LVxcZHszfS1cXGR7M30tXFxkezR9KT8kLyxcbiAgcHJpY2U6IC8oPz0uKV5cXCQ/KChbMS05XVswLTldezAsMn0oLFswLTldezN9KSopfDApPyhcXC5bMC05XXsxLDJ9KT8kLyxcbiAgemlwOiAvXlxcZHs1fSQvLFxufTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwsICdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgKGUuZy4gbmFtZUBleGFtcGxlLmNvbSknKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkLCAnRW50ZXIgYSB2YWxpZCBudW1iZXInKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSwgJ0VudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyJyksXG4gIFpJUDogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnppcCwgJ0VudGVyIGEgdmFsaWQgWmlwIGNvZGUnKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yID0gKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQ7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9ESVNQTEFZID0ge1xuICBFQUdFUjogJ2VhZ2VyJyxcbiAgTEFaWTogJ2xhenknLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRXJyb3JEaXNwbGF5ID0gKHR5cGVvZiBFUlJPUl9ESVNQTEFZKVtrZXlvZiB0eXBlb2YgRVJST1JfRElTUExBWV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNlbGVjdCBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXRzZWxlY3QtLWRvY3MpIGZvciBUaWRlSW5wdXRTZWxlY3RcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHVzZUlkLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgU2VsZWN0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3JzIGRpc3BsYXkgcHJpb3IgdG8gYmx1ciAqL1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgZ3JvdXBlZCB2YWx1ZXMgZm91bmQgaW5zaWRlIFNlbGVjdCAqL1xuICAgIG9wdGdyb3Vwcz86IChTZWxlY3RPcHRpb24gfCBTZWxlY3RPcHRpb25Hcm91cClbXSB8IHJlYWRvbmx5IChTZWxlY3RPcHRpb24gfCBTZWxlY3RPcHRpb25Hcm91cClbXTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHVuZ3JvdXBlZCB2YWx1ZXMgZm91bmQgaW5zaWRlIFNlbGVjdCAqL1xuICAgIG9wdGlvbnM/OiBTZWxlY3RPcHRpb25bXSB8IHJlYWRvbmx5IFNlbGVjdE9wdGlvbltdO1xuXG4gICAgLyoqIFByZWZpeCBjb250ZW50ICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBTZWxlY3QgaXMgcmVxdWlyZWQgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKiogU3VmZml4IGNvbnRlbnQgKi9cbiAgICBzdWZmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgb3B0Z3JvdXBzOiB1bmRlZmluZWQsXG4gICAgb3B0aW9uczogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dElkID0gdXNlSWQoKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2VsZWN0RWxlbWVudCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PSBudWxsIHx8IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBzZWxlY3RFbGVtZW50Py52YWx1ZT8uZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBzaG93RXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTEwsIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLCBsYWJlbCAmJiBDU1MuTUFSR0lOLlRPUC5PTkVdXCJcbiAgICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLlJJR0hULlRXTyxcbiAgICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgICBwcmVmaXggPyBDU1MuUEFERElORy5MRUZULlpFUk8gOiBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cInNlbGVjdEVsZW1lbnRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gb3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICAgIDxvcHRncm91cFxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJgZ3JvdXAtJHsob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsfWBcIlxuICAgICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L29wdGdyb3VwPlxuXG4gICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwiYG9wdGlvbi0keyhvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlfWBcIlxuICAgICAgICAgICAgICAgIDpzZWxlY3RlZD1cIm1vZGVsVmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIG9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5SSUdIVCxcbiAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBDU1MuTUFSR0lOLlJJR0hULlRXTyxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIGxhYmVsICYmIENTUy5NQVJHSU4uVE9QLk9ORSxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiA6Y2xhc3M9XCJDU1MuUEFERElORy5SSUdIVC5PTkVcIj5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybURlcHJlY2F0ZWQnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xudHlwZSBSYW5nZURhdGEgPSB7XG4gIG1pbjogbnVtYmVyIHwgbnVsbDtcbiAgbWF4OiBudW1iZXIgfCBudWxsO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBub0Vycm9yID0ge1xuICBtZXNzYWdlOiAnJyxcbiAgdmFsaWQ6IHRydWUsXG59IGFzIFJlYWRvbmx5PFZhbGlkYXRpb25SZXN1bHQ+O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCkgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gbm9FcnJvcjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRIYXNFcnJvciA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT5cbiAgZXJyb3JGcm9tUHJvcHMgIT09IGZhbHNlIHx8IGVycm9yRnJvbVJlZiAhPT0gZmFsc2U7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcblxuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWluUmFuZ2VJc1ZhbGlkID0gKHsgbWF4IH06IFBpY2s8UmFuZ2VEYXRhLCAnbWF4Jz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNaW46IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01pbiA9ICFpc05hTihuZXdNaW4pID8gbmV3TWluIDogbnVsbDtcbiAgICBpZiAobWF4ICYmIG5ld01pbikge1xuICAgICAgaWYgKG5ld01pbiA8PSBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgbGVzcyB0aGFuIG1heGAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RPcHRpb25zRnJvbVN0cmluZ3MgPSAoc3RyaW5nczogc3RyaW5nW10pID0+XG4gIHN0cmluZ3MubWFwKFxuICAgIChvcHRpb24pID0+XG4gICAgICAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgfSBhcyBTZWxlY3RPcHRpb24pXG4gICk7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWVsZHNGcm9tUmVmcyhmaWVsZHM6IHsgW2tleTogc3RyaW5nXTogUmVmPFN0cmluZ0lucHV0IHwgbnVsbD4gfSkge1xuICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xuICAgIGlmIChmaWVsZHNba2V5XS52YWx1ZT8ucmVxdWlyZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGRzW2tleV0udmFsdWU/LnZhbHVlO1xuICAgICAgdmFsaWQgPSB2YWxpZCAmJiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWVsZHNba2V5XS52YWx1ZT8uZXJyb3I7XG4gICAgdmFsaWQgPSB2YWxpZCAmJiAhZXJyb3I7XG4gIH1cblxuICByZXR1cm4gdmFsaWQ7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHtcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbHVlLFxufTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gJHttaW5sZW5ndGh9IGFuZCAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIG1vcmUgdGhhbiAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIGxlc3MgdGhhbiAke21pbmxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRTZWxlY3QudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IFNlbGVjdEZpZWxkIH0gZnJvbSAnQC90eXBlcy9GaWVsZERlcHJlY2F0ZWQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9wcyBleHRlbmRzIFNlbGVjdEZpZWxkIHtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmPHN0cmluZyB8IHVuZGVmaW5lZD4ocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgaW5wdXQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Igb3B0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZy10b3A6IDI3cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVEVYVF9JTlBVVF9UWVBFID0ge1xuICBEQVRFOiAnZGF0ZScsXG4gIERBVEVUSU1FX0xPQ0FMOiAnZGF0ZXRpbWUtbG9jYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTU9OVEg6ICdtb250aCcsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIFBBU1NXT1JEOiAncGFzc3dvcmQnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFRJTUU6ICd0aW1lJyxcbiAgVVJMOiAndXJsJyxcbiAgV0VFSzogJ3dlZWsnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0VHlwZSA9ICh0eXBlb2YgVEVYVF9JTlBVVF9UWVBFKVtrZXlvZiB0eXBlb2YgVEVYVF9JTlBVVF9UWVBFXTtcblxuZXhwb3J0IGNvbnN0IElOUFVUX01PREUgPSB7XG4gIERFQ0lNQUw6ICdkZWNpbWFsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE5VTUVSSUM6ICdudW1lcmljJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBVUkw6ICd1cmwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgSW5wdXRNb2RlID0gKHR5cGVvZiBJTlBVVF9NT0RFKVtrZXlvZiB0eXBlb2YgSU5QVVRfTU9ERV07XG4iLCJpbXBvcnQgeyBJTlBVVF9NT0RFLCBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5leHBvcnQgY29uc3QgZ2V0VGV4dElucHV0TW9kZSA9ICh0eXBlOiBUZXh0SW5wdXRUeXBlLCBpbnB1dG1vZGU/OiBJbnB1dE1vZGUpOiBJbnB1dE1vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoaW5wdXRtb2RlKSByZXR1cm4gaW5wdXRtb2RlO1xuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlRFTDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlRFTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5TRUFSQ0g6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5TRUFSQ0g7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuTlVNQkVSOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuTlVNRVJJQztcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5FTUFJTDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLkVNQUlMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlVSTDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlVSTDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0ZXh0IGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHRleHQtLWRvY3MpIGZvciBUaWRlSW5wdXRUZXh0XG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgZ2V0VGV4dElucHV0TW9kZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1zJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXIgYXR0ZW1wdHMgdG8gYXV0b2NvbXBsZXRlICovXG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlcnJvcnMgZGlzcGxheSBwcmlvciB0byBibHVyICovXG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBhIGNsZWFyL3Jlc2V0IGJ1dHRvbiBpcyBzaG93biBmb3IgdGhlIGlucHV0ICovXG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuXG4gICAgLyoqIEljb24gYXQgbGVmdCBvZiBpbnB1dCB2YWx1ZSAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBVbmlxdWUgSUQgYXR0cmlidXRlICh0byBiaW5kIGlucHV0IGxhYmVsIHRvIGlucHV0KSAqL1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgaW5wdXQgZWRpdGluZyBmZWF0dXJlcyBvZmZlcmVkIGJ5IHRoZSBicm93c2VyICovXG4gICAgaW5wdXRtb2RlPzogSW5wdXRNb2RlO1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBBcHBsaWVzIGEgbWF4aW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtaW5pbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtaW5sZW5ndGg/OiBudW1iZXI7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuXG4gICAgLyoqIElucHV0IHByZWZpeCAqL1xuICAgIHByZWZpeD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgcmVxdWlyZWQgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSW5wdXQgc3VmZml4IChpLmUuIHVuaXRzKSAqL1xuICAgIHN1ZmZpeD86IHN0cmluZztcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0ZXh0IGZvcm1hdHRpbmcgYXBwbGllZCB0byBpbnB1dCB2YWx1ZSB1cG9uIGludm9raW5nIHJlbGV2YW50IGxpc3RlbmVyIGV2ZW50KHMpICovXG4gICAgdHJhbnNmb3JtVmFsdWU/OiBGb3JtVmFsdWVUcmFuc2Zvcm1lcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0eXBlKHMpIG9mIHZhbHVlcyBleHBlY3RlZCBieSB0aGUgaW5wdXQgKi9cbiAgICB0eXBlPzogVGV4dElucHV0VHlwZTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIG1ldGhvZChzKSB1c2VkIHRvIGNoZWNrIGZvciB2YWxpZCBpbnB1dCB2YWx1ZSB1cG9uIGludm9raW5nIHJlbGV2YW50IGxpc3RlbmVyIGV2ZW50KHMpICovXG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBpbnB1dG1vZGU6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlucHV0TW9kZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPElucHV0TW9kZSB8IHVuZGVmaW5lZD4oKCkgPT4gZ2V0VGV4dElucHV0TW9kZShwcm9wcy50eXBlLCBwcm9wcy5pbnB1dG1vZGUpKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09IG51bGwgfHwgbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzaG91bGRTaG93Q2xlYXJCdXR0b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiBtb2RlbFZhbHVlLnZhbHVlICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFxuICApO1xuICBjb25zdCBzaG91bGRTaG93UGFzc3dvcmRCdXR0b24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICBtb2RlbFZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSBpbnB1dEVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgW21vZGVsVmFsdWUsICgpID0+IHByb3BzLnRyYW5zZm9ybVZhbHVlXSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIXByb3BzLnRyYW5zZm9ybVZhbHVlKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGRpZ2l0cyA9IG1vZGVsVmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcbiAgICAgIG1vZGVsVmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBzaG91bGRTaG93Q2xlYXJCdXR0b24gPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOmlucHV0bW9kZT1cImlucHV0TW9kZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0RWxlbWVudFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwic2hvdWxkU2hvd0NsZWFyQnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwic2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0VGV4dC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaGFzQ2xlYXI/OiBib29sZWFuO1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIGhhbmRsZVZhbGlkYXRpb24oKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMudHJhbnNmb3JtVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRpZ2l0cyA9IHZhbHVlLnZhbHVlPy5tYXRjaCgvXFxkL2cpPy5qb2luKCcnKSB8fCB1bmRlZmluZWQ7XG5cbiAgICAgIHZhbHVlLnZhbHVlID0gZGlnaXRzID8gcHJvcHMudHJhbnNmb3JtVmFsdWUoZGlnaXRzKSA6ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVmFsdWUgPSAobmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdXBkYXRlVmFsdWUsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWZpZWxkJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIGhhc0NsZWFyID8gW0NTUy5QQURESU5HLlJJR0hULkhBTEYsIENTUy5QQURESU5HLkxFRlQuT05FXSA6IFtDU1MuUEFERElORy5YLk9ORV0sXG4gICAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtbGFiZWwnLFxuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICA6YXV0b2NvbXBsZXRlPVwiYXV0b2NvbXBsZXRlID8gJ29uJyA6ICdvZmYnXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgOnR5cGU9XCJpbnB1dFR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJzdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xlYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1pZj1cInR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGV4dGFyZWEgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0dGV4dGFyZWEtLWRvY3MpIGZvciBUaWRlSW5wdXRUZXh0YXJlYVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgRVJST1JfRElTUExBWSB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxULCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3JzIGRpc3BsYXkgcHJpb3IgdG8gYmx1ciAqL1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcblxuICAgIC8qKiBVbmlxdWUgSUQgYXR0cmlidXRlICh0byBiaW5kIGlucHV0IGxhYmVsIHRvIGlucHV0KSAqL1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtYXhpbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQXBwbGllcyBhIG1pbmltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIHJlcXVpcmVkICovXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgaW5wdXQgKi9cbiAgICByb3dzPzogbnVtYmVyO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIG1ldGhvZChzKSB1c2VkIHRvIGNoZWNrIGZvciB2YWxpZCBpbnB1dCB2YWx1ZSB1cG9uIGludm9raW5nIHJlbGV2YW50IGxpc3RlbmVyIGV2ZW50KHMpICovXG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHRleHRhcmVhRWxlbWVudCA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGV4dGFyZWFFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0ZXh0YXJlYUVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIHNob3dFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlRmllbGRDbGlja1wiXG4gICAgICBAbW91c2Vkb3duPVwicHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5QQURESU5HLlguT05FLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cInRleHRhcmVhRWxlbWVudFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFRleHRhcmVhLnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbkRlcHJlY2F0ZWQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBoYXNFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DSywgQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBnZW5lcmljIG1lbnUgaXRlbSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIG5hdmlnYXRpb24gbWVudXMgb3IgZHJvcGRvd25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlbWVudWl0ZW0tLWRvY3MpIGZvciBUaWRlTWVudUl0ZW1cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRoZSBlbGVtZW50IHRvIHJlbmRlciB0aGUgcm9vdCBlbGVtZW50IGFzLiAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFRoZSBocmVmIGF0dHJpYnV0ZSB0byBhcHBseSB3aGVuIHRoZSBlbGVtZW50IGlzIGEgbGluay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiBsaW5rIGluIGEgbmV3IHRhYi4gKi9cbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG5cbiAgICAvKiogSWNvbiB0byBzaG93IGFmdGVyIHRoZSBsYWJlbC4gKi9cbiAgICBpY29uVHJhaWxpbmc/OiBJY29uO1xuXG4gICAgLyoqIFRoZSBsYWJlbCB0byBiZSBkaXNwbGF5ZWQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbWVudS1pdGVtJyxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5aRVJPLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLlVOREVSTElORS5SRVNULk9GRixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOnRhcmdldD1cImlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJlbGVtZW50XCJcbiAgPlxuICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgIDppY29uPVwiaWNvblRyYWlsaW5nXCJcbiAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICB2LWlmPVwiaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1lbnUtaXRlbSB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICB9XG5cbiAgLnRpZGUtbWVudS1pdGVtOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cbjwvc3R5bGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBCUkVBS1BPSU5UID0ge1xuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBNRURJQSA9IHtcbiAgU006IDc2OCxcbiAgTUQ6IDk5MixcbiAgTEc6IDEyMzIsXG4gIFhMOiAxOTIwLFxufTtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuZXhwb3J0IHR5cGUgTWVkaWEgPSAodHlwZW9mIE1FRElBKVtrZXlvZiB0eXBlb2YgTUVESUFdO1xuIiwiaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIERpcmVjdGx5IG1vZGlmaWVzIHRoZSBgPGJvZHk+YCBlbGVtZW50IHRvIGFwcGx5IG9yIHJlbW92ZSBzY3JvbGwgbG9jay5cbiAqIFdoZW4gYGZhbHNlYCBpcyBwcm92aWRlZCwgaXQgb25seSB1bmxvY2tzIHNjcm9sbCBpZiB0aGVyZSBhcmUgbm8gb3BlblxuICogSFRNTCBkaWFsb2cgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTY3JvbGxMb2NrID0gYXN5bmMgKGlzTG9ja2VkOiBib29sZWFuKSA9PiB7XG4gIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gIC8vIGNvbnN0IEJPRFlfTE9DS19DTEFTUyA9ICdib2R5LXNjcm9sbC1sb2NrJztcblxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnaW5zZXQnLCAnMCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGBjYWxjKDBweCAtIHZhcigtLXNhdmVkLXNjcm9sbC15LCAwcHgpKWApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdzY3JvbGwnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZ1tvcGVuXScpKSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFkgPSBwYXJzZUludChib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgfHwgJzAnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0xPQ0tfQ0xBU1MpO1xuXG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdpbnNldCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luLXRvcCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnb3ZlcmZsb3cteScpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncG9zaXRpb24nKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknKTtcblxuICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdhdXRvJyxcbiAgICAgICAgdG9wOiBzYXZlZFNjcm9sbFksXG4gICAgICB9KTtcblxuICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUT1BfTEFZRVJfSUQgPSAndGlkZS10b3AtbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgaW5pdEZhdXhUb3BMYXllciA9ICgpID0+IHtcbiAgbGV0IHRvcExheWVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVE9QX0xBWUVSX0lEKTtcbiAgaWYgKCF0b3BMYXllcikge1xuICAgIHRvcExheWVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9wTGF5ZXIuaWQgPSBUT1BfTEFZRVJfSUQ7XG4gICAgdG9wTGF5ZXIuc2V0QXR0cmlidXRlKCdkYXRhLWNzcy1zY29wZScsICcnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcExheWVyKTtcbiAgfVxuICB0b3BMYXllci5zdHlsZS5pc29sYXRpb24gPSAnaXNvbGF0ZSc7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBtb2RhbCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3Igb3B0aW9ucy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZW1vZGFsLS1kb2NzKSBmb3IgVGlkZU1vZGFsXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQlJFQUtQT0lOVCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKipcbiAgICAgKiBDYWxsZWQgYmVmb3JlIHRoZSBtb2RhbCBjbG9zZXMuXG4gICAgICpcbiAgICAgKiBSZXR1cm4gYGZhbHNlYCB0byBjYW5jZWwgdGhlIGNsb3NlIGV2ZW50LlxuICAgICAqL1xuICAgIGJlZm9yZUNsb3NlPzogKCkgPT4gdm9pZCB8IGJvb2xlYW4gfCBQcm9taXNlPHZvaWQgfCBib29sZWFuPjtcbiAgICAvKiogQ29udHJvbHMgZGlzcGxheSBvZiB0aGUgYmFjayBidXR0b24uICovXG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgICAvKiogQ29udHJvbHMgd2hldGhlciB0aGUgbW9kYWwgY2FuIGJlIGRpc21pc3NlZCB3aXRoIGEgY2xvc2UgYnV0dG9uIG9yIG90aGVyIGdlc3R1cmVzLiAqL1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIC8qKiBUaGUgdGl0bGUgdG8gZGlzcGxheSBpbiB0aGUgbW9kYWwncyBoZWFkZXIuICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgLyoqIEN1c3RvbSBvdmVycmlkZSB0byB0aGUgbW9kYWwncyB3aWR0aCBjb25zdHJhaW50LiBJbmNsdWRlIHVuaXRzLiAqL1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYmVmb3JlQ2xvc2U6IHVuZGVmaW5lZCxcbiAgICBpc0JhY2tCdXR0b246IGZhbHNlLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RhbENvbnRlbnQ6IFJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcbiAgY29uc3QgbW9kYWxEaWFsb2c6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcblxuICBjb25zdCBpc09wZW4gPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uY2xvc2UoKTtcbiAgICBzZXRTY3JvbGxMb2NrKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxDb250ZW50VG9Ub3AgPSAoKSA9PiB7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgaWYgKCFtb2RhbENvbnRlbnQudmFsdWUpIHJldHVybjtcbiAgICAgIG1vZGFsQ29udGVudC52YWx1ZS5zY3JvbGxUb3AgPSAwO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChwcm9wcy5iZWZvcmVDbG9zZSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvcHMuYmVmb3JlQ2xvc2UoKTtcbiAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSByZXR1cm47XG4gICAgfVxuXG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBjbG9zZSgpO1xuICB9O1xuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghbW9kYWxEaWFsb2cudmFsdWUpIHJldHVybjtcbiAgICBpZiAoaXNPcGVuLnZhbHVlKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgICAgc2Nyb2xsQ29udGVudFRvVG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwibW9kYWxEaWFsb2dcIlxuICAgICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHdpZHRoIH1cIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiY2xvc2VcIlxuICAgICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvb3RlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICAtLW1vZGFsLXBhZGRpbmcteDogMjBweDtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbiAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgd2lkdGg6IHZhcigtLW1vZGFsLXdpZHRoLCA1NzZweCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWhlYWRlcixcbiAgLnRpZGUtbW9kYWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICAudGlkZS1tb2RhbC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLW1vZGFsLXBhZGRpbmcteCkgdmFyKC0tdGlkZS1zYWZlLWZyKSB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZVRvdGFsOiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBjdXJyZW50SW5kZXggPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGN1cnJlbnRJbmRleC52YWx1ZSA9IGluZGV4O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVByZXZpb3VzQ2xpY2sgPSAoKSA9PiB7XG4gICAgY3VycmVudEluZGV4LnZhbHVlLS07XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTmV4dENsaWNrID0gKCkgPT4ge1xuICAgIGN1cnJlbnRJbmRleC52YWx1ZSsrO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4IDw9IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZVByZXZpb3VzQ2xpY2tcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50SW5kZXggPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwiY3VycmVudEluZGV4ID49IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlTmV4dENsaWNrXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuIiwiLyoqXG4gKiBDdXN0b20gcG9zaXRpb25pbmcgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdmlydHVhbC1lbGVtZW50c1xuICovXG5cbmNvbnN0IHNpZGVzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbmNvbnN0IGFsaWdubWVudHMgPSBbJ3N0YXJ0JywgJ2VuZCddO1xuY29uc3QgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzBdLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzFdKSwgW10pO1xuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcbmNvbnN0IHJvdW5kID0gTWF0aC5yb3VuZDtcbmNvbnN0IGZsb29yID0gTWF0aC5mbG9vcjtcbmNvbnN0IGNyZWF0ZUNvb3JkcyA9IHYgPT4gKHtcbiAgeDogdixcbiAgeTogdlxufSk7XG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBjbGFtcChzdGFydCwgdmFsdWUsIGVuZCkge1xuICByZXR1cm4gbWF4KHN0YXJ0LCBtaW4odmFsdWUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShwYXJhbSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldFNpZGUocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGdldE9wcG9zaXRlQXhpcyhnZXRTaWRlQXhpcyhwbGFjZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCkge1xuICBpZiAocnRsID09PSB2b2lkIDApIHtcbiAgICBydGwgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gYWxpZ25tZW50QXhpcyA9PT0gJ3gnID8gYWxpZ25tZW50ID09PSAocnRsID8gJ2VuZCcgOiAnc3RhcnQnKSA/ICdyaWdodCcgOiAnbGVmdCcgOiBhbGlnbm1lbnQgPT09ICdzdGFydCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBpZiAocmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gPiByZWN0cy5mbG9hdGluZ1tsZW5ndGhdKSB7XG4gICAgbWFpbkFsaWdubWVudFNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSk7XG4gIH1cbiAgcmV0dXJuIFttYWluQWxpZ25tZW50U2lkZSwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpXTtcbn1cbmZ1bmN0aW9uIGdldEV4cGFuZGVkUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgY29uc3Qgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGFsaWdubWVudCA9PiBvcHBvc2l0ZUFsaWdubWVudE1hcFthbGlnbm1lbnRdKTtcbn1cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBzaWRlID0+IG9wcG9zaXRlU2lkZU1hcFtzaWRlXSk7XG59XG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIDoge1xuICAgIHRvcDogcGFkZGluZyxcbiAgICByaWdodDogcGFkZGluZyxcbiAgICBib3R0b206IHBhZGRpbmcsXG4gICAgbGVmdDogcGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSByZWN0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgbGVmdDogeCxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZXhwb3J0IHsgYWxpZ25tZW50cywgY2xhbXAsIGNyZWF0ZUNvb3JkcywgZXZhbHVhdGUsIGV4cGFuZFBhZGRpbmdPYmplY3QsIGZsb29yLCBnZXRBbGlnbm1lbnQsIGdldEFsaWdubWVudEF4aXMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRBeGlzTGVuZ3RoLCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZUF4aXMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRQYWRkaW5nT2JqZWN0LCBnZXRTaWRlLCBnZXRTaWRlQXhpcywgbWF4LCBtaW4sIHBsYWNlbWVudHMsIHJlY3RUb0NsaWVudFJlY3QsIHJvdW5kLCBzaWRlcyB9O1xuIiwiaW1wb3J0IHsgZ2V0U2lkZUF4aXMsIGdldEFsaWdubWVudEF4aXMsIGdldEF4aXNMZW5ndGgsIGdldFNpZGUsIGdldEFsaWdubWVudCwgZXZhbHVhdGUsIGdldFBhZGRpbmdPYmplY3QsIHJlY3RUb0NsaWVudFJlY3QsIG1pbiwgY2xhbXAsIHBsYWNlbWVudHMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgc2lkZXMsIG1heCwgZ2V0T3Bwb3NpdGVBeGlzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmV4cG9ydCB7IHJlY3RUb0NsaWVudFJlY3QgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuXG5mdW5jdGlvbiBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChfcmVmLCBwbGFjZW1lbnQsIHJ0bCkge1xuICBsZXQge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9ID0gX3JlZjtcbiAgY29uc3Qgc2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbkxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBzaWRlQXhpcyA9PT0gJ3knO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IGNvbW1vbkFsaWduID0gcmVmZXJlbmNlW2FsaWduTGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1thbGlnbkxlbmd0aF0gLyAyO1xuICBsZXQgY29vcmRzO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGZsb2F0aW5nLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBmbG9hdGluZy53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuICBzd2l0Y2ggKGdldEFsaWdubWVudChwbGFjZW1lbnQpKSB7XG4gICAgY2FzZSAnc3RhcnQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gKz0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvb3Jkcztcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKlxuICogVGhpcyBleHBvcnQgZG9lcyBub3QgaGF2ZSBhbnkgYHBsYXRmb3JtYCBpbnRlcmZhY2UgbG9naWMuIFlvdSB3aWxsIG5lZWQgdG9cbiAqIHdyaXRlIG9uZSBmb3IgdGhlIHBsYXRmb3JtIHlvdSBhcmUgdXNpbmcgRmxvYXRpbmcgVUkgd2l0aC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gYXN5bmMgKHJlZmVyZW5jZSwgZmxvYXRpbmcsIGNvbmZpZykgPT4ge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybVxuICB9ID0gY29uZmlnO1xuICBjb25zdCB2YWxpZE1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChmbG9hdGluZykpO1xuICBsZXQgcmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBzdHJhdGVneVxuICB9KTtcbiAgbGV0IHtcbiAgICB4LFxuICAgIHlcbiAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBwbGFjZW1lbnQsIHJ0bCk7XG4gIGxldCBzdGF0ZWZ1bFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgbGV0IG1pZGRsZXdhcmVEYXRhID0ge307XG4gIGxldCByZXNldENvdW50ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZE1pZGRsZXdhcmUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7XG4gICAgICBuYW1lLFxuICAgICAgZm5cbiAgICB9ID0gdmFsaWRNaWRkbGV3YXJlW2ldO1xuICAgIGNvbnN0IHtcbiAgICAgIHg6IG5leHRYLFxuICAgICAgeTogbmV4dFksXG4gICAgICBkYXRhLFxuICAgICAgcmVzZXRcbiAgICB9ID0gYXdhaXQgZm4oe1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBpbml0aWFsUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSk7XG4gICAgeCA9IG5leHRYICE9IG51bGwgPyBuZXh0WCA6IHg7XG4gICAgeSA9IG5leHRZICE9IG51bGwgPyBuZXh0WSA6IHk7XG4gICAgbWlkZGxld2FyZURhdGEgPSB7XG4gICAgICAuLi5taWRkbGV3YXJlRGF0YSxcbiAgICAgIFtuYW1lXToge1xuICAgICAgICAuLi5taWRkbGV3YXJlRGF0YVtuYW1lXSxcbiAgICAgICAgLi4uZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHJlc2V0ICYmIHJlc2V0Q291bnQgPD0gNTApIHtcbiAgICAgIHJlc2V0Q291bnQrKztcbiAgICAgIGlmICh0eXBlb2YgcmVzZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChyZXNldC5wbGFjZW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZWZ1bFBsYWNlbWVudCA9IHJlc2V0LnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzZXQucmVjdHMpIHtcbiAgICAgICAgICByZWN0cyA9IHJlc2V0LnJlY3RzID09PSB0cnVlID8gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGZsb2F0aW5nLFxuICAgICAgICAgICAgc3RyYXRlZ3lcbiAgICAgICAgICB9KSA6IHJlc2V0LnJlY3RzO1xuICAgICAgICB9XG4gICAgICAgICh7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5XG4gICAgICAgIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgc3RhdGVmdWxQbGFjZW1lbnQsIHJ0bCkpO1xuICAgICAgfVxuICAgICAgaSA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICBjb25zdCBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyAncmVmZXJlbmNlJyA6ICdmbG9hdGluZyc7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIGNvbnN0IGNsaXBwaW5nQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoYXdhaXQgcGxhdGZvcm0uZ2V0Q2xpcHBpbmdSZWN0KHtcbiAgICBlbGVtZW50OiAoKF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA9IGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChlbGVtZW50KSkpICE9IG51bGwgPyBfYXdhaXQkcGxhdGZvcm0kaXNFbGUgOiB0cnVlKSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IChhd2FpdCAocGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSksXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0pKTtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdHMuZmxvYXRpbmcud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0cy5mbG9hdGluZy5oZWlnaHRcbiAgfSA6IHJlY3RzLnJlZmVyZW5jZTtcbiAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IG9mZnNldFNjYWxlID0gKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSkgPyAoYXdhaXQgKHBsYXRmb3JtLmdldFNjYWxlID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRTY2FsZShvZmZzZXRQYXJlbnQpKSkgfHwge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9IDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBlbGVtZW50Q2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QocGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QgPyBhd2FpdCBwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSkgOiByZWN0KTtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IChjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3ApIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBib3R0b206IChlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBsZWZ0OiAoY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0KSAvIG9mZnNldFNjYWxlLngsXG4gICAgcmlnaHQ6IChlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQpIC8gb2Zmc2V0U2NhbGUueFxuICB9O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgfSA9IHN0YXRlO1xuICAgIC8vIFNpbmNlIGBlbGVtZW50YCBpcyByZXF1aXJlZCwgd2UgZG9uJ3QgUGFydGlhbDw+IHRoZSB0eXBlLlxuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBwYWRkaW5nID0gMFxuICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSkgfHwge307XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSBjbGFtcChtaW4kMSwgY2VudGVyLCBtYXgpO1xuXG4gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbCBlbm91Z2ggdGhhdCB0aGUgYXJyb3cncyBwYWRkaW5nIGNhdXNlcyBpdCB0b1xuICAgIC8vIHRvIHBvaW50IHRvIG5vdGhpbmcgZm9yIGFuIGFsaWduZWQgcGxhY2VtZW50LCBhZGp1c3QgdGhlIG9mZnNldCBvZiB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IGl0c2VsZi4gVG8gZW5zdXJlIGBzaGlmdCgpYCBjb250aW51ZXMgdG8gdGFrZSBhY3Rpb24sXG4gICAgLy8gYSBzaW5nbGUgcmVzZXQgaXMgcGVyZm9ybWVkIHdoZW4gdGhpcyBpcyB0cnVlLlxuICAgIGNvbnN0IHNob3VsZEFkZE9mZnNldCA9ICFtaWRkbGV3YXJlRGF0YS5hcnJvdyAmJiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPSBudWxsICYmIGNlbnRlciAhPT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBjZW50ZXIgLSBtaW4kMSA6IGNlbnRlciAtIG1heCA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdICsgYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXQgLSBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICAgIC4uLihzaG91bGRBZGRPZmZzZXQgJiYge1xuICAgICAgICAgIGFsaWdubWVudE9mZnNldFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIHJlc2V0OiBzaG91bGRBZGRPZmZzZXRcbiAgICB9O1xuICB9XG59KTtcblxuZnVuY3Rpb24gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSB7XG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQgPSBhbGlnbm1lbnQgPyBbLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50KSwgLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPT0gYWxpZ25tZW50KV0gOiBhbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldFNpZGUocGxhY2VtZW50KSA9PT0gcGxhY2VtZW50KTtcbiAgcmV0dXJuIGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQuZmlsdGVyKHBsYWNlbWVudCA9PiB7XG4gICAgaWYgKGFsaWdubWVudCkge1xuICAgICAgcmV0dXJuIGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQgfHwgKGF1dG9BbGlnbm1lbnQgPyBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpICE9PSBwbGFjZW1lbnQgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhdXRvUGxhY2VtZW50JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGF1dG9QLCBfbWlkZGxld2FyZURhdGEkYXV0b1AyLCBfcGxhY2VtZW50c1RoYXRGaXRPbkU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLFxuICAgICAgICBhdXRvQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgcGxhY2VtZW50cyQxID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IHBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleF07XG4gICAgICBpZiAoY3VycmVudFBsYWNlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsaWdubWVudFNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHMkMVswXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRPdmVyZmxvd3MgPSBbb3ZlcmZsb3dbZ2V0U2lkZShjdXJyZW50UGxhY2VtZW50KV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzBdXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMV1dXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXggKyAxXTtcblxuICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgcGxhY2VtZW50cyB0byBjaGVjay5cbiAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSA9IGFsbE92ZXJmbG93cy5tYXAoZCA9PiB7XG4gICAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChkLnBsYWNlbWVudCk7XG4gICAgICAgIHJldHVybiBbZC5wbGFjZW1lbnQsIGFsaWdubWVudCAmJiBjcm9zc0F4aXMgP1xuICAgICAgICAvLyBDaGVjayBhbG9uZyB0aGUgbWFpbkF4aXMgYW5kIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGQub3ZlcmZsb3dzLnNsaWNlKDAsIDIpLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB2LCAwKSA6XG4gICAgICAgIC8vIENoZWNrIG9ubHkgdGhlIG1haW5BeGlzLlxuICAgICAgICBkLm92ZXJmbG93c1swXSwgZC5vdmVyZmxvd3NdO1xuICAgICAgfSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pO1xuICAgICAgY29uc3QgcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlID0gcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlLmZpbHRlcihkID0+IGRbMl0uc2xpY2UoMCxcbiAgICAgIC8vIEFsaWduZWQgcGxhY2VtZW50cyBzaG91bGQgbm90IGNoZWNrIHRoZWlyIG9wcG9zaXRlIGNyb3NzQXhpc1xuICAgICAgLy8gc2lkZS5cbiAgICAgIGdldEFsaWdubWVudChkWzBdKSA/IDIgOiAzKS5ldmVyeSh2ID0+IHYgPD0gMCkpO1xuICAgICAgY29uc3QgcmVzZXRQbGFjZW1lbnQgPSAoKF9wbGFjZW1lbnRzVGhhdEZpdE9uRSA9IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wbGFjZW1lbnRzVGhhdEZpdE9uRVswXSkgfHwgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlWzBdWzBdO1xuICAgICAgaWYgKHJlc2V0UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZmxpcCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhcnJvdywgX21pZGRsZXdhcmVEYXRhJGZsaXA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBpbml0aWFsUGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZSxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICAgIGZhbGxiYWNrU3RyYXRlZ3kgPSAnYmVzdEZpdCcsXG4gICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSAnbm9uZScsXG4gICAgICAgIGZsaXBBbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgICAgIC8vIElmIGEgcmVzZXQgYnkgdGhlIGFycm93IHdhcyBjYXVzZWQgZHVlIHRvIGFuIGFsaWdubWVudCBvZmZzZXQgYmVpbmdcbiAgICAgIC8vIGFkZGVkLCB3ZSBzaG91bGQgc2tpcCBhbnkgbG9naWMgbm93IHNpbmNlIGBmbGlwKClgIGhhcyBhbHJlYWR5IGRvbmUgaXRzXG4gICAgICAvLyB3b3JrLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yNTQ5I2lzc3VlY29tbWVudC0xNzE5NjAxNjQzXG4gICAgICBpZiAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGluaXRpYWxTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGluaXRpYWxQbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNCYXNlUGxhY2VtZW50ID0gZ2V0U2lkZShpbml0aWFsUGxhY2VtZW50KSA9PT0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwQWxpZ25tZW50ID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KGluaXRpYWxQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiAhPT0gJ25vbmUnO1xuICAgICAgaWYgKCFzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgJiYgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qgc2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpO1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlc1swXV0sIG92ZXJmbG93W3NpZGVzWzFdXSk7XG4gICAgICB9XG4gICAgICBvdmVyZmxvd3NEYXRhID0gWy4uLm92ZXJmbG93c0RhdGEsIHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3NcbiAgICAgIH1dO1xuXG4gICAgICAvLyBPbmUgb3IgbW9yZSBzaWRlcyBpcyBvdmVyZmxvd2luZy5cbiAgICAgIGlmICghb3ZlcmZsb3dzLmV2ZXJ5KHNpZGUgPT4gc2lkZSA8PSAwKSkge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXAyLCBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXI7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICgoKF9taWRkbGV3YXJlRGF0YSRmbGlwMiA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcDIuaW5kZXgpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbbmV4dEluZGV4XTtcbiAgICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgICAvLyBUcnkgbmV4dCBwbGFjZW1lbnQgYW5kIHJlLXJ1biB0aGUgbGlmZWN5Y2xlLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgICAgICAgIG92ZXJmbG93czogb3ZlcmZsb3dzRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaXJzdCwgZmluZCB0aGUgY2FuZGlkYXRlcyB0aGF0IGZpdCBvbiB0aGUgbWFpbkF4aXMgc2lkZSBvZiBvdmVyZmxvdyxcbiAgICAgICAgLy8gdGhlbiBmaW5kIHRoZSBwbGFjZW1lbnQgdGhhdCBmaXRzIHRoZSBiZXN0IG9uIHRoZSBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBsZXQgcmVzZXRQbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiBkLm92ZXJmbG93c1swXSA8PSAwKS5zb3J0KChhLCBiKSA9PiBhLm92ZXJmbG93c1sxXSAtIGIub3ZlcmZsb3dzWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlci5wbGFjZW1lbnQ7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrLlxuICAgICAgICBpZiAoIXJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgc3dpdGNoIChmYWxsYmFja1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdiZXN0Rml0JzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhkLnBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2lkZUF4aXMgPT09IGluaXRpYWxTaWRlQXhpcyB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBiaWFzIHRvIHRoZSBgeWAgc2lkZSBheGlzIGR1ZSB0byBob3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgZGlyZWN0aW9ucyBmYXZvcmluZyBncmVhdGVyIHdpZHRoLlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2lkZUF4aXMgPT09ICd5JztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyWzBdO1xuICAgICAgICAgICAgICAgIGlmIChwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW5pdGlhbFBsYWNlbWVudCc6XG4gICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnQgIT09IHJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aFxuICB9O1xufVxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBzaWRlcy5zb21lKHNpZGUgPT4gb3ZlcmZsb3dbc2lkZV0gPj0gMCk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaGlkZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBzdHJhdGVneSA9ICdyZWZlcmVuY2VIaWRkZW4nLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgJ3JlZmVyZW5jZUhpZGRlbic6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLnJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW46IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnZXNjYXBlZCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMuZmxvYXRpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGVzY2FwZWRPZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIGVzY2FwZWQ6IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nUmVjdChyZWN0cykge1xuICBjb25zdCBtaW5YID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICBjb25zdCBtaW5ZID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QudG9wKSk7XG4gIGNvbnN0IG1heFggPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICBjb25zdCBtYXhZID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QuYm90dG9tKSk7XG4gIHJldHVybiB7XG4gICAgeDogbWluWCxcbiAgICB5OiBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSZWN0c0J5TGluZShyZWN0cykge1xuICBjb25zdCBzb3J0ZWRSZWN0cyA9IHJlY3RzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS55IC0gYi55KTtcbiAgY29uc3QgZ3JvdXBzID0gW107XG4gIGxldCBwcmV2UmVjdCA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByZWN0ID0gc29ydGVkUmVjdHNbaV07XG4gICAgaWYgKCFwcmV2UmVjdCB8fCByZWN0LnkgLSBwcmV2UmVjdC55ID4gcHJldlJlY3QuaGVpZ2h0IC8gMikge1xuICAgICAgZ3JvdXBzLnB1c2goW3JlY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXS5wdXNoKHJlY3QpO1xuICAgIH1cbiAgICBwcmV2UmVjdCA9IHJlY3Q7XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcy5tYXAocmVjdCA9PiByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChyZWN0KSkpO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdpbmxpbmUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgLy8gQSBNb3VzZUV2ZW50J3MgY2xpZW50e1gsWX0gY29vcmRzIGNhbiBiZSB1cCB0byAyIHBpeGVscyBvZmYgYVxuICAgICAgLy8gQ2xpZW50UmVjdCdzIGJvdW5kcywgZGVzcGl0ZSB0aGUgZXZlbnQgbGlzdGVuZXIgYmVpbmcgdHJpZ2dlcmVkLiBBXG4gICAgICAvLyBwYWRkaW5nIG9mIDIgc2VlbXMgdG8gaGFuZGxlIHRoaXMgaXNzdWUuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhZGRpbmcgPSAyLFxuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgbmF0aXZlQ2xpZW50UmVjdHMgPSBBcnJheS5mcm9tKChhd2FpdCAocGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldENsaWVudFJlY3RzKGVsZW1lbnRzLnJlZmVyZW5jZSkpKSB8fCBbXSk7XG4gICAgICBjb25zdCBjbGllbnRSZWN0cyA9IGdldFJlY3RzQnlMaW5lKG5hdGl2ZUNsaWVudFJlY3RzKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrID0gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QobmF0aXZlQ2xpZW50UmVjdHMpKTtcbiAgICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgICAgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJlY3RzIGFuZCB0aGV5IGFyZSBkaXNqb2luZWQuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPT09IDIgJiYgY2xpZW50UmVjdHNbMF0ubGVmdCA+IGNsaWVudFJlY3RzWzFdLnJpZ2h0ICYmIHggIT0gbnVsbCAmJiB5ICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCByZWN0IGluIHdoaWNoIHRoZSBwb2ludCBpcyBmdWxseSBpbnNpZGUuXG4gICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3RzLmZpbmQocmVjdCA9PiB4ID4gcmVjdC5sZWZ0IC0gcGFkZGluZ09iamVjdC5sZWZ0ICYmIHggPCByZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCAmJiB5ID4gcmVjdC50b3AgLSBwYWRkaW5nT2JqZWN0LnRvcCAmJiB5IDwgcmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgfHwgZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBhcmUgMiBvciBtb3JlIGNvbm5lY3RlZCByZWN0cy5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgaWYgKGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5Jykge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZWN0ID0gY2xpZW50UmVjdHNbMF07XG4gICAgICAgICAgICBjb25zdCBsYXN0UmVjdCA9IGNsaWVudFJlY3RzW2NsaWVudFJlY3RzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgaXNUb3AgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgdG9wID0gZmlyc3RSZWN0LnRvcDtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGxhc3RSZWN0LmJvdHRvbTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBpc1RvcCA/IGZpcnN0UmVjdC5sZWZ0IDogbGFzdFJlY3QubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gaXNUb3AgPyBmaXJzdFJlY3QucmlnaHQgOiBsYXN0UmVjdC5yaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzTGVmdFNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBtYXhSaWdodCA9IG1heCguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gICAgICAgICAgY29uc3QgbWluTGVmdCA9IG1pbiguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgICAgICAgICBjb25zdCBtZWFzdXJlUmVjdHMgPSBjbGllbnRSZWN0cy5maWx0ZXIocmVjdCA9PiBpc0xlZnRTaWRlID8gcmVjdC5sZWZ0ID09PSBtaW5MZWZ0IDogcmVjdC5yaWdodCA9PT0gbWF4UmlnaHQpO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IG1lYXN1cmVSZWN0c1swXS50b3A7XG4gICAgICAgICAgY29uc3QgYm90dG9tID0gbWVhc3VyZVJlY3RzW21lYXN1cmVSZWN0cy5sZW5ndGggLSAxXS5ib3R0b207XG4gICAgICAgICAgY29uc3QgbGVmdCA9IG1pbkxlZnQ7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBtYXhSaWdodDtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzZXRSZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICAgICAgICB9LFxuICAgICAgICBmbG9hdGluZzogZWxlbWVudHMuZmxvYXRpbmcsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9KTtcbiAgICAgIGlmIChyZWN0cy5yZWZlcmVuY2UueCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueCB8fCByZWN0cy5yZWZlcmVuY2UueSAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueSB8fCByZWN0cy5yZWZlcmVuY2Uud2lkdGggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLndpZHRoIHx8IHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogcmVzZXRSZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBGb3IgdHlwZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgdGhlIGBPZmZzZXRPcHRpb25zYCB0eXBlIHdhcyBhbHNvXG4vLyBEZXJpdmFibGUuXG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICBjb25zdCBtYWluQXhpc011bHRpID0gWydsZWZ0JywgJ3RvcCddLmluY2x1ZGVzKHNpZGUpID8gLTEgOiAxO1xuICBjb25zdCBjcm9zc0F4aXNNdWx0aSA9IHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxO1xuICBjb25zdCByYXdWYWx1ZSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7XG4gICAgbWFpbkF4aXMsXG4gICAgY3Jvc3NBeGlzLFxuICAgIGFsaWdubWVudEF4aXNcbiAgfSA9IHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsXG4gIH0gOiB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLm1haW5BeGlzIHx8IDAsXG4gICAgY3Jvc3NBeGlzOiByYXdWYWx1ZS5jcm9zc0F4aXMgfHwgMCxcbiAgICBhbGlnbm1lbnRBeGlzOiByYXdWYWx1ZS5hbGlnbm1lbnRBeGlzXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRhcnJvdztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcblxuICAgICAgLy8gSWYgdGhlIHBsYWNlbWVudCBpcyB0aGUgc2FtZSBhbmQgdGhlIGFycm93IGNhdXNlZCBhbiBhbGlnbm1lbnQgb2Zmc2V0XG4gICAgICAvLyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBwb3NpdGlvbmluZyBjb29yZGluYXRlcy5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlLnBsYWNlbWVudCkgJiYgKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLmRpZmZDb29yZHMsXG4gICAgICAgICAgcGxhY2VtZW50XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSBjbGFtcChtaW4sIG1haW5BeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gY3Jvc3NBeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBjbGFtcChtaW4sIGNyb3NzQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHksXG4gICAgICAgICAgZW5hYmxlZDoge1xuICAgICAgICAgICAgW21haW5BeGlzXTogY2hlY2tNYWluQXhpcyxcbiAgICAgICAgICAgIFtjcm9zc0F4aXNdOiBjaGVja0Nyb3NzQXhpc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9mZnNldCA9IDAsXG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWVcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgY29uc3QgcmF3T2Zmc2V0ID0gZXZhbHVhdGUob2Zmc2V0LCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb21wdXRlZE9mZnNldCA9IHR5cGVvZiByYXdPZmZzZXQgPT09ICdudW1iZXInID8ge1xuICAgICAgICBtYWluQXhpczogcmF3T2Zmc2V0LFxuICAgICAgICBjcm9zc0F4aXM6IDBcbiAgICAgIH0gOiB7XG4gICAgICAgIG1haW5BeGlzOiAwLFxuICAgICAgICBjcm9zc0F4aXM6IDAsXG4gICAgICAgIC4uLnJhd09mZnNldFxuICAgICAgfTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gLSBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgaWYgKG1haW5BeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChtYWluQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkb2Zmc2UyO1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICBjb25zdCBpc09yaWdpblNpZGUgPSBbJ3RvcCcsICdsZWZ0J10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2VbY3Jvc3NBeGlzXSkgfHwgMCA6IDApICsgKGlzT3JpZ2luU2lkZSA/IDAgOiBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMpO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gMCA6ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlMiA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZTJbY3Jvc3NBeGlzXSkgfHwgMCkgLSAoaXNPcmlnaW5TaWRlID8gY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzIDogMCk7XG4gICAgICAgIGlmIChjcm9zc0F4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9zc0F4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSwgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YS5lbmFibGVkLngpIHtcbiAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBtYXhpbXVtQ2xpcHBpbmdXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhMiA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIuZW5hYmxlZC55KSB7XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBpZiAod2lkdGggIT09IG5leHREaW1lbnNpb25zLndpZHRoIHx8IGhlaWdodCAhPT0gbmV4dERpbWVuc2lvbnMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfTtcbiIsImZ1bmN0aW9uIGhhc1dpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICBpZiAoaXNOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIChub2RlLm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIC8vIE1vY2tlZCBub2RlcyBpbiB0ZXN0aW5nIGVudmlyb25tZW50cyBtYXkgbm90IGJlIGluc3RhbmNlcyBvZiBOb2RlLiBCeVxuICAvLyByZXR1cm5pbmcgYCNkb2N1bWVudGAgYW4gaW5maW5pdGUgbG9vcCB3b24ndCBvY2N1ci5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yMzE3XG4gIHJldHVybiAnI2RvY3VtZW50Jztcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKG5vZGUgPT0gbnVsbCB8fCAoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IHdpbmRvdztcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChub2RlKSB7XG4gIHZhciBfcmVmO1xuICByZXR1cm4gKF9yZWYgPSAoaXNOb2RlKG5vZGUpID8gbm9kZS5vd25lckRvY3VtZW50IDogbm9kZS5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3JlZi5kb2N1bWVudEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBOb2RlIHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3QodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSB8fCB0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2hhZG93Um9vdCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSAmJiAhWydpbmxpbmUnLCAnY29udGVudHMnXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1RvcExheWVyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsnOnBvcG92ZXItb3BlbicsICc6bW9kYWwnXS5zb21lKHNlbGVjdG9yID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50T3JDc3MpIHtcbiAgY29uc3Qgd2Via2l0ID0gaXNXZWJLaXQoKTtcbiAgY29uc3QgY3NzID0gaXNFbGVtZW50KGVsZW1lbnRPckNzcykgPyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnRPckNzcykgOiBlbGVtZW50T3JDc3M7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2Zvcm1zLTIvI2luZGl2aWR1YWwtdHJhbnNmb3Jtc1xuICByZXR1cm4gWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZSddLnNvbWUodmFsdWUgPT4gY3NzW3ZhbHVlXSA/IGNzc1t2YWx1ZV0gIT09ICdub25lJyA6IGZhbHNlKSB8fCAoY3NzLmNvbnRhaW5lclR5cGUgPyBjc3MuY29udGFpbmVyVHlwZSAhPT0gJ25vcm1hbCcgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJywgJ2ZpbHRlciddLnNvbWUodmFsdWUgPT4gKGNzcy53aWxsQ2hhbmdlIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpIHx8IFsncGFpbnQnLCAnbGF5b3V0JywgJ3N0cmljdCcsICdjb250ZW50J10uc29tZSh2YWx1ZSA9PiAoY3NzLmNvbnRhaW4gfHwgJycpLmluY2x1ZGVzKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBsZXQgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBpZiAoaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIGlmIChpc1RvcExheWVyKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBpc1dlYktpdCgpIHtcbiAgaWYgKHR5cGVvZiBDU1MgPT09ICd1bmRlZmluZWQnIHx8ICFDU1Muc3VwcG9ydHMpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIENTUy5zdXBwb3J0cygnLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXInLCAnbm9uZScpO1xufVxuZnVuY3Rpb24gaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKG5vZGUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpIHtcbiAgaWYgKGlzRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsWCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIGlmIChpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50ID8gbm9kZS5vd25lckRvY3VtZW50LmJvZHkgOiBub2RlLmJvZHk7XG4gIH1cbiAgaWYgKGlzSFRNTEVsZW1lbnQocGFyZW50Tm9kZSkgJiYgaXNPdmVyZmxvd0VsZW1lbnQocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IocGFyZW50Tm9kZSk7XG59XG5mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhub2RlLCBsaXN0LCB0cmF2ZXJzZUlmcmFtZXMpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQyO1xuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG4gIGlmICh0cmF2ZXJzZUlmcmFtZXMgPT09IHZvaWQgMCkge1xuICAgIHRyYXZlcnNlSWZyYW1lcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc2Nyb2xsYWJsZUFuY2VzdG9yID0gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSk7XG4gIGNvbnN0IGlzQm9keSA9IHNjcm9sbGFibGVBbmNlc3RvciA9PT0gKChfbm9kZSRvd25lckRvY3VtZW50MiA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQyLmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IGdldEZyYW1lRWxlbWVudCh3aW4pO1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdLCBmcmFtZUVsZW1lbnQgJiYgdHJhdmVyc2VJZnJhbWVzID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZnJhbWVFbGVtZW50KSA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IsIFtdLCB0cmF2ZXJzZUlmcmFtZXMpKTtcbn1cbmZ1bmN0aW9uIGdldEZyYW1lRWxlbWVudCh3aW4pIHtcbiAgcmV0dXJuIHdpbi5wYXJlbnQgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHdpbi5wYXJlbnQpID8gd2luLmZyYW1lRWxlbWVudCA6IG51bGw7XG59XG5cbmV4cG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGdldENvbnRhaW5pbmdCbG9jaywgZ2V0RG9jdW1lbnRFbGVtZW50LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yLCBnZXROb2RlTmFtZSwgZ2V0Tm9kZVNjcm9sbCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGdldFdpbmRvdywgaXNDb250YWluaW5nQmxvY2ssIGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc05vZGUsIGlzT3ZlcmZsb3dFbGVtZW50LCBpc1NoYWRvd1Jvb3QsIGlzVGFibGVFbGVtZW50LCBpc1RvcExheWVyLCBpc1dlYktpdCB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgZGV0ZWN0T3ZlcmZsb3cgYXMgZGV0ZWN0T3ZlcmZsb3ckMSwgb2Zmc2V0IGFzIG9mZnNldCQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgc2hpZnQgYXMgc2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBoaWRlIGFzIGhpZGUkMSwgYXJyb3cgYXMgYXJyb3ckMSwgaW5saW5lIGFzIGlubGluZSQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuaW1wb3J0IHsgcm91bmQsIGNyZWF0ZUNvb3JkcywgbWF4LCBtaW4sIGZsb29yIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmltcG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGlzSFRNTEVsZW1lbnQsIGlzRWxlbWVudCwgZ2V0V2luZG93LCBpc1dlYktpdCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROb2RlU2Nyb2xsLCBnZXREb2N1bWVudEVsZW1lbnQsIGlzVG9wTGF5ZXIsIGdldE5vZGVOYW1lLCBpc092ZXJmbG93RWxlbWVudCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNDb250YWluaW5nQmxvY2ssIGlzVGFibGVFbGVtZW50LCBnZXRDb250YWluaW5nQmxvY2sgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmV4cG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAvLyBJbiB0ZXN0aW5nIGVudmlyb25tZW50cywgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMgYXJlIGVtcHR5XG4gIC8vIHN0cmluZ3MgZm9yIFNWRyBlbGVtZW50cywgcmV0dXJuaW5nIE5hTi4gRmFsbGJhY2sgdG8gYDBgIGluIHRoaXMgY2FzZS5cbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJDogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBjcmVhdGVDb29yZHMoMSk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoJCA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoJCA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcblxuICAvLyAwLCBOYU4sIG9yIEluZmluaXR5IHNob3VsZCBhbHdheXMgZmFsbGJhY2sgdG8gMS5cblxuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuY29uc3Qgbm9PZmZzZXRzID0gLyojX19QVVJFX18qL2NyZWF0ZUNvb3JkcygwKTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNXZWJLaXQoKSB8fCAhd2luLnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgIHk6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3BcbiAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IGdldFdpbmRvdyhlbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNGaXhlZDtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkgPyBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDApO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50V2luID0gd2luO1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IGN1cnJlbnRXaW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBsZWZ0ID0gaWZyYW1lUmVjdC5sZWZ0ICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgY29uc3QgdG9wID0gaWZyYW1lUmVjdC50b3AgKyAoY3VycmVudElGcmFtZS5jbGllbnRUb3AgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nVG9wKSkgKiBpZnJhbWVTY2FsZS55O1xuICAgICAgeCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgeSAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgd2lkdGggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIGhlaWdodCAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgeCArPSBsZWZ0O1xuICAgICAgeSArPSB0b3A7XG4gICAgICBjdXJyZW50V2luID0gZ2V0V2luZG93KGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3Qoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfSk7XG59XG5cbi8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbi8vIGluY29ycmVjdCBmb3IgUlRMLlxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50LCByZWN0KSB7XG4gIGNvbnN0IGxlZnRTY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gIGlmICghcmVjdCkge1xuICAgIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgbGVmdFNjcm9sbDtcbiAgfVxuICByZXR1cm4gcmVjdC5sZWZ0ICsgbGVmdFNjcm9sbDtcbn1cblxuZnVuY3Rpb24gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgaWdub3JlU2Nyb2xsYmFyWCkge1xuICBpZiAoaWdub3JlU2Nyb2xsYmFyWCA9PT0gdm9pZCAwKSB7XG4gICAgaWdub3JlU2Nyb2xsYmFyWCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGh0bWxSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gaHRtbFJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gKGlnbm9yZVNjcm9sbGJhclggPyAwIDpcbiAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXIuXG4gIGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50LCBodG1sUmVjdCkpO1xuICBjb25zdCB5ID0gaHRtbFJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcDtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCB0b3BMYXllciA9IGVsZW1lbnRzID8gaXNUb3BMYXllcihlbGVtZW50cy5mbG9hdGluZykgOiBmYWxzZTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50IHx8IHRvcExheWVyICYmIGlzRml4ZWQpIHtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIHRydWUpIDogY3JlYXRlQ29vcmRzKDApO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54ICsgaHRtbE9mZnNldC54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueSArIGh0bWxPZmZzZXQueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0cyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKSk7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICBsZXQgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICBsZXQgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICBjb25zdCB2aXN1YWxWaWV3cG9ydEJhc2VkID0gaXNXZWJLaXQoKTtcbiAgICBpZiAoIXZpc3VhbFZpZXdwb3J0QmFzZWQgfHwgdmlzdWFsVmlld3BvcnRCYXNlZCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5uZXIgY2xpZW50IHJlY3QsIHN1YnRyYWN0aW5nIHNjcm9sbGJhcnMgaWYgcHJlc2VudC5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByZWN0ID0gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAnZG9jdW1lbnQnKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueSxcbiAgICAgIHdpZHRoOiBjbGlwcGluZ0FuY2VzdG9yLndpZHRoLFxuICAgICAgaGVpZ2h0OiBjbGlwcGluZ0FuY2VzdG9yLmhlaWdodFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnROb2RlKS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyB8fCBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IocGFyZW50Tm9kZSwgc3RvcE5vZGUpO1xufVxuXG4vLyBBIFwiY2xpcHBpbmcgYW5jZXN0b3JcIiBpcyBhbiBgb3ZlcmZsb3dgIGVsZW1lbnQgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIGNoaWxkIGVsZW1lbnRzLiBUaGlzIHJldHVybnMgYWxsIGNsaXBwaW5nIGFuY2VzdG9yc1xuLy8gb2YgdGhlIGdpdmVuIGVsZW1lbnQgdXAgdGhlIHRyZWUuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgY2FjaGUpIHtcbiAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGUuZ2V0KGVsZW1lbnQpO1xuICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudCwgW10sIGZhbHNlKS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgbGV0IGN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIDogZWxlbWVudDtcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICB3aGlsZSAoaXNFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTtcbiAgICBjb25zdCBjdXJyZW50Tm9kZUlzQ29udGFpbmluZyA9IGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKTtcbiAgICBpZiAoIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkRHJvcEN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIDogIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnICYmICEhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgJiYgWydhYnNvbHV0ZScsICdmaXhlZCddLmluY2x1ZGVzKGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlLnBvc2l0aW9uKSB8fCBpc092ZXJmbG93RWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBjdXJyZW50Tm9kZSk7XG4gICAgaWYgKHNob3VsZERyb3BDdXJyZW50Tm9kZSkge1xuICAgICAgLy8gRHJvcCBub24tY29udGFpbmluZyBibG9ja3MuXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGFuY2VzdG9yID0+IGFuY2VzdG9yICE9PSBjdXJyZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlY29yZCBsYXN0IGNvbnRhaW5pbmcgYmxvY2sgZm9yIG5leHQgaXRlcmF0aW9uLlxuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIGNhY2hlLnNldChlbGVtZW50LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBhbmNlc3RvcnMuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnQsXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nQW5jZXN0b3JzJyA/IGlzVG9wTGF5ZXIoZWxlbWVudCkgPyBbXSA6IGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCB0aGlzLl9jKSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIGNvbnN0IGNsaXBwaW5nQW5jZXN0b3JzID0gWy4uLmVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycywgcm9vdEJvdW5kYXJ5XTtcbiAgY29uc3QgZmlyc3RDbGlwcGluZ0FuY2VzdG9yID0gY2xpcHBpbmdBbmNlc3RvcnNbMF07XG4gIGNvbnN0IGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nQW5jZXN0b3JzLnJlZHVjZSgoYWNjUmVjdCwgY2xpcHBpbmdBbmNlc3RvcikgPT4ge1xuICAgIGNvbnN0IHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBmaXJzdENsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIGhlaWdodDogY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3AsXG4gICAgeDogY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgeTogY2xpcHBpbmdSZWN0LnRvcFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50KSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIDxib2R5PiBzY3JvbGxiYXIgYXBwZWFycyBvbiB0aGUgbGVmdCAoZS5nLiBSVEwgc3lzdGVtcykuIFVzZVxuICAgICAgLy8gRmlyZWZveCB3aXRoIGxheW91dC5zY3JvbGxiYXIuc2lkZSA9IDMgaW4gYWJvdXQ6Y29uZmlnIHRvIHRlc3QgdGhpcy5cbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgeCA9IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54IC0gaHRtbE9mZnNldC54O1xuICBjb25zdCB5ID0gcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55IC0gaHRtbE9mZnNldC55O1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJztcbn1cblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwb2x5ZmlsbCkge1xuICAgIHJldHVybiBwb2x5ZmlsbChlbGVtZW50KTtcbiAgfVxuICBsZXQgcmF3T2Zmc2V0UGFyZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG5cbiAgLy8gRmlyZWZveCByZXR1cm5zIHRoZSA8aHRtbD4gZWxlbWVudCBhcyB0aGUgb2Zmc2V0UGFyZW50IGlmIGl0J3Mgbm9uLXN0YXRpYyxcbiAgLy8gd2hpbGUgQ2hyb21lIGFuZCBTYWZhcmkgcmV0dXJuIHRoZSA8Ym9keT4gZWxlbWVudC4gVGhlIDxib2R5PiBlbGVtZW50IG11c3RcbiAgLy8gYmUgdXNlZCB0byBwZXJmb3JtIHRoZSBjb3JyZWN0IGNhbGN1bGF0aW9ucyBldmVuIGlmIHRoZSA8aHRtbD4gZWxlbWVudCBpc1xuICAvLyBub24tc3RhdGljLlxuICBpZiAoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpID09PSByYXdPZmZzZXRQYXJlbnQpIHtcbiAgICByYXdPZmZzZXRQYXJlbnQgPSByYXdPZmZzZXRQYXJlbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG4gIHJldHVybiByYXdPZmZzZXRQYXJlbnQ7XG59XG5cbi8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoaXNUb3BMYXllcihlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgbGV0IHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgd2hpbGUgKHN2Z09mZnNldFBhcmVudCAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoc3ZnT2Zmc2V0UGFyZW50KSAmJiAhaXNTdGF0aWNQb3NpdGlvbmVkKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgICAgcmV0dXJuIHN2Z09mZnNldFBhcmVudDtcbiAgICAgIH1cbiAgICAgIHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoc3ZnT2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBsZXQgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCk7XG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSkge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50LCBwb2x5ZmlsbCk7XG4gIH1cbiAgaWYgKG9mZnNldFBhcmVudCAmJiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luO1xufVxuXG5jb25zdCBnZXRFbGVtZW50UmVjdHMgPSBhc3luYyBmdW5jdGlvbiAoZGF0YSkge1xuICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgY29uc3QgZ2V0RGltZW5zaW9uc0ZuID0gdGhpcy5nZXREaW1lbnNpb25zO1xuICBjb25zdCBmbG9hdGluZ0RpbWVuc2lvbnMgPSBhd2FpdCBnZXREaW1lbnNpb25zRm4oZGF0YS5mbG9hdGluZyk7XG4gIHJldHVybiB7XG4gICAgcmVmZXJlbmNlOiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChkYXRhLnJlZmVyZW5jZSwgYXdhaXQgZ2V0T2Zmc2V0UGFyZW50Rm4oZGF0YS5mbG9hdGluZyksIGRhdGEuc3RyYXRlZ3kpLFxuICAgIGZsb2F0aW5nOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiBmbG9hdGluZ0RpbWVuc2lvbnMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGZsb2F0aW5nRGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBpc1JUTChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG59XG5cbmNvbnN0IHBsYXRmb3JtID0ge1xuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgZ2V0RG9jdW1lbnRFbGVtZW50LFxuICBnZXRDbGlwcGluZ1JlY3QsXG4gIGdldE9mZnNldFBhcmVudCxcbiAgZ2V0RWxlbWVudFJlY3RzLFxuICBnZXRDbGllbnRSZWN0cyxcbiAgZ2V0RGltZW5zaW9ucyxcbiAgZ2V0U2NhbGUsXG4gIGlzRWxlbWVudCxcbiAgaXNSVExcbn07XG5cbmZ1bmN0aW9uIHJlY3RzQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS54ID09PSBiLnggJiYgYS55ID09PSBiLnkgJiYgYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQ7XG59XG5cbi8vIGh0dHBzOi8vc2FtdGhvci5hdS8yMDIxL29ic2VydmluZy1kb20vXG5mdW5jdGlvbiBvYnNlcnZlTW92ZShlbGVtZW50LCBvbk1vdmUpIHtcbiAgbGV0IGlvID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgY29uc3Qgcm9vdCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICB2YXIgX2lvO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIChfaW8gPSBpbykgPT0gbnVsbCB8fCBfaW8uZGlzY29ubmVjdCgpO1xuICAgIGlvID0gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiByZWZyZXNoKHNraXAsIHRocmVzaG9sZCkge1xuICAgIGlmIChza2lwID09PSB2b2lkIDApIHtcbiAgICAgIHNraXAgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJlc2hvbGQgPSAxO1xuICAgIH1cbiAgICBjbGVhbnVwKCk7XG4gICAgY29uc3QgZWxlbWVudFJlY3RGb3JSb290TWFyZ2luID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudFJlY3RGb3JSb290TWFyZ2luO1xuICAgIGlmICghc2tpcCkge1xuICAgICAgb25Nb3ZlKCk7XG4gICAgfVxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnNldFRvcCA9IGZsb29yKHRvcCk7XG4gICAgY29uc3QgaW5zZXRSaWdodCA9IGZsb29yKHJvb3QuY2xpZW50V2lkdGggLSAobGVmdCArIHdpZHRoKSk7XG4gICAgY29uc3QgaW5zZXRCb3R0b20gPSBmbG9vcihyb290LmNsaWVudEhlaWdodCAtICh0b3AgKyBoZWlnaHQpKTtcbiAgICBjb25zdCBpbnNldExlZnQgPSBmbG9vcihsZWZ0KTtcbiAgICBjb25zdCByb290TWFyZ2luID0gLWluc2V0VG9wICsgXCJweCBcIiArIC1pbnNldFJpZ2h0ICsgXCJweCBcIiArIC1pbnNldEJvdHRvbSArIFwicHggXCIgKyAtaW5zZXRMZWZ0ICsgXCJweFwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkOiBtYXgoMCwgbWluKDEsIHRocmVzaG9sZCkpIHx8IDFcbiAgICB9O1xuICAgIGxldCBpc0ZpcnN0VXBkYXRlID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPYnNlcnZlKGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllc1swXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgY2xpcHBlZCwgdGhlIHJhdGlvIGlzIDAuIFRocm90dGxlIHRoZSByZWZyZXNoXG4gICAgICAgICAgLy8gdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIG9mIHVwZGF0ZXMuXG4gICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoKGZhbHNlLCAxZS03KTtcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyYXRpbyA9PT0gMSAmJiAhcmVjdHNBcmVFcXVhbChlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4sIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKSB7XG4gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBldmVuIHRob3VnaCB0aGUgcmF0aW8gaXMgcmVwb3J0ZWQgYXMgMSwgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaXMgbm90IGFjdHVhbGx5IGZ1bGx5IHdpdGhpbiB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIncyByb290XG4gICAgICAgIC8vIGFyZWEgYW55bW9yZS4gVGhpcyBjYW4gaGFwcGVuIHVuZGVyIHBlcmZvcm1hbmNlIGNvbnN0cmFpbnRzLiBUaGlzIG1heVxuICAgICAgICAvLyBiZSBhIGJ1ZyBpbiB0aGUgYnJvd3NlcidzIEludGVyc2VjdGlvbk9ic2VydmVyIGltcGxlbWVudGF0aW9uLiBUb1xuICAgICAgICAvLyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBjb21wYXJlIHRoZSBlbGVtZW50J3MgYm91bmRpbmcgcmVjdCBub3cgd2l0aFxuICAgICAgICAvLyB3aGF0IGl0IHdhcyBhdCB0aGUgdGltZSB3ZSBjcmVhdGVkIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlci4gSWYgdGhleVxuICAgICAgICAvLyBhcmUgbm90IGVxdWFsIHRoZW4gdGhlIGVsZW1lbnQgbW92ZWQsIHNvIHdlIHJlZnJlc2guXG4gICAgICAgIHJlZnJlc2goKTtcbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IGEgYGRvY3VtZW50YCBhcyB0aGUgcm9vdCBhbmQgd2lsbCB0aHJvdyBhblxuICAgIC8vIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKHJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKF9yZWYgPT4ge1xuICAgICAgbGV0IFtmaXJzdEVudHJ5XSA9IF9yZWY7XG4gICAgICBpZiAoZmlyc3RFbnRyeSAmJiBmaXJzdEVudHJ5LnRhcmdldCA9PT0gcmVmZXJlbmNlRWwgJiYgcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgLy8gUHJldmVudCB1cGRhdGUgbG9vcHMgd2hlbiB1c2luZyB0aGUgYHNpemVgIG1pZGRsZXdhcmUuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMTc0MFxuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmICFyZWN0c0FyZUVxdWFsKHByZXZSZWZSZWN0LCBuZXh0UmVmUmVjdCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IGFycm93IGFzIGFycm93JDEsIGNvbXB1dGVQb3NpdGlvbiB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGlzTm9kZSwgZ2V0Tm9kZU5hbWUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHVucmVmLCBjb21wdXRlZCwgcmVmLCBzaGFsbG93UmVmLCB3YXRjaCwgZ2V0Q3VycmVudFNjb3BlLCBvblNjb3BlRGlzcG9zZSwgc2hhbGxvd1JlYWRvbmx5IH0gZnJvbSAndnVlLWRlbWknO1xuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0ICE9IG51bGwgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgJyRlbCcgaW4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gdW53cmFwRWxlbWVudCh0YXJnZXQpIHtcbiAgaWYgKGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0YXJnZXQuJGVsO1xuICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICcjY29tbWVudCcgPyBudWxsIDogZWxlbWVudDtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiB0b1ZhbHVlKHNvdXJjZSkge1xuICByZXR1cm4gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZSgpIDogdW5yZWYoc291cmNlKTtcbn1cblxuLyoqXG4gKiBQb3NpdGlvbnMgYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgaXQgaXMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGFycm93IG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuZnVuY3Rpb24gYXJyb3cob3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhcnJvdycsXG4gICAgb3B0aW9ucyxcbiAgICBmbihhcmdzKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdW53cmFwRWxlbWVudCh0b1ZhbHVlKG9wdGlvbnMuZWxlbWVudCkpO1xuICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyb3ckMSh7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgfSkuZm4oYXJncyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50IG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmcgc3RyYXRlZ3kuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIGZsb2F0aW5nIFRoZSBmbG9hdGluZyB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgZmxvYXRpbmcgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92dWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID0gb3B0aW9ucy53aGlsZUVsZW1lbnRzTW91bnRlZDtcbiAgY29uc3Qgb3Blbk9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU7XG4gICAgcmV0dXJuIChfdG9WYWx1ZSA9IHRvVmFsdWUob3B0aW9ucy5vcGVuKSkgIT0gbnVsbCA/IF90b1ZhbHVlIDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0b1ZhbHVlKG9wdGlvbnMubWlkZGxld2FyZSkpO1xuICBjb25zdCBwbGFjZW1lbnRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMjtcbiAgICByZXR1cm4gKF90b1ZhbHVlMiA9IHRvVmFsdWUob3B0aW9ucy5wbGFjZW1lbnQpKSAhPSBudWxsID8gX3RvVmFsdWUyIDogJ2JvdHRvbSc7XG4gIH0pO1xuICBjb25zdCBzdHJhdGVneU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUzO1xuICAgIHJldHVybiAoX3RvVmFsdWUzID0gdG9WYWx1ZShvcHRpb25zLnN0cmF0ZWd5KSkgIT0gbnVsbCA/IF90b1ZhbHVlMyA6ICdhYnNvbHV0ZSc7XG4gIH0pO1xuICBjb25zdCB0cmFuc2Zvcm1PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlNDtcbiAgICByZXR1cm4gKF90b1ZhbHVlNCA9IHRvVmFsdWUob3B0aW9ucy50cmFuc2Zvcm0pKSAhPSBudWxsID8gX3RvVmFsdWU0IDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KHJlZmVyZW5jZS52YWx1ZSkpO1xuICBjb25zdCBmbG9hdGluZ0VsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KGZsb2F0aW5nLnZhbHVlKSk7XG4gIGNvbnN0IHggPSByZWYoMCk7XG4gIGNvbnN0IHkgPSByZWYoMCk7XG4gIGNvbnN0IHN0cmF0ZWd5ID0gcmVmKHN0cmF0ZWd5T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgcGxhY2VtZW50ID0gcmVmKHBsYWNlbWVudE9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVEYXRhID0gc2hhbGxvd1JlZih7fSk7XG4gIGNvbnN0IGlzUG9zaXRpb25lZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxTdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJ1xuICAgIH07XG4gICAgaWYgKCFmbG9hdGluZ0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHgudmFsdWUpO1xuICAgIGNvbnN0IHlWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeS52YWx1ZSk7XG4gICAgaWYgKHRyYW5zZm9ybU9wdGlvbi52YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0eWxlcyxcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIiArIHhWYWwgKyBcInB4LCBcIiArIHlWYWwgKyBcInB4KVwiLFxuICAgICAgICAuLi4oZ2V0RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSkgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6IHhWYWwgKyBcInB4XCIsXG4gICAgICB0b3A6IHlWYWwgKyBcInB4XCJcbiAgICB9O1xuICB9KTtcbiAgbGV0IHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cDtcbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlID09IG51bGwgfHwgZmxvYXRpbmdFbGVtZW50LnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3BlbiA9IG9wZW5PcHRpb24udmFsdWU7XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwge1xuICAgICAgbWlkZGxld2FyZTogbWlkZGxld2FyZU9wdGlvbi52YWx1ZSxcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50T3B0aW9uLnZhbHVlLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5T3B0aW9uLnZhbHVlXG4gICAgfSkudGhlbihwb3NpdGlvbiA9PiB7XG4gICAgICB4LnZhbHVlID0gcG9zaXRpb24ueDtcbiAgICAgIHkudmFsdWUgPSBwb3NpdGlvbi55O1xuICAgICAgc3RyYXRlZ3kudmFsdWUgPSBwb3NpdGlvbi5zdHJhdGVneTtcbiAgICAgIHBsYWNlbWVudC52YWx1ZSA9IHBvc2l0aW9uLnBsYWNlbWVudDtcbiAgICAgIG1pZGRsZXdhcmVEYXRhLnZhbHVlID0gcG9zaXRpb24ubWlkZGxld2FyZURhdGE7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBmbG9hdGluZyBlbGVtZW50J3MgcG9zaXRpb24gbWF5IGJlIHJlY29tcHV0ZWQgd2hpbGUgaXQncyBjbG9zZWRcbiAgICAgICAqIGJ1dCBzdGlsbCBtb3VudGVkIChzdWNoIGFzIHdoZW4gdHJhbnNpdGlvbmluZyBvdXQpLiBUbyBlbnN1cmVcbiAgICAgICAqIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAqIHNldHRpbmcgaXQgdG8gYHRydWVgIHdoZW4gYG9wZW4gPT09IGZhbHNlYCAobXVzdCBiZSBzcGVjaWZpZWQpLlxuICAgICAgICovXG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBvcGVuICE9PSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGlmICh0eXBlb2Ygd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAoKTtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXR0YWNoKCkge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlICE9IG51bGwgJiYgZmxvYXRpbmdFbGVtZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgdXBkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgaWYgKCFvcGVuT3B0aW9uLnZhbHVlKSB7XG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2F0Y2goW21pZGRsZXdhcmVPcHRpb24sIHBsYWNlbWVudE9wdGlvbiwgc3RyYXRlZ3lPcHRpb24sIG9wZW5PcHRpb25dLCB1cGRhdGUsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChbcmVmZXJlbmNlRWxlbWVudCwgZmxvYXRpbmdFbGVtZW50XSwgYXR0YWNoLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2gob3Blbk9wdGlvbiwgcmVzZXQsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICBpZiAoZ2V0Q3VycmVudFNjb3BlKCkpIHtcbiAgICBvblNjb3BlRGlzcG9zZShjbGVhbnVwKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNoYWxsb3dSZWFkb25seSh4KSxcbiAgICB5OiBzaGFsbG93UmVhZG9ubHkoeSksXG4gICAgc3RyYXRlZ3k6IHNoYWxsb3dSZWFkb25seShzdHJhdGVneSksXG4gICAgcGxhY2VtZW50OiBzaGFsbG93UmVhZG9ubHkocGxhY2VtZW50KSxcbiAgICBtaWRkbGV3YXJlRGF0YTogc2hhbGxvd1JlYWRvbmx5KG1pZGRsZXdhcmVEYXRhKSxcbiAgICBpc1Bvc2l0aW9uZWQ6IHNoYWxsb3dSZWFkb25seShpc1Bvc2l0aW9uZWQpLFxuICAgIGZsb2F0aW5nU3R5bGVzLFxuICAgIHVwZGF0ZVxuICB9O1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImV4cG9ydCBjb25zdCBpc0NsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCwgZWxlbWVudHM6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0YXJnZXRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gIHJldHVybiAhdGFyZ2V0cy5zb21lKChlbCkgPT4gZWwuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHBvcG92ZXIgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlcG9wb3Zlci0tZG9jcykgZm9yIFRpZGVQb3BvdmVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBvZmZzZXQgYXMgb2Zmc2V0TWlkZGxld2FyZSwgc2hpZnQsIHVzZUZsb2F0aW5nIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3Z1ZSc7XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBpc0NsaWNrT3V0c2lkZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2V2ZW50JztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBIVE1MIG5vZGUgb3ZlciB3aGljaCB0aGUgUG9wb3ZlciB3aWxsIGFwcGVhciAqL1xuICAgIGFuY2hvcklkOiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBzcGFjaW5nIGJldHdlZW4gUG9wb3ZlciBhbmQgYW5jaG9yIG5vZGUgKi9cbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgYW5jaG9yLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuYW5jaG9ySWQpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGlzVG9nZ2xlZE9wZW4udmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290KCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmFuY2hvcklkLFxuICAgICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gICAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgICB9XG4gICk7XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIG1pZGRsZXdhcmUudmFsdWUgPSBbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV07XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgcm9vdC52YWx1ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxUcmFuc2l0aW9uPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcG9wb3ZlcicsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJmbG9hdGluZ1wiXG4gICAgICAgIDpzdHlsZT1cInsgLi4uZmxvYXRpbmdTdHlsZXMgfVwiXG4gICAgICAgIHYtc2hvdz1cImlzU2hvd1BvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcG9wb3ZlciB7XG4gICAgbWF4LXdpZHRoOiAyNTZweDtcbiAgfVxuICAudi1lbnRlci1mcm9tLFxuICAudi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAudi1lbnRlci1hY3RpdmUsXG4gIC52LWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSByYXRpbmcgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYW5kIHNlbGVjdGluZyBhIHJhdGluZy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXJhdGluZy0tZG9jcykgZm9yIFRpZGVSYXRpbmdcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdGV4dCBkaXNwbGF5ZWQgYmVsb3cgdGhlIHRpdGxlICovXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKiogTWF4aW11bSByYXRpbmcgdmFsdWUgLyBOdW1iZXIgb2Ygc2VnbWVudHMgKi9cbiAgICBtYXhSYXRpbmc/OiBudW1iZXI7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGN1cnJlbnQgcmF0aW5nIHZhbHVlICovXG4gICAgc2hvd1JhdGluZz86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdGl0bGUgdGV4dCBkaXNwbGF5ZWQgYWJvdmUgdGhlIHJhdGluZyBjb21wb25lbnQgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgbWF4UmF0aW5nOiAxMCxcbiAgICBzaG93UmF0aW5nOiBmYWxzZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCByYXRpbmdWYWx1ZSA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBzZWdtZW50cyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHByb3BzLm1heFJhdGluZyB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKHNlZ21lbnQ6IG51bWJlcikgPT4ge1xuICAgIHJhdGluZ1ZhbHVlLnZhbHVlID0gc2VnbWVudDtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLXJhdGluZycsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgIDxzZWN0aW9uIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEZdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJdXCI+XG4gICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5zaG93UmF0aW5nXCJcbiAgICAgID5cbiAgICAgICAge3sgcmF0aW5nVmFsdWUgfX0ve3sgcHJvcHMubWF4UmF0aW5nIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMiwgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTiwgQ1NTLkVMTElQU0lTXVwiXG4gICAgICB2LWlmPVwicHJvcHMuZGVzY3JpcHRpb25cIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmRlc2NyaXB0aW9uIH19XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gOmNsYXNzPVwiWyd0aWRlLXJhdGluZy1iYXInLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLlFVQVJURVIsIENTUy5GTEVYLkdST1cuT04sIENTUy5GTEVYLlNIUklOSy5PTl1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXJhdGluZy1zZWdtZW50JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICAgICAgICAgIENTUy5GTEVYLkJBU0lTLlpFUk8sXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLlpFUk8sXG4gICAgICAgICAgc2VnbWVudCA9PT0gMSAmJiBbJ3RpZGUtcmF0aW5nLXNlZ21lbnQtZmlyc3QnXSxcbiAgICAgICAgICBzZWdtZW50ID09PSBzZWdtZW50cy5sZW5ndGggJiYgWyd0aWRlLXJhdGluZy1zZWdtZW50LWxhc3QnXSxcbiAgICAgICAgICBzZWdtZW50IDw9IHJhdGluZ1ZhbHVlICYmIFtDU1MuQkcuU1VSRkFDRS5HUkFESUVOVF0sXG4gICAgICAgIF1cIlxuICAgICAgICA6a2V5PVwic2VnbWVudFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHNlZ21lbnQpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwic2VnbWVudCBpbiBzZWdtZW50c1wiXG4gICAgICAvPlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1yYXRpbmctYmFyIHtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudCB7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEyJSAwLCAxMDAlIDAsIDg4JSAxMDAlLCAwIDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQtZmlyc3Qge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDk5OTlweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA5OTk5cHg7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMTAwJSAwLCA4OCUgMTAwJSwgMCAxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50LWxhc3Qge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA5OTk5cHg7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDk5OTlweDtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTIlIDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgU0laRV9MT0dPID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgTUFSSzogJ21hcmsnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG50eXBlIFNpemVMb2dvS2V5ID0ga2V5b2YgdHlwZW9mIFNJWkVfTE9HTztcbmV4cG9ydCB0eXBlIFNpemVMb2dvID0gKHR5cGVvZiBTSVpFX0xPR08pW1NpemVMb2dvS2V5XTtcblxuZXhwb3J0IGNvbnN0IExPR09fSEVJR0hUID0ge1xuICBMQVJHRTogMzIsXG4gIFNNQUxMOiAyNCxcbn07XG5cbmV4cG9ydCBjb25zdCBMT0dPX0xBUkdFX1dJRFRIOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDE4NixcbiAgQVRWOiAxOTIsXG4gIEJPQVRNQVJUOiAxNTIsXG4gIENZQ0xFOiAxNjksXG4gIEVRVUlQTUVOVDogMTEyLFxuICBQV0M6IDE3NyxcbiAgUlY6IDE2OSxcbiAgU05PVzogMTUwLFxuICBUUlVDSzogMTg1LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IExPR09fTUFSS19XSURUSDogUmVjb3JkPFJlYWxtS2V5LCBudW1iZXI+ID0ge1xuICBBRVJPOiAzMixcbiAgQVRWOiAzMixcbiAgQk9BVE1BUlQ6IDMzLFxuICBDWUNMRTogMzIsXG4gIEVRVUlQTUVOVDogMzcsXG4gIFBXQzogMzIsXG4gIFJWOiAzMixcbiAgU05PVzogMzIsXG4gIFRSVUNLOiAzMixcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5pbXBvcnQgdHlwZSB7IFJlYWxtLCBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gPSAocmVhbG06IFJlYWxtKTogUmVhbG1LZXkgPT4ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoUkVBTE0pIGFzIFtSZWFsbUtleSwgUmVhbG1dW107XG5cbiAgY29uc3QgbWF0Y2ggPSBlbnRyaWVzLmZpbmQoKGVudHJ5KTogZW50cnkgaXMgW1JlYWxtS2V5LCBSZWFsbV0gPT4ge1xuICAgIHJldHVybiBlbnRyeVsxXSA9PT0gcmVhbG07XG4gIH0pO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1hcHBpbmcgZm9yICR7cmVhbG19IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoWzBdO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcmVhbG0gbG9nbyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhIHJlYWxtJ3MgbG9nby5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXJlYWxtbG9nby0tZG9jcykgZm9yIFRpZGVSZWFsbUxvZ29cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgTE9HT19IRUlHSFQsIExPR09fTEFSR0VfV0lEVEgsIExPR09fTUFSS19XSURUSCwgU0laRV9MT0dPIH0gZnJvbSAnQC90eXBlcy9SZWFsbUxvZ28nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldFJlYWxtS2V5RnJvbVJlYWxtIH0gZnJvbSAnQC91dGlsaXRpZXMvcmVhbG0nO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVhbG0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplTG9nbyB9IGZyb20gJ0AvdHlwZXMvUmVhbG1Mb2dvJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIHNpemUgb2YgdGhlIGxvZ28gb3IgbWFyayAqL1xuICAgIHNpemU6IFNpemVMb2dvO1xuXG4gICAgLyoqIFNldHMgdGhlIHJlYWxtIGZvciB0aGlzIGxvZ28gaW5zdGFuY2UgKi9cbiAgICByZWFsbTogUmVhbG07XG4gIH07XG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIGNvbnN0IGxvZ29XaWR0aCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIGlmIChwcm9wcy5zaXplID09PSBTSVpFX0xPR08uTUFSSykgcmV0dXJuIExPR09fTUFSS19XSURUSFtnZXRSZWFsbUtleUZyb21SZWFsbShwcm9wcy5yZWFsbSldO1xuICAgIGNvbnN0IGZ1bGxMb2dvV2lkdGggPSBMT0dPX0xBUkdFX1dJRFRIW2dldFJlYWxtS2V5RnJvbVJlYWxtKHByb3BzLnJlYWxtKV07XG4gICAgaWYgKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5TTUFMTCkge1xuICAgICAgY29uc3Qgc2hyaW5rRmFjdG9yID0gTE9HT19IRUlHSFQuU01BTEwgLyBMT0dPX0hFSUdIVC5MQVJHRTtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKGZ1bGxMb2dvV2lkdGggKiBzaHJpbmtGYWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZnVsbExvZ29XaWR0aDtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGxvZ29IZWlnaHQgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IChwcm9wcy5zaXplID09PSBTSVpFX0xPR08uU01BTEwgPyBMT0dPX0hFSUdIVC5TTUFMTCA6IExPR09fSEVJR0hULkxBUkdFKSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gW3Byb3BzLnNpemUsIHByb3BzLnJlYWxtXSxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVBc3luY0NvbXBvbmVudCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zaXplID09PSBTSVpFX0xPR08uTUFSSylcbiAgICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL21hcmsvbWFyay0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIGVsc2UgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9icmFuZGluZy9sb2dvL2xvZ28tJHtwcm9wcy5yZWFsbX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgfSk7XG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcmVhbG0tbG9nbyddXCJcbiAgICA6c3R5bGU9XCJ7XG4gICAgICAnLS10aWRlLWxvZ28td2lkdGgnOiBgJHtsb2dvV2lkdGh9cHhgLFxuICAgICAgJy0tdGlkZS1sb2dvLWhlaWdodCc6IGAke2xvZ29IZWlnaHR9cHhgLFxuICAgIH1cIlxuICA+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1yZWFsbS1sb2dvIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1sb2dvLXdpZHRoKTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtbG9nby1oZWlnaHQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBMaW5rIH0gZnJvbSAnQC90eXBlcy9MaW5rJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gICAgbGlua3M6IExpbmtbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1zZW8tbGlua3NcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zZW8tbGluaycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCJcbiAgICAgICAgOmtleT1cImxpbmsubGFiZWxcIlxuICAgICAgICB2LWZvcj1cImxpbmsgaW4gcHJvcHMubGlua3NcIlxuICAgICAgPlxuICAgICAgICA8SW50ZXJuYWxCYXNlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXVwiXG4gICAgICAgICAgOmhyZWY9XCJsaW5rLnVybFwiXG4gICAgICAgICAgOnRhcmdldD1cImxpbmsuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgIDwvSW50ZXJuYWxCYXNlTGluaz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogVE9ETzogUmVmYWN0b3IgdG8gYWNjZXB0IGJyZWFrcG9pbnQgcHJvcCBpbiBvcmRlciB0byBhY2NvbXBsaXNoIHRoaXMgd2l0aCBuZWl0aGVyIGN1c3RvbSBicmVha3BvaW50cyBub3IgZGVwZW5kZW5jeSBvbiBWaWV3cG9ydFN0b3JlLiAqL1xuICAudGlkZS1zZW8tbGluayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHNoZWV0IGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGNvbnRlbnQgaW4gYSBtb2RhbC1saWtlIG1lbnUgb3ZlcmxheSBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgc2NyZWVuLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlc2hlZXQtLWRvY3MpIGZvciBUaWRlU2hlZXRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uQmVmb3JlTW91bnQsIG9uQmVmb3JlVW5tb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDb250cm9scyBkaXNwbGF5IG9mIHRoZSBiYWNrIGJ1dHRvbi4gKi9cbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICB9O1xuXG4gIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGRpYWxvZ0VsZW1lbnQ6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IGlzT3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uc2hvd01vZGFsKCk7XG4gICAgc2V0U2Nyb2xsTG9jayh0cnVlKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uY2xvc2UoKTtcbiAgICBzZXRTY3JvbGxMb2NrKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBjbG9zZSA9ICgpID0+IHtcbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBjbG9zZSgpO1xuICB9O1xuXG4gIHdhdGNoKGlzT3BlbiwgKCkgPT4ge1xuICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGlhbG9nXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2hlZXQnLCBDU1MuQkcuSU5JVElBTCwgQ1NTLkhFSUdIVC5GVUxMLCBDU1MuV0lEVEguRlVMTCwgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTl1cIlxuICAgICAgcmVmPVwiZGlhbG9nRWxlbWVudFwiXG4gICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgICAgQGNsb3NlLnByZXZlbnRcbiAgICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXNoZWV0LWJvZHknLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPGhlYWRlclxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5UT1AuT05FLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJjbG9zZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPFRpZGVEaXZpZGVyIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXNoZWV0LWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc2hlZXQge1xuICAgIC0tc2hlZXQtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMSk7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBqdXN0aWZ5LWl0ZW1zOiByaWdodDtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtYm9keSB7XG4gICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDB2dyAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSksIDMxMXB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tc2hlZXQtcGFkZGluZy14KSB2YXIoLS10aWRlLXNhZmUtZnIpIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHN3aXRjaCBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdG9nZ2xpbmcgYSBib29sZWFuIHZhbHVlLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlc3dpdGNoLS1kb2NzKSBmb3IgVGlkZVN3aXRjaFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIGNsaWNrYWJpbGl0eSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGlzQWN0aXZlLnZhbHVlID0gIWlzQWN0aXZlLnZhbHVlO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1zd2l0Y2gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgQ1NTLkZMRVguR1JPVy5PRkYsXG4gICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNFQ09OREFSWV0gOiBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxUXSxcbiAgICAgIGRpc2FibGVkICYmIFtDU1MuT1BBQ0lUWS5ESVNBQkxFRF0sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgaXNBY3RpdmUgPyBbJ2FjdGl2ZScsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdIDogW0NTUy5CRy5TRUNPTkRBUlldLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXN3aXRjaCB7XG4gICAgLS1zd2l0Y2gtaW5kaWNhdG9yLXNpemU6IDI0cHg7XG4gICAgLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbjogdmFyKC0tdGlkZS1zcGFjaW5nLTFcXC80KTtcbiAgICAtLXN3aXRjaC1ib3JkZXItd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIC0tc3dpdGNoLXdpZHRoOiBjYWxjKHZhcigtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZSkgKiAyICsgdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pICogNCk7XG4gICAgLS1zd2l0Y2gtaGVpZ2h0OiBjYWxjKHZhcigtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZSkgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiAyKTtcblxuICAgIHdpZHRoOiB2YXIoLS1zd2l0Y2gtd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tc3dpdGNoLWhlaWdodCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3IuYWN0aXZlIHtcbiAgICBsZWZ0OiBjYWxjKFxuICAgICAgdmFyKC0tc3dpdGNoLXdpZHRoKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZSkgLSB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgLSB2YXIoLS1zd2l0Y2gtYm9yZGVyLXdpZHRoKVxuICAgICk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRhYnMgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGV0YWJzLS1kb2NzKSBmb3IgVGlkZVRhYnNcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlQ2Fyb3VzZWwgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVDYXJvdXNlbC52dWUnO1xuICBpbXBvcnQgVGlkZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogU2V0cyBsYWJlbHMgYW5kIGNhbGxiYWNrIGZvciBlYWNoIHRhYiAqL1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGN1cnJlbnRUYWIgPSBkZWZpbmVNb2RlbDxudW1iZXI+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGN1cnJlbnRUYWIudmFsdWUgPSBpbmRleDtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLXRhYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQk9SREVSLkJPVFRPTS5UV08sIENTUy5CT1JERVIuQ09MT1IuTE9XXVwiPlxuICAgIDxUaWRlQ2Fyb3VzZWwgOmlzLWZsb2F0aW5nPVwidHJ1ZVwiPlxuICAgICAgPGxpXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5YLkhBTEZdXCJcbiAgICAgICAgOmtleT1cInRhYi5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHRhYnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUxpbmtcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBpbmRleCA9PT0gY3VycmVudFRhYiA/IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkJSQU5EXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLk9ORSxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDplbGVtZW50PVwiRUxFTUVOVC5CVVRUT05cIlxuICAgICAgICAgIDpsYWJlbD1cInRhYi5sYWJlbFwiXG4gICAgICAgICAgOnN1YnRsZT1cInRydWVcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKGluZGV4KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgOmNsYXNzPVwiWydyb3VuZGVkLWJvcmRlcicsIENTUy5NQVJHSU4uWC5IQUxGLCBpbmRleCA9PT0gY3VycmVudFRhYiAmJiBbQ1NTLkJHLlBSSU1BUlldXVwiIC8+XG4gICAgICA8L2xpPlxuICAgIDwvVGlkZUNhcm91c2VsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5yb3VuZGVkLWJvcmRlciB7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tdGlkZS1yYWRpdXMtZnVsbCkgdmFyKC0tdGlkZS1yYWRpdXMtZnVsbCkgMCAwO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgaW5qZWN0LCBwcm92aWRlLCByZWFkb25seSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBUaWRlVG9hc3QsIFRpZGVUb2FzdE9taXRJZCwgVGlkZVRvYXN0ZXIgfSBmcm9tICdAL3R5cGVzL1RvYXN0JztcblxuY29uc3QgVE9BU1RFUl9LRVkgPSBTeW1ib2woJ3RpZGUtdG9hc3RlcicpO1xuXG5jb25zdCBBVVRPX0RJU01JU1NfRFVSQVRJT05fTVMgPSB7XG4gIEFDVElPTkFCTEU6IDEwMDAwLFxuICBJTkZPUk1BVElPTkFMOiA1MDAwLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IHVzZVRpZGVUb2FzdGVyID0gKCkgPT4ge1xuICBjb25zdCBpbmplY3RlZCA9IGluamVjdDxUaWRlVG9hc3Rlcj4oVE9BU1RFUl9LRVkpO1xuICBpZiAoaW5qZWN0ZWQpIHJldHVybiBpbmplY3RlZDtcblxuICBjb25zdCB0aW1lb3V0SWQgPSByZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKTtcbiAgY29uc3QgdG9hc3RzID0gcmVmPFRpZGVUb2FzdFtdPihbXSk7XG4gIGNvbnN0IGlkID0gcmVmPG51bWJlcj4oMCk7XG5cbiAgY29uc3QgYWRkVG9hc3QgPSAobmV3VG9hc3Q6IFRpZGVUb2FzdE9taXRJZCkgPT4ge1xuICAgIGlkLnZhbHVlKys7XG4gICAgY2xlYXJUb2FzdHMoKTtcblxuICAgIHRvYXN0cy52YWx1ZS5wdXNoKHtcbiAgICAgIC4uLm5ld1RvYXN0LFxuICAgICAgaWQ6IGB0aWRlLXRvYXN0LSR7aWQudmFsdWV9YCxcbiAgICB9IGFzIFRpZGVUb2FzdCk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNhbmNlbEF1dG9EaXNtaXNzKCk7XG4gICAgICBzdGFydEF1dG9EaXNtaXNzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsZWFyVG9hc3RzID0gKCkgPT4ge1xuICAgIHRvYXN0cy52YWx1ZSA9IFtdO1xuICB9O1xuXG4gIGNvbnN0IGNhbmNlbEF1dG9EaXNtaXNzID0gKCkgPT4ge1xuICAgIGlmICh0aW1lb3V0SWQudmFsdWUpIGNsZWFyVGltZW91dCh0aW1lb3V0SWQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IHN0YXJ0QXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKCF0b2FzdHMudmFsdWUubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBhdXRvRGlzbWlzc0R1cmF0aW9uID0gdG9hc3RzLnZhbHVlWzBdLmFjdGlvblxuICAgICAgPyBBVVRPX0RJU01JU1NfRFVSQVRJT05fTVMuQUNUSU9OQUJMRVxuICAgICAgOiBBVVRPX0RJU01JU1NfRFVSQVRJT05fTVMuSU5GT1JNQVRJT05BTDtcbiAgICB0aW1lb3V0SWQudmFsdWUgPSBzZXRUaW1lb3V0KGNsZWFyVG9hc3RzLCBhdXRvRGlzbWlzc0R1cmF0aW9uKTtcbiAgfTtcblxuICBjb25zdCB0b2FzdGVyOiBUaWRlVG9hc3RlciA9IHtcbiAgICBhZGRUb2FzdCxcbiAgICBjYW5jZWxBdXRvRGlzbWlzcyxcbiAgICBjbGVhclRvYXN0cyxcbiAgICBzdGFydEF1dG9EaXNtaXNzLFxuICAgIHRvYXN0czogcmVhZG9ubHkodG9hc3RzKSxcbiAgfTtcblxuICBwcm92aWRlKFRPQVNURVJfS0VZLCB0b2FzdGVyKTtcblxuICByZXR1cm4gdG9hc3Rlcjtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRvYXN0ZXIgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRvYXN0ZXItLWRvY3MpIGZvciBUaWRlVG9hc3RlclxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVBbGVydCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUFsZXJ0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZVRpZGVUb2FzdGVyIH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlVG9hc3Rlcic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGNvbnN0IHsgdG9hc3RzLCBjbGVhclRvYXN0cywgY2FuY2VsQXV0b0Rpc21pc3MsIHN0YXJ0QXV0b0Rpc21pc3MgfSA9IHVzZVRpZGVUb2FzdGVyKCk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXRvYXN0ZXInLFxuICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRyYW5zaXRpb25Hcm91cCBuYW1lPVwicG9wXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS10b2FzdC13cmFwJyxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5SSUdIVCxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5UT1AsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkZVTEwuT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILlNUUkVUQ0gsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmtleT1cInRvYXN0LmlkXCJcbiAgICAgICAgICBAbW91c2VlbnRlcj1cImNhbmNlbEF1dG9EaXNtaXNzXCJcbiAgICAgICAgICBAbW91c2VsZWF2ZT1cInN0YXJ0QXV0b0Rpc21pc3NcIlxuICAgICAgICAgIHYtZm9yPVwidG9hc3QgaW4gdG9hc3RzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQWxlcnRcbiAgICAgICAgICAgIDpjdGEtbGFiZWw9XCJ0b2FzdC5hY3Rpb24/LmxhYmVsXCJcbiAgICAgICAgICAgIDpoZWFkaW5nPVwidG9hc3QuaGVhZGluZ1wiXG4gICAgICAgICAgICA6c3R5bGU9XCJ7ICctLXRpZGUtbWF4LXdpZHRoJzogJ25vbmUnIH1cIlxuICAgICAgICAgICAgQGNsb3NlPVwiY2xlYXJUb2FzdHNcIlxuICAgICAgICAgICAgQGN0YS1jbGljaz1cInRvYXN0Py5hY3Rpb24/LmNhbGxiYWNrXCJcbiAgICAgICAgICAgIGlzLWRpc21pc3NpYmxlXG4gICAgICAgICAgICBpcy10b2FzdFxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRvYXN0LmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9UaWRlQWxlcnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9UcmFuc2l0aW9uR3JvdXA+XG4gICAgPC9kaXY+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAucG9wLWVudGVyLWFjdGl2ZSxcbiAgLnBvcC1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdHJhbnNmb3JtLCB0cmFuc2xhdGU7XG4gIH1cblxuICAucG9wLWVudGVyLWZyb20ge1xuICAgIHRyYW5zbGF0ZTogMTAwJSAwO1xuICB9XG5cbiAgLnBvcC1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB6LWluZGV4OiAwICFpbXBvcnRhbnQ7XG4gIH1cblxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtdG9hc3Qtd3JhcCB7XG4gICAgICB3aWR0aDogNDAwcHg7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbIk9SSUVOVEFUSU9OIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJfX2RlZmF1bHRfXyIsInByb3BzIiwiX19wcm9wcyIsIl9vcGVuQmxvY2siLCJfY3JlYXRlRWxlbWVudEJsb2NrIiwiX2hvaXN0ZWRfMSIsIl9jcmVhdGVFbGVtZW50Vk5vZGUiLCJfbm9ybWFsaXplQ2xhc3MiLCJfdW5yZWYiLCJSRUFMTSIsIlNJWkUiLCJTSVpFX0JVVFRPTiIsImZvcm1hdE51bWJlciIsImlucHV0Iiwib3V0cHV0IiwiZGlnaXRzIiwiZm9ybWF0UGFzY2FsQ2FzZSIsIndvcmQiLCJmb3JtYXRQaG9uZSIsImZvcm1hdFByaWNlIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsImlkIiwibmFtZSIsInByZWZpeCIsInJlYWxtRm9sZGVyIiwiY29tcG9uZW50IiwiZGVmaW5lQXN5bmNDb21wb25lbnQiLCJfX3ZhcmlhYmxlRHluYW1pY0ltcG9ydFJ1bnRpbWVIZWxwZXIiLCJtYXJrUmF3IiwiX2NyZWF0ZUJsb2NrIiwiX3Jlc29sdmVEeW5hbWljQ29tcG9uZW50IiwiSUNPTiIsIklDT05fUkVBTE0iLCJpc0V4cGFuZGVkIiwiX3VzZU1vZGVsIiwiaGFuZGxlVG9nZ2xlQ2xpY2siLCJuZXdWYWx1ZSIsIlRpZGVEaXZpZGVyIiwiX2NyZWF0ZVZOb2RlIiwiVGlkZUljb24iLCJfcmVuZGVyU2xvdCIsIl9jdHgiLCJFTEVNRU5UIiwiRUxFTUVOVF9CUk9BRCIsInRpZGVDb25maWdEZWZhdWx0cyIsIkNPTkZJR19LRVkiLCJwcm92aWRlVGlkZUNvbmZpZyIsImNvbmZpZyIsImNvbmZpZ1dpdGhEZWZhdWx0cyIsInByb3ZpZGUiLCJ1c2VUaWRlQ29uZmlnIiwiaW5qZWN0IiwibGlua0NvbXBvbmVudCIsIlBSSU9SSVRZIiwiVEFSR0VUIiwidHlwZUF0dHJpYnV0ZSIsImNvbXB1dGVkIiwicm9vdEVsZW1lbnQiLCJJbnRlcm5hbEJhc2VMaW5rIiwiX3RvRGlzcGxheVN0cmluZyIsIkFMRVJUIiwiZW1pdCIsIl9fZW1pdCIsInNsb3RzIiwidXNlU2xvdHMiLCJoYXNCb2R5Iiwibm9kZXMiLCJfYSIsIm5vZGUiLCJDb21tZW50IiwiaWNvblR5cGUiLCJUaWRlTGluayIsIlRpZGVCdXR0b25JY29uIiwiQkFER0VfQ09MT1IiLCJCQURHRV9DT0xPUl9ERVRBSUxTIiwiQkFER0VfVFJVU1RFRCIsIl9GcmFnbWVudCIsImNydW1iIiwiaW5kZXgiLCJfY3JlYXRlVGV4dFZOb2RlIiwiX2hvaXN0ZWRfMiIsImlzVG91Y2hlZCIsImlzU2F2ZWQiLCJfY2FjaGUiLCIkZXZlbnQiLCJjdXJyZW50SW5kZXgiLCJ1bmlxdWVJZCIsInVzZUlkIiwiaW5wdXRGb3JtQXR0cmlidXRlIiwiaW5wdXROYW1lQXR0cmlidXRlIiwiX3JlbmRlckxpc3QiLCJ0YWIiLCJUWVBFX0NBUkQiLCJjYXJvdXNlbFJlZiIsImNvbnRhaW5lclJlZiIsImNvbnRlbnRXaWR0aCIsImN1cnJlbnRQYWdlSW5kZXgiLCJkb3RzUmVmIiwiZnJhbWVXaWR0aCIsImlzRmlyc3RTbGlkZSIsImlzTGFzdFNsaWRlIiwic2hvd0J1dHRvbnMiLCJzbGlkZU9ic2VydmVyIiwic2xpZGVzIiwic2xpZGVzSW5WaWV3Iiwic2xvdE9ic2VydmVyIiwidG91Y2hTdGFydCIsInNsaWRlc0luVmlld0NvdW50IiwiY3VycmVudFBhZ2UiLCJkb3RDb250YWluZXJXaWR0aCIsImRvdENvdW50VmlzaWJsZSIsImRvdFdpZHRoIiwiZG90R2FwIiwidG90YWxQYWdlcyIsInF1b3RpZW50Iiwic2Nyb2xsVGltZW91dCIsImdldERvdENsYXNzIiwiZG90SW5kZXgiLCJjbGFzc05hbWUiLCJnZXRJc0VsZW1lbnRXaXRoaW5Db250YWluZXIiLCJlbGVtZW50IiwiY29udGFpbmVyIiwiY29udGFpbmVyUmVjdCIsImNvbnRhaW5lclJpZ2h0IiwiZWxlbWVudFJlY3QiLCJoYW5kbGVUb3VjaEVuZCIsImV2ZW50IiwidG91Y2hFbmQiLCJkZWx0YVgiLCJkZWx0YVkiLCJzY3JvbGxCeURlbHRhIiwiaGFuZGxlVG91Y2hTdGFydCIsImhhbmRsZVdoZWVsIiwiaXNTaGlmdEtleURvd24iLCJpc1doZWVsIiwib2Zmc2V0Iiwic2Nyb2xsVG9PZmZzZXQiLCJtZWFzdXJlRG9tIiwic2xpZGUiLCJvYnNlcnZlU2xpZGVzIiwib3B0aW9ucyIsImVudHJpZXMiLCJzbGlkZXNBZGRlZFRvVmlldyIsImVudHJ5Iiwic2xpZGVJbmRleCIsImEiLCJiIiwiY2hpbGQiLCJvYnNlcnZlU2xvdCIsIm9ic2VydmVyQ2FsbGJhY2siLCJkZWx0YSIsInNob3dQcmV2aW91c1BhZ2UiLCJzaG93UHJldmlvdXNTbGlkZSIsInNob3dOZXh0UGFnZSIsInNob3dOZXh0U2xpZGUiLCJ0YXJnZXQiLCJpc1Njcm9sbGluZ0xlZnQiLCJ1cGRhdGVEb3RzIiwibmV4dFNsaWRlIiwicHJldmlvdXNTbGlkZSIsImNlbnRlckRvdCIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwiX2IiLCJfbm9ybWFsaXplU3R5bGUiLCJfIiwiaXNBY3RpdmUiLCJoYW5kbGVDbGljayIsIl9ob2lzdGVkXzMiLCJfaG9pc3RlZF80IiwiX2hvaXN0ZWRfNSIsIkZPUk1fS0VZIiwidXNlVGlkZUZvcm0iLCJmb3JjZVNob3dFcnJvcnMiLCJ1c2VGb3JtQ29udGV4dCIsInJldmVhbFZhbGlkYXRpb25FcnJvcnMiLCJoYW5kbGVTdWJtaXQiLCJlIiwiT0JKRUNUX0ZJVCIsInBpY3R1cmUiLCJpbWciLCJpbWFnZURlZmF1bHQiLCJvYmplY3RGaXRDbGFzc05hbWUiLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsInNvdXJjZXMiLCJzb3VyY2UiLCJfYyIsIlRpZGVJbWFnZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJWQUxJREFUSU9OX1JFU1VMVCIsImNoZWNrRm9ybWF0IiwiZm9ybWF0IiwibWVzc2FnZSIsInZhbHVlIiwicmVzdWx0IiwiZ2V0RmllbGRMZW5ndGhJc1ZhbGlkIiwibWF4bGVuZ3RoIiwibWlubGVuZ3RoIiwicmVxdWlyZWQiLCJpc0VtcHR5QW5kVW5yZXF1aXJlZCIsImlzVG9vTG9uZyIsImdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCIsImVycm9yRnJvbVByb3BzIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RoVmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJtb2RlbFZhbHVlIiwiZm9ybUNvbnRleHQiLCJpc1ZhbGlkYXRpbmciLCJlcnJvclJlZiIsImZvcm1hdHRlZExhYmVsIiwiaXNDaGVja2VkIiwic2hvd0Vycm9yIiwiaGFzRXJyb3JGcm9tUHJvcCIsInN1cHBvcnRpbmdUZXh0TWVzc2FnZSIsImdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCIsIndhdGNoRWZmZWN0IiwiVGlkZUlucHV0U3VwcG9ydGluZ1RleHQiLCJjaGVja2VkIiwib2xkVmFsdWUiLCJGT1JNQVQiLCJGT1JNQVRfUkVHRVgiLCJWQUxJREFUT1IiLCJFUlJPUl9ESVNQTEFZIiwiaGFzRm9jdXMiLCJpbnB1dElkIiwic2VsZWN0RWxlbWVudCIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIm9wdGdyb3VwIiwib3B0aW9uIiwiX2hvaXN0ZWRfNiIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsImVycm9yTWVzc2FnZSIsImhhc0Vycm9yIiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJJTlBVVF9NT0RFIiwiZ2V0VGV4dElucHV0TW9kZSIsInR5cGUiLCJpbnB1dG1vZGUiLCJpbnB1dEVsZW1lbnQiLCJzaG93UGFzc3dvcmQiLCJpbnB1dE1vZGVBdHRyaWJ1dGUiLCJpbnB1dFR5cGUiLCJzaG91bGRTaG93Q2xlYXJCdXR0b24iLCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b24iLCJoYW5kbGVDbGVhciIsImhhbmRsZUZpZWxkQ2xpY2siLCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93biIsImhhc0NsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJ0ZXh0YXJlYUVsZW1lbnQiLCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsImlzT3BlbiIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiY2xvc2UiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiaGFuZGxlRXNjYXBlS2V5ZG93biIsIm9uQmVmb3JlTW91bnQiLCJvbkJlZm9yZVVubW91bnQiLCJfVGVsZXBvcnQiLCIkc2xvdHMiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwiaGFuZGxlUHJldmlvdXNDbGljayIsImhhbmRsZU5leHRDbGljayIsInBhZ2luYXRpb25CdXR0b24iLCJUaWRlQnV0dG9uUGFnaW5hdGlvbiIsInNpZGVzIiwiYWxpZ25tZW50cyIsInBsYWNlbWVudHMiLCJhY2MiLCJzaWRlIiwibWluIiwibWF4Iiwicm91bmQiLCJmbG9vciIsImNyZWF0ZUNvb3JkcyIsInYiLCJvcHBvc2l0ZVNpZGVNYXAiLCJvcHBvc2l0ZUFsaWdubWVudE1hcCIsImNsYW1wIiwic3RhcnQiLCJlbmQiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZSIsInBsYWNlbWVudCIsImdldEFsaWdubWVudCIsImdldE9wcG9zaXRlQXhpcyIsImF4aXMiLCJnZXRBeGlzTGVuZ3RoIiwiZ2V0U2lkZUF4aXMiLCJnZXRBbGlnbm1lbnRBeGlzIiwiZ2V0QWxpZ25tZW50U2lkZXMiLCJyZWN0cyIsInJ0bCIsImFsaWdubWVudCIsImFsaWdubWVudEF4aXMiLCJsZW5ndGgiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQiLCJleHBhbmRQYWRkaW5nT2JqZWN0IiwicGFkZGluZyIsImdldFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsInNpZGVBeGlzIiwiYWxpZ25MZW5ndGgiLCJpc1ZlcnRpY2FsIiwiY29tbW9uWCIsImNvbW1vblkiLCJjb21tb25BbGlnbiIsImNvb3JkcyIsImNvbXB1dGVQb3NpdGlvbiIsInN0cmF0ZWd5IiwibWlkZGxld2FyZSIsInBsYXRmb3JtIiwidmFsaWRNaWRkbGV3YXJlIiwic3RhdGVmdWxQbGFjZW1lbnQiLCJtaWRkbGV3YXJlRGF0YSIsInJlc2V0Q291bnQiLCJpIiwiZm4iLCJuZXh0WCIsIm5leHRZIiwiZGF0YSIsInJlc2V0IiwiZGV0ZWN0T3ZlcmZsb3ciLCJzdGF0ZSIsIl9hd2FpdCRwbGF0Zm9ybSRpc0VsZSIsImVsZW1lbnRzIiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsInJlc2V0UGxhY2VtZW50IiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsIm1haW5BeGlzIiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJGFycm93IiwiZGlmZkNvb3JkcyIsInNoaWZ0IiwiY2hlY2tNYWluQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwibGltaXRlciIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1pblNpZGUiLCJtYXhTaWRlIiwibGltaXRlZENvb3JkcyIsImhhc1dpbmRvdyIsImdldE5vZGVOYW1lIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0b1ZhbHVlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJfVHJhbnNpdGlvbiIsInJhdGluZ1ZhbHVlIiwic2VnbWVudHMiLCJzZWdtZW50IiwiU0laRV9MT0dPIiwiTE9HT19IRUlHSFQiLCJMT0dPX0xBUkdFX1dJRFRIIiwiTE9HT19NQVJLX1dJRFRIIiwiZ2V0UmVhbG1LZXlGcm9tUmVhbG0iLCJyZWFsbSIsIm1hdGNoIiwibG9nb1dpZHRoIiwiZnVsbExvZ29XaWR0aCIsInNocmlua0ZhY3RvciIsImxvZ29IZWlnaHQiLCJsaW5rIiwiZGlhbG9nRWxlbWVudCIsImN1cnJlbnRUYWIiLCJUaWRlQ2Fyb3VzZWwiLCJUT0FTVEVSX0tFWSIsIkFVVE9fRElTTUlTU19EVVJBVElPTl9NUyIsInVzZVRpZGVUb2FzdGVyIiwiaW5qZWN0ZWQiLCJ0b2FzdHMiLCJhZGRUb2FzdCIsIm5ld1RvYXN0IiwiY2xlYXJUb2FzdHMiLCJjYW5jZWxBdXRvRGlzbWlzcyIsInN0YXJ0QXV0b0Rpc21pc3MiLCJhdXRvRGlzbWlzc0R1cmF0aW9uIiwidG9hc3RlciIsInJlYWRvbmx5IiwiX1RyYW5zaXRpb25Hcm91cCIsInRvYXN0IiwiYXJncyIsIlRpZGVBbGVydCJdLCJtYXBwaW5ncyI6InVHQUFhQSxHQUFjLENBQ3pCLFdBQVksYUFDWixTQUFVLFVBQ1osRUNDYUMsRUFBTSxDQUNqQixlQUFnQixDQUFDQyxFQUFxQkMsSUFDN0JELEVBQVUsSUFBS0UsR0FBWSxHQUFHRCxDQUFVLElBQUlDLENBQU8sRUFBRSxFQUU5RCxNQUFPLENBQ0wsRUFBRyxDQUNELE9BQVEsbUJBQ1IsUUFBUyxvQkFDVCxLQUFNLGlCQUNOLE1BQU8saUJBQUEsRUFFVCxFQUFHLENBQ0QsUUFBUyxxQkFDVCxPQUFRLG1CQUFBLENBQ1YsRUFFRixNQUFPLENBQ0wsT0FBUSxvQkFDUixRQUFTLHFCQUNULE9BQVEsb0JBQ1IsSUFBSyxpQkFDTCxNQUFPLGtCQUFBLEVBRVQsTUFBTyxDQUNMLE9BQVEsb0JBQ1IsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sbUJBQ1AsUUFBUyxvQkFBQSxFQUVYLEdBQUksQ0FDRixPQUFRLENBQ04sUUFBUyxDQUNQLE1BQU8sd0JBQ1AsS0FBTSx1QkFDTixRQUFTLDBCQUNULFFBQVMseUJBQUEsRUFFWCxRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUywwQkFFVCxLQUFNLHVCQUNOLE1BQU8sd0JBQ1As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LEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSxnREFBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLEdBQUEsb0RBQUEsSUFBQSxtQ0FBQSxpQ0FBQSxDQUFBLEVBQUEsbURBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsbURBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxHQUFBLHFEQUFBLElBQUEsbUNBQUEsa0NBQUEsQ0FBQSxFQUFBLHVEQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsb0NBQUEsQ0FBQSxFQUFBLHFEQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsRUFBQSxDQUFBLEVBQUEsNkJBQUFILENBQUEsUUFBQUYsQ0FBQSxPQUFBLENBQUEsRUFHRkssR0FBQSxPQUFBLE9BQUEsQ0FBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLEdBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxtQ0FBQSwrQkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxHQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLGlEQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsdUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLDZDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsR0FBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLEdBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEsaURBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx1Q0FBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsK0NBQUEsSUFBQSxtQ0FBQSxxQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxHQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsbUNBQUEsa0NBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsR0FBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLG1DQUFBLGlDQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLEdBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxtQ0FBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxtQ0FBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsK0NBQUEsSUFBQSxtQ0FBQSxxQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLENBQUEsQ0FBQSxFQUFBLDJCQUFBTCxDQUFBLE9BQUEsQ0FBQSxDQUNSLEVBRURKLEVBQVMsTUFBUVUsRUFB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
|