| 1 | KHRoaXMud2VicGFja0pzb25wZnJvbnRlbmQ9dGhpcy53ZWJwYWNrSnNvbnBmcm9udGVuZHx8W10pLnB1c2goW1swXSx7MTE5OmZ1bmN0aW9uKGUsdCxhKXtlLmV4cG9ydHM9YS5wKyJzdGF0aWMvbWVkaWEvc2FzaGFfYW5vbi42YmExOTU2MS5wbmcifSwxMzY6ZnVuY3Rpb24oZSx0LGEpe2UuZXhwb3J0cz1hKDEzNyl9LDEzNzpmdW5jdGlvbihlLHQsYSl7InVzZSBzdHJpY3QiO2Eucih0KTt2YXIgbj1hKDApLGM9YS5uKG4pLHI9YSgzOSksbD1hLm4ociksaT0oYSgxNDIpLGEoNTkpKTtsLmEucmVuZGVyKGMuYS5jcmVhdGVFbGVtZW50KGkuYSxudWxsKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9vdCIpKX0sMTQyOmZ1bmN0aW9uKGUsdCxhKXt9LDE2MDpmdW5jdGlvbihlLHQsYSl7fSwxNjY6ZnVuY3Rpb24oZSx0KXt9LDE2ODpmdW5jdGlvbihlLHQpe30sMTg2OmZ1bmN0aW9uKGUsdCl7fSwyMDA6ZnVuY3Rpb24oZSx0LGEpe30sNTk6ZnVuY3Rpb24oZSx0LGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1hKDApLGM9YS5uKG4pLHI9YSg0MCksbD1hLm4ociksaT0oYSg4NSksYSgxNTgpLGEoMTU5KSxhKDE2MCksYSgxMSkpLG89YSg4KSxzPWEoNyksdT1hKDE2KSxkPWEubih1KTthKDQ0KTtjb25zdCBtPWQoKSgxMCkucG93KDI0KSxiPShtLmRpdigyKSxjLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToic3Bpbm5lci1ncm93IHNwaW5uZXItZ3Jvdy1zbSBtZS0xIixyb2xlOiJzdGF0dXMiLCJhcmlhLWhpZGRlbiI6InRydWUifSkpO2NvbnN0IEU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9LGY9ZnVuY3Rpb24oZSl7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1PYmplY3QoZSkmJiFFKGUpJiYiZnVuY3Rpb24iIT09dHlwZW9mIGV9KGUpKXtjb25zdCB0PXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGE9Pnt2YXIgbjt0WyhuPWEsbi5yZXBsYWNlKC8oWy1fXVthLXpdKS9naSxlPT5lLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgiLSIsIiIpLnJlcGxhY2UoIl8iLCIiKSkpXT1mKGVbYV0pfSksdH1yZXR1cm4gRShlKT9lLm1hcChlPT5mKGUpKTplfTt2YXIgaD1hKDMxKSxnPWEoNDMpO2NvbnN0IHA9e2xvYWRpbmc6ITAsYWNjb3VudElkOm51bGwsc3RhdGU6bnVsbCxuZWFyOm51bGx9LHY9YXN5bmMoZSx0KT0+e2NvbnN0IGE9ZS5hY2NvdW50SWQsbj17bG9hZGluZzohMSxhY2NvdW50SWQ6YSxzdGF0ZTpudWxsLG5lYXI6ZSxyZWZyZXNoOmFzeW5jKCk9PmF3YWl0IHYoZSx0KX07aWYoYSl7Y29uc3RbdCxjXT1hd2FpdCBQcm9taXNlLmFsbChbZS5jb250cmFjdC5nZXRfYWNjb3VudCh7YWNjb3VudF9pZDphfSksZS5hY2NvdW50LnN0YXRlKCldKTtuLmFjY291bnQ9Zih0KSxuLnN0YXRlPWN9dChuKX0sdz1PYmplY3QoZy5hKShwLCgpPT57Y29uc3RbZSx0XT1PYmplY3Qobi51c2VTdGF0ZSkocCksYT1PYmplY3Qocy5nKSgpO3JldHVybiBPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57YS50aGVuKGFzeW5jIGU9Pnt0cnl7YXdhaXQgdihlLHQpfWNhdGNoKGEpe2NvbnNvbGUuZXJyb3IoYSl9fSl9LFthXSksZX0pO3ZhciB5PWEoMTkpLE49YS5uKHkpO2NvbnN0IGs9e30saj0oZSx0KT0+cy5iKyJhcnRpY2xlOiIrZSsiOiIrdCxPPWFzeW5jKGUsdCxhLG4pPT57aWYoYSl7Y29uc3QgZT1qKGEsdCksYz1OLmEuZ2V0KGUpO2lmKGMpcmV0dXJuIGM7Zm9yKGxldCBsPTA7bDw1OysrbCl0cnl7bGV0IGM9Zihhd2FpdCBuLm5lYXIuYXJjaGl2YWxWaWV3Q2FsbChhLWwscy5jLmNvbnRyYWN0TmFtZSwiZ2V0X2FydGljbGUiLHthcnRpY2xlX2lkOnR9KSk7cmV0dXJuIGM/Yy50aW1lc3RhbXA9cGFyc2VGbG9hdChjLnRpbWVzdGFtcCkvMWU2OmM9ITEsTi5hLnNldChlLGMpLGMmJk4uYS5zZXQoaihjLmJsb2NrSGVpZ2h0LHQpLGMpLGN9Y2F0Y2gocil7Y29uc29sZS5sb2cocil9cmV0dXJuITF9aWYodCBpbiBrKXJldHVybiBrW3RdO2lmKCFuKXJldHVybiBudWxsO2xldCBjPWYoYXdhaXQgbi5uZWFyLmNvbnRyYWN0LmdldF9hcnRpY2xlKHthcnRpY2xlX2lkOnR9KSk7cmV0dXJuIGM/Yy50aW1lc3RhbXA9cGFyc2VGbG9hdChjLnRpbWVzdGFtcCkvMWU2OmM9ITEsYyYmTi5hLnNldChqKGMuYmxvY2tIZWlnaHQsdCksYyksa1t0XT1jfSxfPShlLHQpPT57Y29uc3R7ZGF0YTphLG11dGF0ZTpuLGlzVmFsaWRhdGluZzpjfT1PYmplY3QoaC5hKShbImFydGljbGVfaWQiLGUsdCx3KCldLE8pO3JldHVybnthcnRpY2xlOmEsbXV0YXRlOm4saXNWYWxpZGF0aW5nOmMscmVmcmVzaEFydGljbGU6YXN5bmMgdD0+e2RlbGV0ZSBrW2VdLHQmJmF3YWl0IG4odCl9fX07dmFyIEk9YSgxMTkpLFM9YS5uKEkpO2NvbnN0IEM9e30seD1hc3luYyhlLHQpPT57aWYodCBpbiBDKXJldHVybiBDW3RdO3RyeXtjb25zdCBlPWF3YWl0IGZldGNoKCJodHRwczovL2FwaS5uZWFyLnNvY2lhbC9hY2NvdW50LyIuY29uY2F0KHQpKTtyZXR1cm4gNDA0PT09ZS5zdGF0dXM/Q1t0XT0hMTpDW3RdPWYoYXdhaXQgZS5qc29uKCkpfWNhdGNoKGEpe3JldHVybiBDW3RdPSExfX07YSgyMDApO2Z1bmN0aW9uIEEoZSl7dmFyIHQ7Y29uc3QgYT1lLmFjY291bnRJZCxuPWUuY2xpY2thYmxlLHI9KGU9Pntjb25zdHtkYXRhOnR9PU9iamVjdChoLmEpKFsic29jaWFsX2FjY291bnRfaWQiLGVdLHgpO3JldHVybiB0fSkoYSksbD0obnVsbD09PXJ8fHZvaWQgMD09PXJ8fG51bGw9PT0odD1yLmF2YXRhcil8fHZvaWQgMD09PXQ/dm9pZCAwOnQudXJsKXx8Uy5hLGk9KG51bGw9PT1yfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmRpc3BsYXlOYW1lKT8iIi5jb25jYXQoci5kaXNwbGF5TmFtZSwiICgiKS5jb25jYXQoYSwiKSIpOmEsbz0iL2F1dGhvci8iLmNvbmNhdChhKSxzPWMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InNvY2lhbC1hY2NvdW50In0sYy5hLmNyZWF0ZUVsZW1lbnQoImltZyIse3NyYzpsLHRpdGxlOmEsYWx0OmF9KSxjLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse3RpdGxlOmF9LGkpKTtyZXR1cm4gbj9jLmEuY3JlYXRlRWxlbWVudCgiYSIse2hyZWY6b30scyk6c31mdW5jdGlvbiBUKGUpe2NvbnN0IHQ9ZS5hcnRpY2xlSWQsYT1lLmFydGljbGUsbj1lLnNob3dFZGl0LHI9ZS5wcmV2aWV3QnV0dG9uLGw9Yy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxyJiZjLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJtZS0yIG10LTIgYnRuIGJ0bi1wcmltYXJ5ICIsdHlwZToiYnV0dG9uIiwiZGF0YS1icy10b2dnbGUiOiJjb2xsYXBzZSIsImRhdGEtYnMtdGFyZ2V0IjoiI2EtIi5jb25jYXQociksImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsImFyaWEtY29udHJvbHMiOiJhLSIuY29uY2F0KHIpfSwiVG9nZ2xlIGFydGljbGUgcHJldmlldyIpLHImJmMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6Im1lLTIgbXQtMiBidG4gYnRuLXByaW1hcnkgIix0eXBlOiJidXR0b24iLCJkYXRhLWJzLXRvZ2dsZSI6ImNvbGxhcHNlIiwiZGF0YS1icy10YXJnZXQiOiIjZC0iLmNvbmNhdChyKSwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIiwiYXJpYS1jb250cm9scyI6ImQtIi5jb25jYXQocil9LCJUb2dnbGUgZGlmZiIpLG4mJiFyJiZjLmEuY3JlYXRlRWxlbWVudChpLmIse3RvOiIvZWRpdC8iLmNvbmNhdCh0KSxjbGFzc05hbWU6Im1lLTIgbXQtMiBidG4gIi5jb25jYXQoYT8iYnRuLW91dGxpbmUtc2Vjb25kYXJ5IjoiYnRuLXByaW1hcnkiKX0sYT8iRWRpdCB0aGlzIGFydGljbGUiOiJDcmVhdGUgdGhpcyBhcnRpY2xlIiksbiYmciYmYy5hLmNyZWF0ZUVsZW1lbnQoaS5iLHt0bzoiL2Jsb2NrLyIuY29uY2F0KGEuYmxvY2tIZWlnaHQsIi9lZGl0LyIpLmNvbmNhdCh0KSxjbGFzc05hbWU6Im1lLTIgbXQtMiBidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5In0sIkVkaXQgdGhpcyB2ZXJzaW9uIiksYSYmIXImJmMuYS5jcmVhdGVFbGVtZW50KGkuYix7dG86Ii9oaXN0b3J5LyIuY29uY2F0KHQpLGNsYXNzTmFtZToibWUtMiBtdC0yIGJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkifSwiVmlldyBlZGl0IGhpc3RvcnkiKSxhJiZjLmEuY3JlYXRlRWxlbWVudChpLmIse3RvOiIvYmxvY2svIi5jb25jYXQoYS5ibG9ja0hlaWdodCwiLyIpLmNvbmNhdCh0KSxjbGFzc05hbWU6Im1lLTIgbXQtMiBidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5In0sIlBlcm1hbmVudCBVUkwiKSk7cmV0dXJuIGE/Yy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibXQtNSBhbGVydCBhbGVydC1zZWNvbmRhcnkifSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLCJMYXN0IGVkaXQgYnkgIixjLmEuY3JlYXRlRWxlbWVudChBLHthY2NvdW50SWQ6YS5hdXRob3IsY2xpY2thYmxlOiEwfSksYy5hLmNyZWF0ZUVsZW1lbnQoImJyIixudWxsKSwiRWRpdGVkIG9uICIsbmV3IERhdGUoYS50aW1lc3RhbXApLnRvTG9jYWxlU3RyaW5nKCksYy5hLmNyZWF0ZUVsZW1lbnQoImJyIixudWxsKSwiRWRpdCB2ZXJzaW9uczogIixhLmVkaXRWZXJzaW9uKzEpLGwpOmx9dmFyIEg9YSgxMzApLE09YSg1MjcpLFY9YSg1MjgpLFA9YSg1MjYpO2NvbnN0IFI9ZT0+Yy5hLmNyZWF0ZUVsZW1lbnQoTS5hLHtwbHVnaW5zOltILmFdLGNvbXBvbmVudHM6e2Jsb2NrcXVvdGU6ZT0+e2xldHtub2RlOnQsLi4uYX09ZTtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoImJsb2NrcXVvdGUiLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZToiYmxvY2txdW90ZSJ9LGEpKX0sdGFibGU6ZT0+e2xldHtub2RlOnQsLi4uYX09ZTtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoInRhYmxlIixPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6InRhYmxlIHRhYmxlLXN0cmlwZWQifSxhKSl9LGNvZGUoZSl7bGV0e25vZGU6dCxpbmxpbmU6YSxjbGFzc05hbWU6bixjaGlsZHJlbjpyLC4uLmx9PWU7Y29uc3QgaT0vbGFuZ3VhZ2UtKFx3KykvLmV4ZWMobnx8IiIpO3JldHVybiFhJiZpP2MuYS5jcmVhdGVFbGVtZW50KFYuYSxPYmplY3QuYXNzaWduKHtjaGlsZHJlbjpTdHJpbmcocikucmVwbGFjZSgvXG4kLywiIiksc3R5bGU6UC5hLGxhbmd1YWdlOmlbMV0sUHJlVGFnOiJkaXYifSxsKSk6Yy5hLmNyZWF0ZUVsZW1lbnQoImNvZGUiLE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTpufSxsKSxyKX19fSxlKTtmdW5jdGlvbiBCKGUpe2NvbnN0IHQ9ZS5hcnRpY2xlSWQsYT1lLmJsb2NrSWQse2FydGljbGU6cn09Xyh0LGEpLHthcnRpY2xlOmx9PV8obnVsbD09PXJ8fHZvaWQgMD09PXI/dm9pZCAwOnIubmF2aWdhdGlvbklkLGEpLFtpLG9dPU9iamVjdChuLnVzZVN0YXRlKSghMCk7cmV0dXJuIE9iamVjdChuLnVzZUVmZmVjdCkoKCk9Pntkb2N1bWVudC50aXRsZT10PyIiLmNvbmNhdCh0LCIgfCB3aWtpIik6Indpa2kifSxbdF0pLE9iamVjdChuLnVzZUVmZmVjdCkoKCk9Pnsocnx8ITE9PT1yKSYmbyghMSl9LFtyXSksaT9iOmMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwscj9jLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJyb3cganVzdGlmeS1jb250ZW50LW1kLWNlbnRlciJ9LGwmJmMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImFydGljbGUtbmF2aWdhdGlvbiBjb2wtbWQtMyJ9LFIobC5ib2R5KSksYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiYXJ0aWNsZSBjb2wifSxSKHIuYm9keSkpKToiQXJ0aWNsZSBkb2Vzbid0IGV4aXN0cyIsYy5hLmNyZWF0ZUVsZW1lbnQoVCx7YXJ0aWNsZTpyLGFydGljbGVJZDp0LHNob3dFZGl0OiEwfSkpfXZhciBMPWEoMTI5KTthKDQ5NSk7YXN5bmMgZnVuY3Rpb24gcShlKXtsZXR7bWV0aG9kOnQsdXJsOmEsanNvbjpufT1lO2NvbnN0IGM9YXdhaXQgZmV0Y2goYSx7bWV0aG9kOnQsYm9keToiR0VUIiE9PXQ/SlNPTi5zdHJpbmdpZnkobik6dm9pZCAwLGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04In19KTtpZighYy5vayl7bmV3IEVycm9yKCJIVFRQIGVycm9yOiAiLmNvbmNhdChjLnN0YXR1cywiICIpLmNvbmNhdChjLnN0YXR1c1RleHQpKS5kYXRhPWF3YWl0IGMudGV4dCgpfWlmKDIwND09PWMuc3RhdHVzKXJldHVybiBudWxsfWNvbnN0IEQ9ZT0+IiIuY29uY2F0KGUsIl9uYXYiKTtmdW5jdGlvbiBGKGUpe2NvbnN0IHQ9Yy5hLnVzZVJlZihudWxsKSxhPWUuYmxvY2tJZCxyPWUuYXJ0aWNsZUlkLHthcnRpY2xlOmwscmVmcmVzaEFydGljbGU6aX09XyhyLGEpLG89dygpLFt1LGRdPU9iamVjdChuLnVzZVN0YXRlKSghMCksW20sRV09T2JqZWN0KG4udXNlU3RhdGUpKG51bGwpLFtmLGhdPU9iamVjdChuLnVzZVN0YXRlKShudWxsKTtPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57ZG9jdW1lbnQudGl0bGU9cj8iRWRpdGluZyAiLmNvbmNhdChyLCIgfCB3aWtpIik6IkVkaXRpbmcgdGhlIG1haW4gcGFnZSB8IHdpa2kifSxbcl0pLE9iamVjdChuLnVzZUVmZmVjdCkoKCk9PntudWxsIT09Znx8IWwmJiExIT09bHx8KGgobD9sLmJvZHk6KGU9PiIjICIuY29uY2F0KGUsIlxuXG4qd3JpdGUgdGhlIGNvbnRlbnQgb2YgdGhlIGFydGljbGUgaGVyZSpcblxuIikpKHIpKSxFKG51bGw9PT1sfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLm5hdmlnYXRpb25JZCksZCghMSkpfSxbZixsLHJdKTtyZXR1cm4gZj9jLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLCFvLmFjY291bnRJZCYmYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiYWxlcnQgYWxlcnQtd2FybmluZyJ9LCJZb3UgbmVlZCB0byBzaWduIGluIHRvIGVkaXQgdGhpcyBhcnRpY2xlIiksYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToibWItMyJ9LGMuYS5jcmVhdGVFbGVtZW50KEwuYSx7cmVmOnQsdmFsdWU6ZixzdHlsZTp7aGVpZ2h0OiIzMGVtIn0saHRtbENsYXNzOiJhcnRpY2xlIixvbkNoYW5nZTplPT57bGV0e3RleHQ6dH09ZTtyZXR1cm4gaCh0KX0scmVuZGVySFRNTDpSfSkpLGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Im1iLTMgcm93IGp1c3RpZnktY29udGVudC1tZC1jZW50ZXIifSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2wtYXV0byJ9LGMuYS5jcmVhdGVFbGVtZW50KCJsYWJlbCIse2NsYXNzTmFtZToiY29sLWZvcm0tbGFiZWwiLGh0bWxGb3I6Im5hdmlnYXRpb25JZCJ9LCJBcnRpY2xlIElEIGZvciBuYXZpZ2F0aW9uIG1lbnUgKG9wdGlvbmFsKToiKSksYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sIn0sYy5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOiJmb3JtLWNvbnRyb2wiLHR5cGU6InRleHQiLGlkOiJuYXZpZ2F0aW9uSWQiLHBsYWNlaG9sZGVyOkQociksdmFsdWU6bXx8IiIsb25DaGFuZ2U6ZT0+RShlLnRhcmdldC52YWx1ZSl9KSkpLGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Im1iLTMifSxjLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLXByaW1hcnkiLGRpc2FibGVkOiFvLmFjY291bnRJZHx8dSxvbkNsaWNrOmFzeW5jKCk9PntkKCEwKTtjb25zdCBlPW8ubmVhci5jb250cmFjdC5jb250cmFjdElkO2F3YWl0IGFzeW5jIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGF3YWl0IHEoe21ldGhvZDoiUE9TVCIsdXJsOmUsanNvbjp0fSl9KCIvd2ViNC9jb250cmFjdC8iLmNvbmNhdChlLCIvcG9zdF9hcnRpY2xlIikse2FydGljbGVfaWQ6cixib2R5OmYsbmF2aWdhdGlvbl9pZDoiIiE9PW0/bTpudWxsLHdlYjRfZ2FzOnMuZC5tdWwoNzUpLnRvRml4ZWQoKX0pO2NvbnN0IHQ9e2JvZHk6ZixuYXZpZ2F0aW9uSWQ6bSx0aW1lc3RhbXA6KG5ldyBEYXRlKS5nZXRUaW1lKCksYXV0aG9yOm8uYWNjb3VudElkLGVkaXRWZXJzaW9uOmw/bC5lZGl0VmVyc2lvbisxOjB9O2F3YWl0IGkodCksZCghMSl9fSx1JiZiLCJTYXZlIGFydGljbGUiKSxjLmEuY3JlYXRlRWxlbWVudCgiYSIse2hyZWY6Ii8iLmNvbmNhdChyKSx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixjbGFzc05hbWU6ImJ0biBidG4tc2Vjb25kYXJ5IG1zLTIifSwiVmlldyBhcnRpY2xlIikpLGMuYS5jcmVhdGVFbGVtZW50KFQse2FydGljbGU6bCxhcnRpY2xlSWQ6cn0pKTpifWZ1bmN0aW9uIEooZSl7bGV0e2FydGljbGVJZDp0LGJsb2NrSWQ6YX09T2JqZWN0KG8uZikoKTt0PXR8fCIiLGE9YT9wYXJzZUludChhKTpudWxsO2NvbnN0IG49ISFlLmVkaXQ7cmV0dXJuIGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIn0sYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93IG1iLTMifSxuP2MuYS5jcmVhdGVFbGVtZW50KEYse2FydGljbGVJZDp0LGJsb2NrSWQ6YX0pOmMuYS5jcmVhdGVFbGVtZW50KEIse2FydGljbGVJZDp0LGJsb2NrSWQ6YX0pKSkpfXZhciBVPWEoNzkpLEc9YS5uKFUpO2Z1bmN0aW9uIEsoZSl7Y29uc3QgdD1lLmFydGljbGVJZCx7YXJ0aWNsZTphfT1fKHQpLHI9dygpLFtsLGldPU9iamVjdChuLnVzZVN0YXRlKSghMCksW28sc109T2JqZWN0KG4udXNlU3RhdGUpKFtdKTtyZXR1cm4gT2JqZWN0KG4udXNlRWZmZWN0KSgoKT0+e2RvY3VtZW50LnRpdGxlPXQ/Ikhpc3Rvcnkgb2YgIi5jb25jYXQodCwiIHwgd2lraSIpOiJIaXN0b3J5IG9mIHRoZSBtYWluIHBhZ2UgfCB3aWtpIn0sW3RdKSxPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57KGF8fCExPT09YSkmJihhJiZzKFthXSksaSghMSkpfSxbYV0pLE9iamVjdChuLnVzZUVmZmVjdCkoKCk9PntpZihvLmxlbmd0aD4wKXtjb25zdCBlPW9bby5sZW5ndGgtMV07ZS5lZGl0VmVyc2lvbj4wJiZPKDAsdCxlLmJsb2NrSGVpZ2h0LTEscikudGhlbihlPT57ZSYmcyhbLi4ubyxlXSl9KX19LFtvLHIsdF0pLGw/YjpjLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLGMuYS5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwiRWRpdCBIaXN0b3J5Iiksby5tYXAoKGUsYSk9Pntjb25zdCBuPSIiLmNvbmNhdChlLmJsb2NrSGVpZ2h0LCItIikuY29uY2F0KHQpLHI9YSsxPG8ubGVuZ3RoP29bYSsxXS5ib2R5OiIiO3JldHVybiBjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7a2V5Om59LGMuYS5jcmVhdGVFbGVtZW50KFQse2FydGljbGU6ZSxhcnRpY2xlSWQ6dCxzaG93RWRpdDohMCxwcmV2aWV3QnV0dG9uOm59KSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2xsYXBzZSIsaWQ6ImEtIi5jb25jYXQobil9LGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImFydGljbGUifSxSKGUuYm9keSkpKSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb2xsYXBzZSBzaG93IixpZDoiZC0iLmNvbmNhdChuKX0sYy5hLmNyZWF0ZUVsZW1lbnQoRy5hLHtvbGRWYWx1ZTpyLG5ld1ZhbHVlOmUuYm9keSxzcGxpdFZpZXc6ITEsY29tcGFyZU1ldGhvZDpVLkRpZmZNZXRob2QuU0VOVEVOQ0VTfSkpKX0pKX1mdW5jdGlvbiB6KGUpe2xldHthcnRpY2xlSWQ6dH09T2JqZWN0KG8uZikoKTtyZXR1cm4gdD10fHwiIixjLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lciJ9LGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJvdyBtYi0zIn0sYy5hLmNyZWF0ZUVsZW1lbnQoSyx7YXJ0aWNsZUlkOnR9KSkpKX1jb25zdCBZPWFzeW5jKGUsdCk9Pntjb25zdCBhPShlPT5zLmIrImFydGljbGVfaWRzOiIrZSkoZSksbj1OLmEuZ2V0KGEpO2lmKG4pcmV0dXJuIG47Y29uc3QgYz1hd2FpdCB0Lm5lYXIuY29udHJhY3QuZ2V0X2FydGljbGVfaWRzX3BhZ2VkKHtmcm9tX2luZGV4OmUsbGltaXQ6MjUwfSk7cmV0dXJuIDI1MD09PWMubGVuZ3RoJiZOLmEuc2V0KGEsYyksY307ZnVuY3Rpb24gVyhlKXtjb25zdCB0PXcoKSxbYSxyXT1PYmplY3Qobi51c2VTdGF0ZSkoITApLFtsLG9dPU9iamVjdChuLnVzZVN0YXRlKShudWxsKSxbcyx1XT1PYmplY3Qobi51c2VTdGF0ZSkoW10pO3JldHVybiBPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57ZG9jdW1lbnQudGl0bGU9IkFydGljbGVzIHwgd2lraSJ9LFtdKSxPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57dC5uZWFyJiZudWxsPT09bCYmdC5uZWFyLmNvbnRyYWN0LmdldF9udW1fYXJ0aWNsZXMoKS50aGVuKGU9PntvKGUpLHIoITEpfSl9LFt0LGxdKSxPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57aWYodC5uZWFyJiZudWxsIT09bCl7Y29uc3QgZT1sLXMubGVuZ3RoO2U+MCYmWSgyNTAqTWF0aC50cnVuYygoZS0xKS8yNTApLHQpLnRoZW4oZT0+e3UoWy4uLnMsLi4uZS5yZXZlcnNlKCldKX0pfX0sW3QsbCxzXSksYT9iOmMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYy5hLmNyZWF0ZUVsZW1lbnQoImgxIixudWxsLCJSZWNlbnQgYXJ0aWNsZXMiKSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLCJUb3RhbCAiLGwsIiBhcnRpY2xlcyIpLHMubWFwKChlLHQpPT5jLmEuY3JlYXRlRWxlbWVudCgibGkiLHtrZXk6ZX0sIiMiLGwtdCwiICIsYy5hLmNyZWF0ZUVsZW1lbnQoaS5iLHt0bzoiLyIuY29uY2F0KGUpfSxlfHwiTWFpbiBwYWdlIikpKSl9ZnVuY3Rpb24gWihlKXtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb250YWluZXIifSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJyb3cgbWItMyJ9LGMuYS5jcmVhdGVFbGVtZW50KFcsbnVsbCkpKSl9Y29uc3QgJD1hc3luYyhlLHQpPT57Y29uc3QgYT0oZT0+cy5iKyJhY2NvdW50X2lkczoiK2UpKGUpLG49Zihhd2FpdCB0LmNvbnRyYWN0LmdldF9hY2NvdW50c19wYWdlZCh7ZnJvbV9pbmRleDplLGxpbWl0OjEwMH0pKTtyZXR1cm4gMTAwPT09bi5sZW5ndGgmJk4uYS5zZXQoYSxuKSxufTtmdW5jdGlvbiBRKGUpe2NvbnN0IHQ9T2JqZWN0KHMuZikoKSxbYSxyXT1PYmplY3Qobi51c2VTdGF0ZSkoITApLFtsLGldPU9iamVjdChuLnVzZVN0YXRlKShudWxsKSxbbyx1XT1PYmplY3Qobi51c2VTdGF0ZSkoW10pLFtkLG1dPU9iamVjdChuLnVzZVN0YXRlKShbXSk7cmV0dXJuIE9iamVjdChuLnVzZUVmZmVjdCkoKCk9Pntkb2N1bWVudC50aXRsZT0iQXV0aG9ycyB8IHdpa2kifSxbXSksT2JqZWN0KG4udXNlRWZmZWN0KSgoKT0+e3QmJm51bGw9PT1sJiZ0LmNvbnRyYWN0LmdldF9udW1fYWNjb3VudHMoKS50aGVuKGU9PntpKGUpLHIoITEpfSl9LFt0LGxdKSxPYmplY3Qobi51c2VFZmZlY3QpKCgpPT57aWYodCYmbnVsbCE9PWwpe2NvbnN0IGU9bC1vLmxlbmd0aDtlPjAmJiQoMTAwKk1hdGgudHJ1bmMoKGUtMSkvMTAwKSx0KS50aGVuKGU9Pnt1KFsuLi5vLC4uLmUucmV2ZXJzZSgpXSl9KX19LFt0LGwsb10pLE9iamVjdChuLnVzZUVmZmVjdCkoKCk9Pntjb25zdCBlPVsuLi5vXTtlLnNvcnQoKGUsdCk9PnRbMV0uYXJ0aWNsZXMubGVuZ3RoLWVbMV0uYXJ0aWNsZXMubGVuZ3RoKSxtKGUpfSxbb10pLGE/YjpjLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLGMuYS5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwiQXV0aG9ycyIpLGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsIlRvdGFsICIsbCwiIGF1dGhvcnMiKSxkLm1hcChlPT57bGV0W3QsYV09ZTtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7a2V5OnR9LGMuYS5jcmVhdGVFbGVtZW50KEEse2FjY291bnRJZDp0LGNsaWNrYWJsZTohMH0pLGEuYXJ0aWNsZXMubGVuZ3RoPjAmJmMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJtdXRlZCJ9LCIgIixhLmFydGljbGVzLmxlbmd0aCwiIGFydGljbGUiLGEuYXJ0aWNsZXMubGVuZ3RoPjE/InMiOiIiKSl9KSl9ZnVuY3Rpb24gWChlKXtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJjb250YWluZXIifSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJyb3cgbWItMyJ9LGMuYS5jcmVhdGVFbGVtZW50KFEsbnVsbCkpKSl9Y29uc3QgZWU9e30sdGU9YXN5bmMoZSx0LGEpPT57aWYodCBpbiBlZSlyZXR1cm4gZWVbdF07aWYoIWEpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGU9Zihhd2FpdCBhLmNvbnRyYWN0LmdldF9hY2NvdW50KHthY2NvdW50X2lkOnR9KSk7cmV0dXJuIGVlW3RdPWV9Y2F0Y2gobil7cmV0dXJuIGVlW3RdPSExfX07ZnVuY3Rpb24gYWUoZSl7dmFyIHQ7Y29uc3QgYT1lLmFjY291bnRJZCxuPShlPT57Y29uc3R7ZGF0YTp0fT1PYmplY3QoaC5hKShbImF1dGhvcl9pZCIsZSxPYmplY3Qocy5mKSgpXSx0ZSk7cmV0dXJuIHR9KShhKTtyZXR1cm4gYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxjLmEuY3JlYXRlRWxlbWVudCgiaDEiLG51bGwsYy5hLmNyZWF0ZUVsZW1lbnQoQSx7YWNjb3VudElkOmF9KSksYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxudWxsPT09bnx8dm9pZCAwPT09bnx8bnVsbD09PSh0PW4uYXJ0aWNsZXMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm1hcCgoZSx0KT0+Yy5hLmNyZWF0ZUVsZW1lbnQoImxpIix7a2V5OmV9LCIjIix0LCIgIixjLmEuY3JlYXRlRWxlbWVudChpLmIse3RvOiIvIi5jb25jYXQoZSl9LGV8fCJNYWluIHBhZ2UiKSkpKSl9ZnVuY3Rpb24gbmUoZSl7Y29uc3R7YWNjb3VudElkOnR9PU9iamVjdChvLmYpKCk7cmV0dXJuIGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29udGFpbmVyIn0sYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicm93IG1iLTMifSxjLmEuY3JlYXRlRWxlbWVudChhZSx7YWNjb3VudElkOnR9KSkpKX1hLmQodCwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGNlfSkpO2NvbnN0IGNlPXt9O3QuYT1mdW5jdGlvbihlKXt2YXIgdDtjb25zdCBhPSEhbC5hLmdldCgid2ViNF9hY2NvdW50X2lkIikscj1sLmEuZ2V0KCJ3ZWI0X2FjY291bnRfaWQiKSxbdSxkXT1PYmplY3Qobi51c2VTdGF0ZSkoITEpLFtiLEVdPU9iamVjdChuLnVzZVN0YXRlKShudWxsKSxmPU9iamVjdChzLmcpKCksaD13KCksZz1udWxsPT09aHx8dm9pZCAwPT09aHx8bnVsbD09PSh0PWgubmVhcil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuY29udHJhY3QuY29udHJhY3RJZCxwPU9iamVjdChuLnVzZUNhbGxiYWNrKShlPT57RSgiL3dlYjQvbG9naW4/d2ViNF9jb250cmFjdF9pZD0iLmNvbmNhdChzLmMuY29udHJhY3ROYW1lKSl9LFtdKSx2PU9iamVjdChuLnVzZUNhbGxiYWNrKSgoKT0+e0UoIi93ZWI0L2xvZ291dCIpfSxbXSkseT1PYmplY3Qobi51c2VDYWxsYmFjaykoYXN5bmMoKT0+e2FsZXJ0KCJZb3UncmUgb3V0IG9mIGFjY2VzcyBrZXkgYWxsb3dhbmNlLiBOZWVkIHNpZ24gaW4gYWdhaW4gdG8gcmVmcmVzaCBpdCIpLGF3YWl0IHYoKSxhd2FpdCBwKCl9LFt2LHBdKTtjZS5yZWZyZXNoQWxsb3dhbmNlPXksT2JqZWN0KG4udXNlRWZmZWN0KSgoKT0+e2YudGhlbihlPT57ZCghMCl9KX0sW2ZdKTtjb25zdCBOPXtyZWZyZXNoQWxsb3dhbmNlOigpPT55KCksc2lnbmVkQWNjb3VudElkOnIsc2lnbmVkSW46YSxjb25uZWN0ZWQ6dX0saz11P2E/Yy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxjLmEuY3JlYXRlRWxlbWVudCgiZm9ybSIse2FjdGlvbjoiL3dlYjQvY29udHJhY3QvIi5jb25jYXQoZywiL2RvbmF0ZSIpLG1ldGhvZDoiUE9TVCIsc3R5bGU6e2Rpc3BsYXk6ImlubGluZSJ9fSxjLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJoaWRkZW4iLG5hbWU6IndlYjRfZ2FzIix2YWx1ZTpzLmQubXVsKDEwKS50b0ZpeGVkKCl9KSxjLmEuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJoaWRkZW4iLG5hbWU6IndlYjRfZGVwb3NpdCIsdmFsdWU6bS50b0ZpeGVkKCl9KSxjLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJidG4gYnRuLW91dGxpbmUtbGlnaHQgbWUtMiIsdHlwZToic3VibWl0In0sIkRvbmF0ZSAxIE5FQVIgZm9yIHN0b3JhZ2UiKSksYy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IixvbkNsaWNrOigpPT52KCl9LCJTaWduIG91dCAiLGMuYS5jcmVhdGVFbGVtZW50KEEse2FjY291bnRJZDpyfSkpKTpjLmEuY3JlYXRlRWxlbWVudCgiZGl2IixudWxsLGMuYS5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImJ0biBidG4tb3V0bGluZS1saWdodCIsb25DbGljazplPT5wKGUpfSwiU2lnbiBpbiB3aXRoIE5FQVIiKSk6Yy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCwiQ29ubmVjdGluZy4uLiIsIiAiLGMuYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJzcGlubmVyLWdyb3cgc3Bpbm5lci1ncm93LXNtIixyb2xlOiJzdGF0dXMiLCJhcmlhLWhpZGRlbiI6InRydWUifSkpO3JldHVybiBiPyh3aW5kb3cubG9jYXRpb24uaHJlZj1iLGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsIlJlZGlyZWN0aW5nLi4uIikpOmMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6IkFwcCJ9LGMuYS5jcmVhdGVFbGVtZW50KGkuYSx7YmFzZW5hbWU6IiJ9LGMuYS5jcmVhdGVFbGVtZW50KCJuYXYiLHtjbGFzc05hbWU6Im5hdmJhciBuYXZiYXItZXhwYW5kLWxnIG5hdmJhci1kYXJrIGJnLXByaW1hcnkgbWItMyJ9LGMuYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6ImNvbnRhaW5lci1mbHVpZCJ9LGMuYS5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOiJuYXZiYXItYnJhbmQiLGhyZWY6Ii8iLHRpdGxlOiJ0aGUgd2lraSJ9LGMuYS5jcmVhdGVFbGVtZW50KCJpbWciLHtzcmM6Ii9mYXZpY29uLnBuZyIsYWx0OiJ0aGUgd2lraSBsb2dvIixoZWlnaHQ6IjI0IixjbGFzc05hbWU6ImQtaW5saW5lLWJsb2NrIGFsaWduLXRleHQtdG9wIG1lLTIifSksInRoZSB3aWtpIiksYy5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToibmF2YmFyLXRvZ2dsZXIiLHR5cGU6ImJ1dHRvbiIsImRhdGEtYnMtdG9nZ2xlIjoiY29sbGFwc2UiLCJkYXRhLWJzLXRhcmdldCI6IiNuYXZiYXJTdXBwb3J0ZWRDb250ZW50IiwiYXJpYS1jb250cm9scyI6Im5hdmJhclN1cHBvcnRlZENvbnRlbnQiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLCJhcmlhLWxhYmVsIjoiVG9nZ2xlIG5hdmlnYXRpb24ifSxjLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToibmF2YmFyLXRvZ2dsZXItaWNvbiJ9KSksYy5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIixpZDoibmF2YmFyU3VwcG9ydGVkQ29udGVudCJ9LGMuYS5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNzTmFtZToibmF2YmFyLW5hdiBtZS1hdXRvIG1iLTIgbWItbGctMCJ9LGMuYS5jcmVhdGVFbGVtZW50KCJsaSIse2NsYXNzTmFtZToibmF2LWl0ZW0ifSxjLmEuY3JlYXRlRWxlbWVudChpLmIse2NsYXNzTmFtZToibmF2LWxpbmsiLCJhcmlhLWN1cnJlbnQiOiJwYWdlIix0bzoiLyJ9LCJNYWluIikpLGMuYS5jcmVhdGVFbGVtZW50KCJsaSIse2NsYXNzTmFtZToibmF2LWl0ZW0ifSxjLmEuY3JlYXRlRWxlbWVudChpLmIse2NsYXNzTmFtZToibmF2LWxpbmsiLCJhcmlhLWN1cnJlbnQiOiJwYWdlIix0bzoiL2FydGljbGVzLyJ9LCJBcnRpY2xlcyIpKSxjLmEuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6Im5hdi1pdGVtIn0sYy5hLmNyZWF0ZUVsZW1lbnQoaS5iLHtjbGFzc05hbWU6Im5hdi1saW5rIiwiYXJpYS1jdXJyZW50IjoicGFnZSIsdG86Ii9hdXRob3JzLyJ9LCJBdXRob3JzIikpKSxjLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJkLWZsZXgifSxrKSkpKSxjLmEuY3JlYXRlRWxlbWVudChvLmMsbnVsbCxjLmEuY3JlYXRlRWxlbWVudChvLmEse3BhdGg6Ii9hcnRpY2xlcy8ifSxjLmEuY3JlYXRlRWxlbWVudChaLE4pKSxjLmEuY3JlYXRlRWxlbWVudChvLmEse3BhdGg6Ii9yZWNlbnQvIn0sYy5hLmNyZWF0ZUVsZW1lbnQoWixOKSksYy5hLmNyZWF0ZUVsZW1lbnQoby5hLHtwYXRoOiIvYXV0aG9ycy8ifSxjLmEuY3JlYXRlRWxlbWVudChYLE4pKSxjLmEuY3JlYXRlRWxlbWVudChvLmEse3BhdGg6Ii9hdXRob3IvOmFjY291bnRJZCJ9LGMuYS5jcmVhdGVFbGVtZW50KG5lLE4pKSxjLmEuY3JlYXRlRWxlbWVudChvLmEse3BhdGg6Ii9ibG9jay86YmxvY2tJZC9lZGl0LzphcnRpY2xlSWQ/In0sYy5hLmNyZWF0ZUVsZW1lbnQoSixPYmplY3QuYXNzaWduKHt9LE4se2VkaXQ6ITB9KSkpLGMuYS5jcmVhdGVFbGVtZW50KG8uYSx7cGF0aDoiL2Jsb2NrLzpibG9ja0lkLzphcnRpY2xlSWQ/In0sYy5hLmNyZWF0ZUVsZW1lbnQoSixOKSksYy5hLmNyZWF0ZUVsZW1lbnQoby5hLHtwYXRoOiIvZWRpdC86YXJ0aWNsZUlkPyJ9LGMuYS5jcmVhdGVFbGVtZW50KEosT2JqZWN0LmFzc2lnbih7fSxOLHtlZGl0OiEwfSkpKSxjLmEuY3JlYXRlRWxlbWVudChvLmEse2V4YWN0OiEwLHBhdGg6Ii9oaXN0b3J5LzphcnRpY2xlSWQ/In0sYy5hLmNyZWF0ZUVsZW1lbnQoeixOKSksYy5hLmNyZWF0ZUVsZW1lbnQoby5hLHtleGFjdDohMCxwYXRoOiIvYXJ0aWNsZS86YXJ0aWNsZUlkPyJ9LGMuYS5jcmVhdGVFbGVtZW50KEosTikpLGMuYS5jcmVhdGVFbGVtZW50KG8uYSx7ZXhhY3Q6ITAscGF0aDoiLzphcnRpY2xlSWQ/In0sYy5hLmNyZWF0ZUVsZW1lbnQoSixOKSkpKSl9fSw3OmZ1bmN0aW9uKGUsdCxhKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe2EuZCh0LCJkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxhLmQodCwiZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIEV9KSksYS5kKHQsImEiLChmdW5jdGlvbigpe3JldHVybiBmfSkpLGEuZCh0LCJjIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxhLmQodCwiYiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksYS5kKHQsImciLChmdW5jdGlvbigpe3JldHVybiB3fSkpLGEuZCh0LCJmIiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKTt2YXIgbj1hKDI1KSxjPWEoNDApLHI9YS5uKGMpLGw9YSg0MyksaT1hKDE2KSxvPWEubihpKSxzPWEoNTkpLHU9YSgwKTtjb25zdCBkPW8oKSgxMCkucG93KDEyKSxtPWQubXVsKDMwMCksYj1vKCkoMTApLnBvdygxOSksRT1iLm11bCgxMjUpLGY9Yi5tdWwoMTI1MCksaD1uLnV0aWxzLlB1YmxpY0tleS5mcm9tKCJlZDI1NTE5OjhmV0hEMzVSamQ3OHllb3dTaGg5R3doUnVkUnRMTHNHQ1JqWnRnUGpBdHc5IiksZz17bmV0d29ya0lkOiJtYWlubmV0Iixub2RlVXJsOiJodHRwczovL3JwYy5tYWlubmV0Lm5lYXIub3JnIixhcmNoaXZhbE5vZGVVcmw6Imh0dHBzOi8vcnBjLm1haW5uZXQuaW50ZXJuYWwubmVhci5vcmciLGNvbnRyYWN0TmFtZToidGhld2lraS5uZWFyIix3YWxsZXRVcmw6Imh0dHBzOi8vd2FsbGV0Lm5lYXIub3JnIixzdG9yYWdlQ29zdFBlckJ5dGU6Yix3cmFwTmVhckFjY291bnRJZDoid3JhcC5uZWFyIn0scD1nLmNvbnRyYWN0TmFtZSsiOnYwMToiO2NvbnN0IHY9UHJvbWlzZS5yZXNvbHZlKGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgbi5rZXlTdG9yZXMuQnJvd3NlckxvY2FsU3RvcmFnZUtleVN0b3JlLGE9YXdhaXQgbi5jb25uZWN0KE9iamVjdC5hc3NpZ24oe2RlcHM6e2tleVN0b3JlOnR9fSxnKSksYz17fTtyZXR1cm4gYy5uZWFyQXJjaGl2YWxDb25uZWN0aW9uPW4uQ29ubmVjdGlvbi5mcm9tQ29uZmlnKHtuZXR3b3JrSWQ6Zy5uZXR3b3JrSWQscHJvdmlkZXI6e3R5cGU6Ikpzb25ScGNQcm92aWRlciIsYXJnczp7dXJsOmcuYXJjaGl2YWxOb2RlVXJsfX0sc2lnbmVyOnt0eXBlOiJJbk1lbW9yeVNpZ25lciIsa2V5U3RvcmU6dH19KSxjLmtleVN0b3JlPXQsYy5uZWFyQ29ubmVjdGlvbj1hLGMuYWNjb3VudElkPXIuYS5nZXQoIndlYjRfYWNjb3VudF9pZCIpLGMuYWNjb3VudD1hd2FpdCBhLmFjY291bnQoYy5hY2NvdW50SWQpLGMuY29udHJhY3Q9ZnVuY3Rpb24oZSx0LGEpe2NvbnN0IGM9bmV3IG4uQ29udHJhY3QoZSx0LGEpLHt2aWV3TWV0aG9kczpyPVtdLGNoYW5nZU1ldGhvZHM6bD1bXX09YSxpPXthY2NvdW50OmUsY29udHJhY3RJZDp0fTtyZXR1cm4gci5mb3JFYWNoKGU9PntpW2VdPWNbZV19KSxsLmZvckVhY2goZT0+e2lbZV09YXN5bmMgZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGF3YWl0IGNbZV0oLi4uYXJndW1lbnRzKX1jYXRjaCh0KXtpZigtMSE9PXQudG9TdHJpbmcoKS5pbmRleE9mKCJkb2VzIG5vdCBoYXZlIGVub3VnaCBiYWxhbmNlIikpcmV0dXJuIGF3YWl0IHMuYi5yZWZyZXNoQWxsb3dhbmNlKCk7dGhyb3cgdH19fSksaX0oYy5hY2NvdW50LGcuY29udHJhY3ROYW1lLHt2aWV3TWV0aG9kczpbImdldF9udW1fYXJ0aWNsZXMiLCJnZXRfYXJ0aWNsZSIsImdldF9hcnRpY2xlX2lkc19wYWdlZCIsImdldF9udW1fYWNjb3VudHMiLCJnZXRfYWNjb3VudCIsImdldF9hY2NvdW50c19wYWdlZCJdLGNoYW5nZU1ldGhvZHM6WyJwb3N0X2FydGljbGUiLCJkb25hdGUiXX0pLGMuZmV0Y2hCbG9ja0hhc2g9YXN5bmMoKT0+e2NvbnN0IGU9YXdhaXQgYS5jb25uZWN0aW9uLnByb3ZpZGVyLmJsb2NrKHtmaW5hbGl0eToiZmluYWwifSk7cmV0dXJuIG4udXRpbHMuc2VyaWFsaXplLmJhc2VfZGVjb2RlKGUuaGVhZGVyLmhhc2gpfSxjLmZldGNoQmxvY2tIZWlnaHQ9YXN5bmMoKT0+KGF3YWl0IGEuY29ubmVjdGlvbi5wcm92aWRlci5ibG9jayh7ZmluYWxpdHk6ImZpbmFsIn0pKS5oZWFkZXIuaGVpZ2h0LGMuZmV0Y2hOZXh0Tm9uY2U9YXN5bmMoKT0+KGF3YWl0IGMuYWNjb3VudC5nZXRBY2Nlc3NLZXlzKCkpLnJlZHVjZSgoZSx0KT0+TWF0aC5tYXgoZSx0LmFjY2Vzc19rZXkubm9uY2UrMSksMSksYy5zZW5kVHJhbnNhY3Rpb25zPWFzeW5jKGUsdCk9PntsZXRbYSxyXT1hd2FpdCBQcm9taXNlLmFsbChbYy5mZXRjaE5leHROb25jZSgpLGMuZmV0Y2hCbG9ja0hhc2goKV0pO2NvbnN0IGw9W107bGV0IGk9W10scz1udWxsLHU9bygpKDApO3JldHVybiBlLnB1c2goW251bGwsbnVsbF0pLGUuZm9yRWFjaChlPT57bGV0W3QsZF09ZTtjb25zdCBiPWQmJmQuZnVuY3Rpb25DYWxsP28oKShkLmZ1bmN0aW9uQ2FsbC5nYXMpOm8oKSgwKSxFPXUuYWRkKGIpO3QhPT1zfHxFLmd0KG0pPyhudWxsIT09cyYmKGwucHVzaChuLnRyYW5zYWN0aW9ucy5jcmVhdGVUcmFuc2FjdGlvbihjLmFjY291bnRJZCxoLHMsYSsrLGkscikpLGk9W10pLHU9YixzPXQpOnU9RSxpLnB1c2goZCl9KSxhd2FpdCBjLndhbGxldENvbm5lY3Rpb24ucmVxdWVzdFNpZ25UcmFuc2FjdGlvbnMobCx0KX0sYy5hcmNoaXZhbFZpZXdDYWxsPWFzeW5jKHQsYSxuLHIpPT57cj1yfHx7fTtjb25zdCBsPWF3YWl0IGMubmVhckFyY2hpdmFsQ29ubmVjdGlvbi5wcm92aWRlci5xdWVyeSh7cmVxdWVzdF90eXBlOiJjYWxsX2Z1bmN0aW9uIixhY2NvdW50X2lkOmEsbWV0aG9kX25hbWU6bixhcmdzX2Jhc2U2NDplLmZyb20oSlNPTi5zdHJpbmdpZnkocikpLnRvU3RyaW5nKCJiYXNlNjQiKSxibG9ja19pZDp0fSk7cmV0dXJuIGwucmVzdWx0JiZsLnJlc3VsdC5sZW5ndGg+MCYmSlNPTi5wYXJzZShlLmZyb20obC5yZXN1bHQpLnRvU3RyaW5nKCkpfSxjfSgpKSx3PU9iamVjdChsLmEpKHYsKCk9PnYpLHk9T2JqZWN0KGwuYSkobnVsbCwoKT0+e2NvbnN0W2UsdF09T2JqZWN0KHUudXNlU3RhdGUpKG51bGwpLGE9dygpO3JldHVybiBPYmplY3QodS51c2VFZmZlY3QpKCgpPT57YS50aGVuKHQpfSxbYV0pLGV9KX0pLmNhbGwodGhpcyxhKDIwKS5CdWZmZXIpfX0sW1sxMzYsMSwyXV1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFpbi5jNjgwMTJjOC5jaHVuay5qcy5tYXA= |
| 1 | ZXM6IG51bGwsXG4gICAgc2xvdDogbnVsbCxcbiAgICBzcGFuOiBudW1iZXIsXG4gICAgc3BlbGxDaGVjazogYm9vbGVhbmlzaCxcbiAgICBzcmM6IG51bGwsXG4gICAgc3JjRG9jOiBudWxsLFxuICAgIHNyY0xhbmc6IG51bGwsXG4gICAgc3JjU2V0OiBudWxsLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgc3RlcDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB0YWJJbmRleDogbnVtYmVyLFxuICAgIHRhcmdldDogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0cmFuc2xhdGU6IG51bGwsXG4gICAgdHlwZTogbnVsbCxcbiAgICB0eXBlTXVzdE1hdGNoOiBib29sZWFuLFxuICAgIHVzZU1hcDogbnVsbCxcbiAgICB2YWx1ZTogYm9vbGVhbmlzaCxcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIHdyYXA6IG51bGwsXG4gICAgd3JpdGluZ1N1Z2dlc3Rpb25zOiBudWxsLFxuXG4gICAgLy8gTGVnYWN5LlxuICAgIC8vIFNlZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jb3RoZXItZWxlbWVudHMsLWF0dHJpYnV0ZXMtYW5kLWFwaXNcbiAgICBhbGlnbjogbnVsbCwgLy8gU2V2ZXJhbC4gVXNlIENTUyBgdGV4dC1hbGlnbmAgaW5zdGVhZCxcbiAgICBhTGluazogbnVsbCwgLy8gYDxib2R5PmAuIFVzZSBDU1MgYGE6YWN0aXZlIHtjb2xvcn1gIGluc3RlYWRcbiAgICBhcmNoaXZlOiBzcGFjZVNlcGFyYXRlZCwgLy8gYDxvYmplY3Q+YC4gTGlzdCBvZiBVUklzIHRvIGFyY2hpdmVzXG4gICAgYXhpczogbnVsbCwgLy8gYDx0ZD5gIGFuZCBgPHRoPmAuIFVzZSBgc2NvcGVgIG9uIGA8dGg+YFxuICAgIGJhY2tncm91bmQ6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBiYWNrZ3JvdW5kLWltYWdlYCBpbnN0ZWFkXG4gICAgYmdDb2xvcjogbnVsbCwgLy8gYDxib2R5PmAgYW5kIHRhYmxlIGVsZW1lbnRzLiBVc2UgQ1NTIGBiYWNrZ3JvdW5kLWNvbG9yYCBpbnN0ZWFkXG4gICAgYm9yZGVyOiBudW1iZXIsIC8vIGA8dGFibGU+YC4gVXNlIENTUyBgYm9yZGVyLXdpZHRoYCBpbnN0ZWFkLFxuICAgIGJvcmRlckNvbG9yOiBudWxsLCAvLyBgPHRhYmxlPmAuIFVzZSBDU1MgYGJvcmRlci1jb2xvcmAgaW5zdGVhZCxcbiAgICBib3R0b21NYXJnaW46IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBjZWxsUGFkZGluZzogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgY2VsbFNwYWNpbmc6IG51bGwsIC8vIGA8dGFibGU+YFxuICAgIGNoYXI6IG51bGwsIC8vIFNldmVyYWwgdGFibGUgZWxlbWVudHMuIFdoZW4gYGFsaWduPWNoYXJgLCBzZXRzIHRoZSBjaGFyYWN0ZXIgdG8gYWxpZ24gb25cbiAgICBjaGFyT2ZmOiBudWxsLCAvLyBTZXZlcmFsIHRhYmxlIGVsZW1lbnRzLiBXaGVuIGBjaGFyYCwgb2Zmc2V0cyB0aGUgYWxpZ25tZW50XG4gICAgY2xhc3NJZDogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIGNsZWFyOiBudWxsLCAvLyBgPGJyPmAuIFVzZSBDU1MgYGNsZWFyYCBpbnN0ZWFkXG4gICAgY29kZTogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIGNvZGVCYXNlOiBudWxsLCAvLyBgPG9iamVjdD5gXG4gICAgY29kZVR5cGU6IG51bGwsIC8vIGA8b2JqZWN0PmBcbiAgICBjb2xvcjogbnVsbCwgLy8gYDxmb250PmAgYW5kIGA8aHI+YC4gVXNlIENTUyBpbnN0ZWFkXG4gICAgY29tcGFjdDogYm9vbGVhbiwgLy8gTGlzdHMuIFVzZSBDU1MgdG8gcmVkdWNlIHNwYWNlIGJldHdlZW4gaXRlbXMgaW5zdGVhZFxuICAgIGRlY2xhcmU6IGJvb2xlYW4sIC8vIGA8b2JqZWN0PmBcbiAgICBldmVudDogbnVsbCwgLy8gYDxzY3JpcHQ+YFxuICAgIGZhY2U6IG51bGwsIC8vIGA8Zm9udD5gLiBVc2UgQ1NTIGluc3RlYWRcbiAgICBmcmFtZTogbnVsbCwgLy8gYDx0YWJsZT5gXG4gICAgZnJhbWVCb3JkZXI6IG51bGwsIC8vIGA8aWZyYW1lPmAuIFVzZSBDU1MgYGJvcmRlcmAgaW5zdGVhZFxuICAgIGhTcGFjZTogbnVtYmVyLCAvLyBgPGltZz5gIGFuZCBgPG9iamVjdD5gXG4gICAgbGVmdE1hcmdpbjogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIGxpbms6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBhOmxpbmsge2NvbG9yOiAqfWAgaW5zdGVhZFxuICAgIGxvbmdEZXNjOiBudWxsLCAvLyBgPGZyYW1lPmAsIGA8aWZyYW1lPmAsIGFuZCBgPGltZz5gLiBVc2UgYW4gYDxhPmBcbiAgICBsb3dTcmM6IG51bGwsIC8vIGA8aW1nPmAuIFVzZSBhIGA8cGljdHVyZT5gXG4gICAgbWFyZ2luSGVpZ2h0OiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgbWFyZ2luV2lkdGg6IG51bWJlciwgLy8gYDxib2R5PmBcbiAgICBub1Jlc2l6ZTogYm9vbGVhbiwgLy8gYDxmcmFtZT5gXG4gICAgbm9IcmVmOiBib29sZWFuLCAvLyBgPGFyZWE+YC4gVXNlIG5vIGhyZWYgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBgbm9ocmVmYFxuICAgIG5vU2hhZGU6IGJvb2xlYW4sIC8vIGA8aHI+YC4gVXNlIGJhY2tncm91bmQtY29sb3IgYW5kIGhlaWdodCBpbnN0ZWFkIG9mIGJvcmRlcnNcbiAgICBub1dyYXA6IGJvb2xlYW4sIC8vIGA8dGQ+YCBhbmQgYDx0aD5gXG4gICAgb2JqZWN0OiBudWxsLCAvLyBgPGFwcGxldD5gXG4gICAgcHJvZmlsZTogbnVsbCwgLy8gYDxoZWFkPmBcbiAgICBwcm9tcHQ6IG51bGwsIC8vIGA8aXNpbmRleD5gXG4gICAgcmV2OiBudWxsLCAvLyBgPGxpbms+YFxuICAgIHJpZ2h0TWFyZ2luOiBudW1iZXIsIC8vIGA8Ym9keT5gXG4gICAgcnVsZXM6IG51bGwsIC8vIGA8dGFibGU+YFxuICAgIHNjaGVtZTogbnVsbCwgLy8gYDxtZXRhPmBcbiAgICBzY3JvbGxpbmc6IGJvb2xlYW5pc2gsIC8vIGA8ZnJhbWU+YC4gVXNlIG92ZXJmbG93IGluIHRoZSBjaGlsZCBjb250ZXh0XG4gICAgc3RhbmRieTogbnVsbCwgLy8gYDxvYmplY3Q+YFxuICAgIHN1bW1hcnk6IG51bGwsIC8vIGA8dGFibGU+YFxuICAgIHRleHQ6IG51bGwsIC8vIGA8Ym9keT5gLiBVc2UgQ1NTIGBjb2xvcmAgaW5zdGVhZFxuICAgIHRvcE1hcmdpbjogbnVtYmVyLCAvLyBgPGJvZHk+YFxuICAgIHZhbHVlVHlwZTogbnVsbCwgLy8gYDxwYXJhbT5gXG4gICAgdmVyc2lvbjogbnVsbCwgLy8gYDxodG1sPmAuIFVzZSBhIGRvY3R5cGUuXG4gICAgdkFsaWduOiBudWxsLCAvLyBTZXZlcmFsLiBVc2UgQ1NTIGB2ZXJ0aWNhbC1hbGlnbmAgaW5zdGVhZFxuICAgIHZMaW5rOiBudWxsLCAvLyBgPGJvZHk+YC4gVXNlIENTUyBgYTp2aXNpdGVkIHtjb2xvcn1gIGluc3RlYWRcbiAgICB2U3BhY2U6IG51bWJlciwgLy8gYDxpbWc+YCBhbmQgYDxvYmplY3Q+YFxuXG4gICAgLy8gTm9uLXN0YW5kYXJkIFByb3BlcnRpZXMuXG4gICAgYWxsb3dUcmFuc3BhcmVuY3k6IG51bGwsXG4gICAgYXV0b0NvcnJlY3Q6IG51bGwsXG4gICAgYXV0b1NhdmU6IG51bGwsXG4gICAgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmU6IGJvb2xlYW4sXG4gICAgZGlzYWJsZVJlbW90ZVBsYXliYWNrOiBib29sZWFuLFxuICAgIHByZWZpeDogbnVsbCxcbiAgICBwcm9wZXJ0eTogbnVsbCxcbiAgICByZXN1bHRzOiBudW1iZXIsXG4gICAgc2VjdXJpdHk6IG51bGwsXG4gICAgdW5zZWxlY3RhYmxlOiBudWxsXG4gIH1cbn0pXG4iLCJpbXBvcnQge1xuICBib29sZWFuLFxuICBudW1iZXIsXG4gIHNwYWNlU2VwYXJhdGVkLFxuICBjb21tYVNlcGFyYXRlZCxcbiAgY29tbWFPclNwYWNlU2VwYXJhdGVkXG59IGZyb20gJy4vdXRpbC90eXBlcy5qcydcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL3V0aWwvY3JlYXRlLmpzJ1xuaW1wb3J0IHtjYXNlU2Vuc2l0aXZlVHJhbnNmb3JtfSBmcm9tICcuL3V0aWwvY2FzZS1zZW5zaXRpdmUtdHJhbnNmb3JtLmpzJ1xuXG5leHBvcnQgY29uc3Qgc3ZnID0gY3JlYXRlKHtcbiAgc3BhY2U6ICdzdmcnLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsXG4gICAgYWxpZ25tZW50QmFzZWxpbmU6ICdhbGlnbm1lbnQtYmFzZWxpbmUnLFxuICAgIGFyYWJpY0Zvcm06ICdhcmFiaWMtZm9ybScsXG4gICAgYmFzZWxpbmVTaGlmdDogJ2Jhc2VsaW5lLXNoaWZ0JyxcbiAgICBjYXBIZWlnaHQ6ICdjYXAtaGVpZ2h0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgY2xpcFBhdGg6ICdjbGlwLXBhdGgnLFxuICAgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJyxcbiAgICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0aW9uJyxcbiAgICBjb2xvckludGVycG9sYXRpb25GaWx0ZXJzOiAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyxcbiAgICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxcbiAgICBjb2xvclJlbmRlcmluZzogJ2NvbG9yLXJlbmRlcmluZycsXG4gICAgY3Jvc3NPcmlnaW46ICdjcm9zc29yaWdpbicsXG4gICAgZGF0YVR5cGU6ICdkYXRhdHlwZScsXG4gICAgZG9taW5hbnRCYXNlbGluZTogJ2RvbWluYW50LWJhc2VsaW5lJyxcbiAgICBlbmFibGVCYWNrZ3JvdW5kOiAnZW5hYmxlLWJhY2tncm91bmQnLFxuICAgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgICBmaWxsUnVsZTogJ2ZpbGwtcnVsZScsXG4gICAgZmxvb2RDb2xvcjogJ2Zsb29kLWNvbG9yJyxcbiAgICBmbG9vZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JyxcbiAgICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICAgIGZvbnRTaXplOiAnZm9udC1zaXplJyxcbiAgICBmb250U2l6ZUFkanVzdDogJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICAgIGZvbnRTdHJldGNoOiAnZm9udC1zdHJldGNoJyxcbiAgICBmb250U3R5bGU6ICdmb250LXN0eWxlJyxcbiAgICBmb250VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gICAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgICBnbHlwaE5hbWU6ICdnbHlwaC1uYW1lJyxcbiAgICBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDogJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnLFxuICAgIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDogJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyxcbiAgICBocmVmTGFuZzogJ2hyZWZsYW5nJyxcbiAgICBob3JpekFkdlg6ICdob3Jpei1hZHYteCcsXG4gICAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLFxuICAgIGhvcml6T3JpZ2luWTogJ2hvcml6LW9yaWdpbi15JyxcbiAgICBpbWFnZVJlbmRlcmluZzogJ2ltYWdlLXJlbmRlcmluZycsXG4gICAgbGV0dGVyU3BhY2luZzogJ2xldHRlci1zcGFjaW5nJyxcbiAgICBsaWdodGluZ0NvbG9yOiAnbGlnaHRpbmctY29sb3InLFxuICAgIG1hcmtlckVuZDogJ21hcmtlci1lbmQnLFxuICAgIG1hcmtlck1pZDogJ21hcmtlci1taWQnLFxuICAgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JyxcbiAgICBuYXZEb3duOiAnbmF2LWRvd24nLFxuICAgIG5hdkRvd25MZWZ0OiAnbmF2LWRvd24tbGVmdCcsXG4gICAgbmF2RG93blJpZ2h0OiAnbmF2LWRvd24tcmlnaHQnLFxuICAgIG5hdkxlZnQ6ICduYXYtbGVmdCcsXG4gICAgbmF2TmV4dDogJ25hdi1uZXh0JyxcbiAgICBuYXZQcmV2OiAnbmF2LXByZXYnLFxuICAgIG5hdlJpZ2h0OiAnbmF2LXJpZ2h0JyxcbiAgICBuYXZVcDogJ25hdi11cCcsXG4gICAgbmF2VXBMZWZ0OiAnbmF2LXVwLWxlZnQnLFxuICAgIG5hdlVwUmlnaHQ6ICduYXYtdXAtcmlnaHQnLFxuICAgIG9uQWJvcnQ6ICdvbmFib3J0JyxcbiAgICBvbkFjdGl2YXRlOiAnb25hY3RpdmF0ZScsXG4gICAgb25BZnRlclByaW50OiAnb25hZnRlcnByaW50JyxcbiAgICBvbkJlZm9yZVByaW50OiAnb25iZWZvcmVwcmludCcsXG4gICAgb25CZWdpbjogJ29uYmVnaW4nLFxuICAgIG9uQ2FuY2VsOiAnb25jYW5jZWwnLFxuICAgIG9uQ2FuUGxheTogJ29uY2FucGxheScsXG4gICAgb25DYW5QbGF5VGhyb3VnaDogJ29uY2FucGxheXRocm91Z2gnLFxuICAgIG9uQ2hhbmdlOiAnb25jaGFuZ2UnLFxuICAgIG9uQ2xpY2s6ICdvbmNsaWNrJyxcbiAgICBvbkNsb3NlOiAnb25jbG9zZScsXG4gICAgb25Db3B5OiAnb25jb3B5JyxcbiAgICBvbkN1ZUNoYW5nZTogJ29uY3VlY2hhbmdlJyxcbiAgICBvbkN1dDogJ29uY3V0JyxcbiAgICBvbkRibENsaWNrOiAnb25kYmxjbGljaycsXG4gICAgb25EcmFnOiAnb25kcmFnJyxcbiAgICBvbkRyYWdFbmQ6ICdvbmRyYWdlbmQnLFxuICAgIG9uRHJhZ0VudGVyOiAnb25kcmFnZW50ZXInLFxuICAgIG9uRHJhZ0V4aXQ6ICdvbmRyYWdleGl0JyxcbiAgICBvbkRyYWdMZWF2ZTogJ29uZHJhZ2xlYXZlJyxcbiAgICBvbkRyYWdPdmVyOiAnb25kcmFnb3ZlcicsXG4gICAgb25EcmFnU3RhcnQ6ICdvbmRyYWdzdGFydCcsXG4gICAgb25Ecm9wOiAnb25kcm9wJyxcbiAgICBvbkR1cmF0aW9uQ2hhbmdlOiAnb25kdXJhdGlvbmNoYW5nZScsXG4gICAgb25FbXB0aWVkOiAnb25lbXB0aWVkJyxcbiAgICBvbkVuZDogJ29uZW5kJyxcbiAgICBvbkVuZGVkOiAnb25lbmRlZCcsXG4gICAgb25FcnJvcjogJ29uZXJyb3InLFxuICAgIG9uRm9jdXM6ICdvbmZvY3VzJyxcbiAgICBvbkZvY3VzSW46ICdvbmZvY3VzaW4nLFxuICAgIG9uRm9jdXNPdXQ6ICdvbmZvY3Vzb3V0JyxcbiAgICBvbkhhc2hDaGFuZ2U6ICdvbmhhc2hjaGFuZ2UnLFxuICAgIG9uSW5wdXQ6ICdvbmlucHV0JyxcbiAgICBvbkludmFsaWQ6ICdvbmludmFsaWQnLFxuICAgIG9uS2V5RG93bjogJ29ua2V5ZG93bicsXG4gICAgb25LZXlQcmVzczogJ29ua2V5cHJlc3MnLFxuICAgIG9uS2V5VXA6ICdvbmtleXVwJyxcbiAgICBvbkxvYWQ6ICdvbmxvYWQnLFxuICAgIG9uTG9hZGVkRGF0YTogJ29ubG9hZGVkZGF0YScsXG4gICAgb25Mb2FkZWRNZXRhZGF0YTogJ29ubG9hZGVkbWV0YWRhdGEnLFxuICAgIG9uTG9hZFN0YXJ0OiAnb25sb2Fkc3RhcnQnLFxuICAgIG9uTWVzc2FnZTogJ29ubWVzc2FnZScsXG4gICAgb25Nb3VzZURvd246ICdvbm1vdXNlZG93bicsXG4gICAgb25Nb3VzZUVudGVyOiAnb25tb3VzZWVudGVyJyxcbiAgICBvbk1vdXNlTGVhdmU6ICdvbm1vdXNlbGVhdmUnLFxuICAgIG9uTW91c2VNb3ZlOiAnb25tb3VzZW1vdmUnLFxuICAgIG9uTW91c2VPdXQ6ICdvbm1vdXNlb3V0JyxcbiAgICBvbk1vdXNlT3ZlcjogJ29ubW91c2VvdmVyJyxcbiAgICBvbk1vdXNlVXA6ICdvbm1vdXNldXAnLFxuICAgIG9uTW91c2VXaGVlbDogJ29ubW91c2V3aGVlbCcsXG4gICAgb25PZmZsaW5lOiAnb25vZmZsaW5lJyxcbiAgICBvbk9ubGluZTogJ29ub25saW5lJyxcbiAgICBvblBhZ2VIaWRlOiAnb25wYWdlaGlkZScsXG4gICAgb25QYWdlU2hvdzogJ29ucGFnZXNob3cnLFxuICAgIG9uUGFzdGU6ICdvbnBhc3RlJyxcbiAgICBvblBhdXNlOiAnb25wYXVzZScsXG4gICAgb25QbGF5OiAnb25wbGF5JyxcbiAgICBvblBsYXlpbmc6ICdvbnBsYXlpbmcnLFxuICAgIG9uUG9wU3RhdGU6ICdvbnBvcHN0YXRlJyxcbiAgICBvblByb2dyZXNzOiAnb25wcm9ncmVzcycsXG4gICAgb25SYXRlQ2hhbmdlOiAnb25yYXRlY2hhbmdlJyxcbiAgICBvblJlcGVhdDogJ29ucmVwZWF0JyxcbiAgICBvblJlc2V0OiAnb25yZXNldCcsXG4gICAgb25SZXNpemU6ICdvbnJlc2l6ZScsXG4gICAgb25TY3JvbGw6ICdvbnNjcm9sbCcsXG4gICAgb25TZWVrZWQ6ICdvbnNlZWtlZCcsXG4gICAgb25TZWVraW5nOiAnb25zZWVraW5nJyxcbiAgICBvblNlbGVjdDogJ29uc2VsZWN0JyxcbiAgICBvblNob3c6ICdvbnNob3cnLFxuICAgIG9uU3RhbGxlZDogJ29uc3RhbGxlZCcsXG4gICAgb25TdG9yYWdlOiAnb25zdG9yYWdlJyxcbiAgICBvblN1Ym1pdDogJ29uc3VibWl0JyxcbiAgICBvblN1c3BlbmQ6ICdvbnN1c3BlbmQnLFxuICAgIG9uVGltZVVwZGF0ZTogJ29udGltZXVwZGF0ZScsXG4gICAgb25Ub2dnbGU6ICdvbnRvZ2dsZScsXG4gICAgb25VbmxvYWQ6ICdvbnVubG9hZCcsXG4gICAgb25Wb2x1bWVDaGFuZ2U6ICdvbnZvbHVtZWNoYW5nZScsXG4gICAgb25XYWl0aW5nOiAnb253YWl0aW5nJyxcbiAgICBvblpvb206ICdvbnpvb20nLFxuICAgIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3NpdGlvbicsXG4gICAgb3ZlcmxpbmVUaGlja25lc3M6ICdvdmVybGluZS10aGlja25lc3MnLFxuICAgIHBhaW50T3JkZXI6ICdwYWludC1vcmRlcicsXG4gICAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcbiAgICBwb2ludGVyRXZlbnRzOiAncG9pbnRlci1ldmVudHMnLFxuICAgIHJlZmVycmVyUG9saWN5OiAncmVmZXJyZXJwb2xpY3knLFxuICAgIHJlbmRlcmluZ0ludGVudDogJ3JlbmRlcmluZy1pbnRlbnQnLFxuICAgIHNoYXBlUmVuZGVyaW5nOiAnc2hhcGUtcmVuZGVyaW5nJyxcbiAgICBzdG9wQ29sb3I6ICdzdG9wLWNvbG9yJyxcbiAgICBzdG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsXG4gICAgc3RyaWtldGhyb3VnaFBvc2l0aW9uOiAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbicsXG4gICAgc3RyaWtldGhyb3VnaFRoaWNrbmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJyxcbiAgICBzdHJva2VEYXNoQXJyYXk6ICdzdHJva2UtZGFzaGFycmF5JyxcbiAgICBzdHJva2VEYXNoT2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICAgIHN0cm9rZUxpbmVDYXA6ICdzdHJva2UtbGluZWNhcCcsXG4gICAgc3Ryb2tlTGluZUpvaW46ICdzdHJva2UtbGluZWpvaW4nLFxuICAgIHN0cm9rZU1pdGVyTGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gICAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5JyxcbiAgICBzdHJva2VXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG4gICAgdGFiSW5kZXg6ICd0YWJpbmRleCcsXG4gICAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJyxcbiAgICB0ZXh0RGVjb3JhdGlvbjogJ3RleHQtZGVjb3JhdGlvbicsXG4gICAgdGV4dFJlbmRlcmluZzogJ3RleHQtcmVuZGVyaW5nJyxcbiAgICB0cmFuc2Zvcm1PcmlnaW46ICd0cmFuc2Zvcm0tb3JpZ2luJyxcbiAgICB0eXBlT2Y6ICd0eXBlb2YnLFxuICAgIHVuZGVybGluZVBvc2l0aW9uOiAndW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNzJyxcbiAgICB1bmljb2RlQmlkaTogJ3VuaWNvZGUtYmlkaScsXG4gICAgdW5pY29kZVJhbmdlOiAndW5pY29kZS1yYW5nZScsXG4gICAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScsXG4gICAgdkFscGhhYmV0aWM6ICd2LWFscGhhYmV0aWMnLFxuICAgIHZIYW5naW5nOiAndi1oYW5naW5nJyxcbiAgICB2SWRlb2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJyxcbiAgICB2TWF0aGVtYXRpY2FsOiAndi1tYXRoZW1hdGljYWwnLFxuICAgIHZlY3RvckVmZmVjdDogJ3ZlY3Rvci1lZmZlY3QnLFxuICAgIHZlcnRBZHZZOiAndmVydC1hZHYteScsXG4gICAgdmVydE9yaWdpblg6ICd2ZXJ0LW9yaWdpbi14JyxcbiAgICB2ZXJ0T3JpZ2luWTogJ3ZlcnQtb3JpZ2luLXknLFxuICAgIHdvcmRTcGFjaW5nOiAnd29yZC1zcGFjaW5nJyxcbiAgICB3cml0aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsXG4gICAgeEhlaWdodDogJ3gtaGVpZ2h0JyxcbiAgICAvLyBUaGVzZSB3ZXJlIGNhbWVsY2FzZWQgaW4gVGlueS4gTm93IGxvd2VyY2FzZWQgaW4gU1ZHIDJcbiAgICBwbGF5YmFja09yZGVyOiAncGxheWJhY2tvcmRlcicsXG4gICAgdGltZWxpbmVCZWdpbjogJ3RpbWVsaW5lYmVnaW4nXG4gIH0sXG4gIHRyYW5zZm9ybTogY2FzZVNlbnNpdGl2ZVRyYW5zZm9ybSxcbiAgcHJvcGVydGllczoge1xuICAgIGFib3V0OiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgYWNjZW50SGVpZ2h0OiBudW1iZXIsXG4gICAgYWNjdW11bGF0ZTogbnVsbCxcbiAgICBhZGRpdGl2ZTogbnVsbCxcbiAgICBhbGlnbm1lbnRCYXNlbGluZTogbnVsbCxcbiAgICBhbHBoYWJldGljOiBudW1iZXIsXG4gICAgYW1wbGl0dWRlOiBudW1iZXIsXG4gICAgYXJhYmljRm9ybTogbnVsbCxcbiAgICBhc2NlbnQ6IG51bWJlcixcbiAgICBhdHRyaWJ1dGVOYW1lOiBudWxsLFxuICAgIGF0dHJpYnV0ZVR5cGU6IG51bGwsXG4gICAgYXppbXV0aDogbnVtYmVyLFxuICAgIGJhbmR3aWR0aDogbnVsbCxcbiAgICBiYXNlbGluZVNoaWZ0OiBudWxsLFxuICAgIGJhc2VGcmVxdWVuY3k6IG51bGwsXG4gICAgYmFzZVByb2ZpbGU6IG51bGwsXG4gICAgYmJveDogbnVsbCxcbiAgICBiZWdpbjogbnVsbCxcbiAgICBiaWFzOiBudW1iZXIsXG4gICAgYnk6IG51bGwsXG4gICAgY2FsY01vZGU6IG51bGwsXG4gICAgY2FwSGVpZ2h0OiBudW1iZXIsXG4gICAgY2xhc3NOYW1lOiBzcGFjZVNlcGFyYXRlZCxcbiAgICBjbGlwOiBudWxsLFxuICAgIGNsaXBQYXRoOiBudWxsLFxuICAgIGNsaXBQYXRoVW5pdHM6IG51bGwsXG4gICAgY2xpcFJ1bGU6IG51bGwsXG4gICAgY29sb3I6IG51bGwsXG4gICAgY29sb3JJbnRlcnBvbGF0aW9uOiBudWxsLFxuICAgIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6IG51bGwsXG4gICAgY29sb3JQcm9maWxlOiBudWxsLFxuICAgIGNvbG9yUmVuZGVyaW5nOiBudWxsLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgY29udGVudFNjcmlwdFR5cGU6IG51bGwsXG4gICAgY29udGVudFN0eWxlVHlwZTogbnVsbCxcbiAgICBjcm9zc09yaWdpbjogbnVsbCxcbiAgICBjdXJzb3I6IG51bGwsXG4gICAgY3g6IG51bGwsXG4gICAgY3k6IG51bGwsXG4gICAgZDogbnVsbCxcbiAgICBkYXRhVHlwZTogbnVsbCxcbiAgICBkZWZhdWx0QWN0aW9uOiBudWxsLFxuICAgIGRlc2NlbnQ6IG51bWJlcixcbiAgICBkaWZmdXNlQ29uc3RhbnQ6IG51bWJlcixcbiAgICBkaXJlY3Rpb246IG51bGwsXG4gICAgZGlzcGxheTogbnVsbCxcbiAgICBkdXI6IG51bGwsXG4gICAgZGl2aXNvcjogbnVtYmVyLFxuICAgIGRvbWluYW50QmFzZWxpbmU6IG51bGwsXG4gICAgZG93bmxvYWQ6IGJvb2xlYW4sXG4gICAgZHg6IG51bGwsXG4gICAgZHk6IG51bGwsXG4gICAgZWRnZU1vZGU6IG51bGwsXG4gICAgZWRpdGFibGU6IG51bGwsXG4gICAgZWxldmF0aW9uOiBudW1iZXIsXG4gICAgZW5hYmxlQmFja2dyb3VuZDogbnVsbCxcbiAgICBlbmQ6IG51bGwsXG4gICAgZXZlbnQ6IG51bGwsXG4gICAgZXhwb25lbnQ6IG51bWJlcixcbiAgICBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiBudWxsLFxuICAgIGZpbGw6IG51bGwsXG4gICAgZmlsbE9wYWNpdHk6IG51bWJlcixcbiAgICBmaWxsUnVsZTogbnVsbCxcbiAgICBmaWx0ZXI6IG51bGwsXG4gICAgZmlsdGVyUmVzOiBudWxsLFxuICAgIGZpbHRlclVuaXRzOiBudWxsLFxuICAgIGZsb29kQ29sb3I6IG51bGwsXG4gICAgZmxvb2RPcGFjaXR5OiBudWxsLFxuICAgIGZvY3VzYWJsZTogbnVsbCxcbiAgICBmb2N1c0hpZ2hsaWdodDogbnVsbCxcbiAgICBmb250RmFtaWx5OiBudWxsLFxuICAgIGZvbnRTaXplOiBudWxsLFxuICAgIGZvbnRTaXplQWRqdXN0OiBudWxsLFxuICAgIGZvbnRTdHJldGNoOiBudWxsLFxuICAgIGZvbnRTdHlsZTogbnVsbCxcbiAgICBmb250VmFyaWFudDogbnVsbCxcbiAgICBmb250V2VpZ2h0OiBudWxsLFxuICAgIGZvcm1hdDogbnVsbCxcbiAgICBmcjogbnVsbCxcbiAgICBmcm9tOiBudWxsLFxuICAgIGZ4OiBudWxsLFxuICAgIGZ5OiBudWxsLFxuICAgIGcxOiBjb21tYVNlcGFyYXRlZCxcbiAgICBnMjogY29tbWFTZXBhcmF0ZWQsXG4gICAgZ2x5cGhOYW1lOiBjb21tYVNlcGFyYXRlZCxcbiAgICBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDogbnVsbCxcbiAgICBnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6IG51bGwsXG4gICAgZ2x5cGhSZWY6IG51bGwsXG4gICAgZ3JhZGllbnRUcmFuc2Zvcm06IG51bGwsXG4gICAgZ3JhZGllbnRVbml0czogbnVsbCxcbiAgICBoYW5kbGVyOiBudWxsLFxuICAgIGhhbmdpbmc6IG51bWJlcixcbiAgICBoYXRjaENvbnRlbnRVbml0czogbnVsbCxcbiAgICBoYXRjaFVuaXRzOiBudWxsLFxuICAgIGhlaWdodDogbnVsbCxcbiAgICBocmVmOiBudWxsLFxuICAgIGhyZWZMYW5nOiBudWxsLFxuICAgIGhvcml6QWR2WDogbnVtYmVyLFxuICAgIGhvcml6T3JpZ2luWDogbnVtYmVyLFxuICAgIGhvcml6T3JpZ2luWTogbnVtYmVyLFxuICAgIGlkOiBudWxsLFxuICAgIGlkZW9ncmFwaGljOiBudW1iZXIsXG4gICAgaW1hZ2VSZW5kZXJpbmc6IG51bGwsXG4gICAgaW5pdGlhbFZpc2liaWxpdHk6IG51bGwsXG4gICAgaW46IG51bGwsXG4gICAgaW4yOiBudWxsLFxuICAgIGludGVyY2VwdDogbnVtYmVyLFxuICAgIGs6IG51bWJlcixcbiAgICBrMTogbnVtYmVyLFxuICAgIGsyOiBudW1iZXIsXG4gICAgazM6IG51bWJlcixcbiAgICBrNDogbnVtYmVyLFxuICAgIGtlcm5lbE1hdHJpeDogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIGtlcm5lbFVuaXRMZW5ndGg6IG51bGwsXG4gICAga2V5UG9pbnRzOiBudWxsLCAvLyBTRU1JX0NPTE9OX1NFUEFSQVRFRFxuICAgIGtleVNwbGluZXM6IG51bGwsIC8vIFNFTUlfQ09MT05fU0VQQVJBVEVEXG4gICAga2V5VGltZXM6IG51bGwsIC8vIFNFTUlfQ09MT05fU0VQQVJBVEVEXG4gICAga2VybmluZzogbnVsbCxcbiAgICBsYW5nOiBudWxsLFxuICAgIGxlbmd0aEFkanVzdDogbnVsbCxcbiAgICBsZXR0ZXJTcGFjaW5nOiBudWxsLFxuICAgIGxpZ2h0aW5nQ29sb3I6IG51bGwsXG4gICAgbGltaXRpbmdDb25lQW5nbGU6IG51bWJlcixcbiAgICBsb2NhbDogbnVsbCxcbiAgICBtYXJrZXJFbmQ6IG51bGwsXG4gICAgbWFya2VyTWlkOiBudWxsLFxuICAgIG1hcmtlclN0YXJ0OiBudWxsLFxuICAgIG1hcmtlckhlaWdodDogbnVsbCxcbiAgICBtYXJrZXJVbml0czogbnVsbCxcbiAgICBtYXJrZXJXaWR0aDogbnVsbCxcbiAgICBtYXNrOiBudWxsLFxuICAgIG1hc2tDb250ZW50VW5pdHM6IG51bGwsXG4gICAgbWFza1VuaXRzOiBudWxsLFxuICAgIG1hdGhlbWF0aWNhbDogbnVsbCxcbiAgICBtYXg6IG51bGwsXG4gICAgbWVkaWE6IG51bGwsXG4gICAgbWVkaWFDaGFyYWN0ZXJFbmNvZGluZzogbnVsbCxcbiAgICBtZWRpYUNvbnRlbnRFbmNvZGluZ3M6IG51bGwsXG4gICAgbWVkaWFTaXplOiBudW1iZXIsXG4gICAgbWVkaWFUaW1lOiBudWxsLFxuICAgIG1ldGhvZDogbnVsbCxcbiAgICBtaW46IG51bGwsXG4gICAgbW9kZTogbnVsbCxcbiAgICBuYW1lOiBudWxsLFxuICAgIG5hdkRvd246IG51bGwsXG4gICAgbmF2RG93bkxlZnQ6IG51bGwsXG4gICAgbmF2RG93blJpZ2h0OiBudWxsLFxuICAgIG5hdkxlZnQ6IG51bGwsXG4gICAgbmF2TmV4dDogbnVsbCxcbiAgICBuYXZQcmV2OiBudWxsLFxuICAgIG5hdlJpZ2h0OiBudWxsLFxuICAgIG5hdlVwOiBudWxsLFxuICAgIG5hdlVwTGVmdDogbnVsbCxcbiAgICBuYXZVcFJpZ2h0OiBudWxsLFxuICAgIG51bU9jdGF2ZXM6IG51bGwsXG4gICAgb2JzZXJ2ZXI6IG51bGwsXG4gICAgb2Zmc2V0OiBudWxsLFxuICAgIG9uQWJvcnQ6IG51bGwsXG4gICAgb25BY3RpdmF0ZTogbnVsbCxcbiAgICBvbkFmdGVyUHJpbnQ6IG51bGwsXG4gICAgb25CZWZvcmVQcmludDogbnVsbCxcbiAgICBvbkJlZ2luOiBudWxsLFxuICAgIG9uQ2FuY2VsOiBudWxsLFxuICAgIG9uQ2FuUGxheTogbnVsbCxcbiAgICBvbkNhblBsYXlUaHJvdWdoOiBudWxsLFxuICAgIG9uQ2hhbmdlOiBudWxsLFxuICAgIG9uQ2xpY2s6IG51bGwsXG4gICAgb25DbG9zZTogbnVsbCxcbiAgICBvbkNvcHk6IG51bGwsXG4gICAgb25DdWVDaGFuZ2U6IG51bGwsXG4gICAgb25DdXQ6IG51bGwsXG4gICAgb25EYmxDbGljazogbnVsbCxcbiAgICBvbkRyYWc6IG51bGwsXG4gICAgb25EcmFnRW5kOiBudWxsLFxuICAgIG9uRHJhZ0VudGVyOiBudWxsLFxuICAgIG9uRHJhZ0V4aXQ6IG51bGwsXG4gICAgb25EcmFnTGVhdmU6IG51bGwsXG4gICAgb25EcmFnT3ZlcjogbnVsbCxcbiAgICBvbkRyYWdTdGFydDogbnVsbCxcbiAgICBvbkRyb3A6IG51bGwsXG4gICAgb25EdXJhdGlvbkNoYW5nZTogbnVsbCxcbiAgICBvbkVtcHRpZWQ6IG51bGwsXG4gICAgb25FbmQ6IG51bGwsXG4gICAgb25FbmRlZDogbnVsbCxcbiAgICBvbkVycm9yOiBudWxsLFxuICAgIG9uRm9jdXM6IG51bGwsXG4gICAgb25Gb2N1c0luOiBudWxsLFxuICAgIG9uRm9jdXNPdXQ6IG51bGwsXG4gICAgb25IYXNoQ2hhbmdlOiBudWxsLFxuICAgIG9uSW5wdXQ6IG51bGwsXG4gICAgb25JbnZhbGlkOiBudWxsLFxuICAgIG9uS2V5RG93bjogbnVsbCxcbiAgICBvbktleVByZXNzOiBudWxsLFxuICAgIG9uS2V5VXA6IG51bGwsXG4gICAgb25Mb2FkOiBudWxsLFxuICAgIG9uTG9hZGVkRGF0YTogbnVsbCxcbiAgICBvbkxvYWRlZE1ldGFkYXRhOiBudWxsLFxuICAgIG9uTG9hZFN0YXJ0OiBudWxsLFxuICAgIG9uTWVzc2FnZTogbnVsbCxcbiAgICBvbk1vdXNlRG93bjogbnVsbCxcbiAgICBvbk1vdXNlRW50ZXI6IG51bGwsXG4gICAgb25Nb3VzZUxlYXZlOiBudWxsLFxuICAgIG9uTW91c2VNb3ZlOiBudWxsLFxuICAgIG9uTW91c2VPdXQ6IG51bGwsXG4gICAgb25Nb3VzZU92ZXI6IG51bGwsXG4gICAgb25Nb3VzZVVwOiBudWxsLFxuICAgIG9uTW91c2VXaGVlbDogbnVsbCxcbiAgICBvbk9mZmxpbmU6IG51bGwsXG4gICAgb25PbmxpbmU6IG51bGwsXG4gICAgb25QYWdlSGlkZTogbnVsbCxcbiAgICBvblBhZ2VTaG93OiBudWxsLFxuICAgIG9uUGFzdGU6IG51bGwsXG4gICAgb25QYXVzZTogbnVsbCxcbiAgICBvblBsYXk6IG51bGwsXG4gICAgb25QbGF5aW5nOiBudWxsLFxuICAgIG9uUG9wU3RhdGU6IG51bGwsXG4gICAgb25Qcm9ncmVzczogbnVsbCxcbiAgICBvblJhdGVDaGFuZ2U6IG51bGwsXG4gICAgb25SZXBlYXQ6IG51bGwsXG4gICAgb25SZXNldDogbnVsbCxcbiAgICBvblJlc2l6ZTogbnVsbCxcbiAgICBvblNjcm9sbDogbnVsbCxcbiAgICBvblNlZWtlZDogbnVsbCxcbiAgICBvblNlZWtpbmc6IG51bGwsXG4gICAgb25TZWxlY3Q6IG51bGwsXG4gICAgb25TaG93OiBudWxsLFxuICAgIG9uU3RhbGxlZDogbnVsbCxcbiAgICBvblN0b3JhZ2U6IG51bGwsXG4gICAgb25TdWJtaXQ6IG51bGwsXG4gICAgb25TdXNwZW5kOiBudWxsLFxuICAgIG9uVGltZVVwZGF0ZTogbnVsbCxcbiAgICBvblRvZ2dsZTogbnVsbCxcbiAgICBvblVubG9hZDogbnVsbCxcbiAgICBvblZvbHVtZUNoYW5nZTogbnVsbCxcbiAgICBvbldhaXRpbmc6IG51bGwsXG4gICAgb25ab29tOiBudWxsLFxuICAgIG9wYWNpdHk6IG51bGwsXG4gICAgb3BlcmF0b3I6IG51bGwsXG4gICAgb3JkZXI6IG51bGwsXG4gICAgb3JpZW50OiBudWxsLFxuICAgIG9yaWVudGF0aW9uOiBudWxsLFxuICAgIG9yaWdpbjogbnVsbCxcbiAgICBvdmVyZmxvdzogbnVsbCxcbiAgICBvdmVybGF5OiBudWxsLFxuICAgIG92ZXJsaW5lUG9zaXRpb246IG51bWJlcixcbiAgICBvdmVybGluZVRoaWNrbmVzczogbnVtYmVyLFxuICAgIHBhaW50T3JkZXI6IG51bGwsXG4gICAgcGFub3NlMTogbnVsbCxcbiAgICBwYXRoOiBudWxsLFxuICAgIHBhdGhMZW5ndGg6IG51bWJlcixcbiAgICBwYXR0ZXJuQ29udGVudFVuaXRzOiBudWxsLFxuICAgIHBhdHRlcm5UcmFuc2Zvcm06IG51bGwsXG4gICAgcGF0dGVyblVuaXRzOiBudWxsLFxuICAgIHBoYXNlOiBudWxsLFxuICAgIHBpbmc6IHNwYWNlU2VwYXJhdGVkLFxuICAgIHBpdGNoOiBudWxsLFxuICAgIHBsYXliYWNrT3JkZXI6IG51bGwsXG4gICAgcG9pbnRlckV2ZW50czogbnVsbCxcbiAgICBwb2ludHM6IG51bGwsXG4gICAgcG9pbnRzQXRYOiBudW1iZXIsXG4gICAgcG9pbnRzQXRZOiBudW1iZXIsXG4gICAgcG9pbnRzQXRaOiBudW1iZXIsXG4gICAgcHJlc2VydmVBbHBoYTogbnVsbCxcbiAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBudWxsLFxuICAgIHByaW1pdGl2ZVVuaXRzOiBudWxsLFxuICAgIHByb3BhZ2F0ZTogbnVsbCxcbiAgICBwcm9wZXJ0eTogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHI6IG51bGwsXG4gICAgcmFkaXVzOiBudWxsLFxuICAgIHJlZmVycmVyUG9saWN5OiBudWxsLFxuICAgIHJlZlg6IG51bGwsXG4gICAgcmVmWTogbnVsbCxcbiAgICByZWw6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXY6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZW5kZXJpbmdJbnRlbnQ6IG51bGwsXG4gICAgcmVwZWF0Q291bnQ6IG51bGwsXG4gICAgcmVwZWF0RHVyOiBudWxsLFxuICAgIHJlcXVpcmVkRXh0ZW5zaW9uczogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHJlcXVpcmVkRmVhdHVyZXM6IGNvbW1hT3JTcGFjZVNlcGFyYXRlZCxcbiAgICByZXF1aXJlZEZvbnRzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVxdWlyZWRGb3JtYXRzOiBjb21tYU9yU3BhY2VTZXBhcmF0ZWQsXG4gICAgcmVzb3VyY2U6IG51bGwsXG4gICAgcmVzdGFydDogbnVsbCxcbiAgICByZXN1bHQ6IG51bGwsXG4gICAgcm90YXRlOiBudWxsLFxuICAgIHJ4OiBudWxsLFxuICAgIHJ5OiBudWxsLFxuICAgIHNjYWxlOiBudWxsLFxuICAgIHNlZWQ6IG51bGwsXG4gICAgc2hhcGVSZW5kZXJpbmc6IG51bGwsXG4gICAgc2lkZTogbnVsbCxcbiAgICBzbG9wZTogbnVsbCxcbiAgICBzbmFwc2hvdFRpbWU6IG51bGwsXG4gICAgc3BlY3VsYXJDb25zdGFudDogbnVtYmVyLFxuICAgIHNwZWN1bGFyRXhwb25lbnQ6IG51bWJlcixcbiAgICBzcHJlYWRNZXRob2Q6IG51bGwsXG4gICAgc3BhY2luZzogbnVsbCxcbiAgICBzdGFydE9mZnNldDogbnVsbCxcbiAgICBzdGREZXZpYXRpb246IG51bGwsXG4gICAgc3RlbWg6IG51bGwsXG4gICAgc3RlbXY6IG51bGwsXG4gICAgc3RpdGNoVGlsZXM6IG51bGwsXG4gICAgc3RvcENvbG9yOiBudWxsLFxuICAgIHN0b3BPcGFjaXR5OiBudWxsLFxuICAgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogbnVtYmVyLFxuICAgIHN0cmlrZXRocm91Z2hUaGlja25lc3M6IG51bWJlcixcbiAgICBzdHJpbmc6IG51bGwsXG4gICAgc3Ryb2tlOiBudWxsLFxuICAgIHN0cm9rZURhc2hBcnJheTogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHN0cm9rZURhc2hPZmZzZXQ6IG51bGwsXG4gICAgc3Ryb2tlTGluZUNhcDogbnVsbCxcbiAgICBzdHJva2VMaW5lSm9pbjogbnVsbCxcbiAgICBzdHJva2VNaXRlckxpbWl0OiBudW1iZXIsXG4gICAgc3Ryb2tlT3BhY2l0eTogbnVtYmVyLFxuICAgIHN0cm9rZVdpZHRoOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHN1cmZhY2VTY2FsZTogbnVtYmVyLFxuICAgIHN5bmNCZWhhdmlvcjogbnVsbCxcbiAgICBzeW5jQmVoYXZpb3JEZWZhdWx0OiBudWxsLFxuICAgIHN5bmNNYXN0ZXI6IG51bGwsXG4gICAgc3luY1RvbGVyYW5jZTogbnVsbCxcbiAgICBzeW5jVG9sZXJhbmNlRGVmYXVsdDogbnVsbCxcbiAgICBzeXN0ZW1MYW5ndWFnZTogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHRhYkluZGV4OiBudW1iZXIsXG4gICAgdGFibGVWYWx1ZXM6IG51bGwsXG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHRhcmdldFg6IG51bWJlcixcbiAgICB0YXJnZXRZOiBudW1iZXIsXG4gICAgdGV4dEFuY2hvcjogbnVsbCxcbiAgICB0ZXh0RGVjb3JhdGlvbjogbnVsbCxcbiAgICB0ZXh0UmVuZGVyaW5nOiBudWxsLFxuICAgIHRleHRMZW5ndGg6IG51bGwsXG4gICAgdGltZWxpbmVCZWdpbjogbnVsbCxcbiAgICB0aXRsZTogbnVsbCxcbiAgICB0cmFuc2Zvcm1CZWhhdmlvcjogbnVsbCxcbiAgICB0eXBlOiBudWxsLFxuICAgIHR5cGVPZjogY29tbWFPclNwYWNlU2VwYXJhdGVkLFxuICAgIHRvOiBudWxsLFxuICAgIHRyYW5zZm9ybTogbnVsbCxcbiAgICB0cmFuc2Zvcm1PcmlnaW46IG51bGwsXG4gICAgdTE6IG51bGwsXG4gICAgdTI6IG51bGwsXG4gICAgdW5kZXJsaW5lUG9zaXRpb246IG51bWJlcixcbiAgICB1bmRlcmxpbmVUaGlja25lc3M6IG51bWJlcixcbiAgICB1bmljb2RlOiBudWxsLFxuICAgIHVuaWNvZGVCaWRpOiBudWxsLFxuICAgIHVuaWNvZGVSYW5nZTogbnVsbCxcbiAgICB1bml0c1BlckVtOiBudW1iZXIsXG4gICAgdmFsdWVzOiBudWxsLFxuICAgIHZBbHBoYWJldGljOiBudW1iZXIsXG4gICAgdk1hdGhlbWF0aWNhbDogbnVtYmVyLFxuICAgIHZlY3RvckVmZmVjdDogbnVsbCxcbiAgICB2SGFuZ2luZzogbnVtYmVyLFxuICAgIHZJZGVvZ3JhcGhpYzogbnVtYmVyLFxuICAgIHZlcnNpb246IG51bGwsXG4gICAgdmVydEFkdlk6IG51bWJlcixcbiAgICB2ZXJ0T3JpZ2luWDogbnVtYmVyLFxuICAgIHZlcnRPcmlnaW5ZOiBudW1iZXIsXG4gICAgdmlld0JveDogbnVsbCxcbiAgICB2aWV3VGFyZ2V0OiBudWxsLFxuICAgIHZpc2liaWxpdHk6IG51bGwsXG4gICAgd2lkdGg6IG51bGwsXG4gICAgd2lkdGhzOiBudWxsLFxuICAgIHdvcmRTcGFjaW5nOiBudWxsLFxuICAgIHdyaXRpbmdNb2RlOiBudWxsLFxuICAgIHg6IG51bGwsXG4gICAgeDE6IG51bGwsXG4gICAgeDI6IG51bGwsXG4gICAgeENoYW5uZWxTZWxlY3RvcjogbnVsbCxcbiAgICB4SGVpZ2h0OiBudW1iZXIsXG4gICAgeTogbnVsbCxcbiAgICB5MTogbnVsbCxcbiAgICB5MjogbnVsbCxcbiAgICB5Q2hhbm5lbFNlbGVjdG9yOiBudWxsLFxuICAgIHo6IG51bGwsXG4gICAgem9vbUFuZFBhbjogbnVsbFxuICB9XG59KVxuIiwiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2xpYi91dGlsL2luZm8uanMnKS5JbmZvfSBJbmZvXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2xpYi91dGlsL3NjaGVtYS5qcycpLlNjaGVtYX0gU2NoZW1hXG4gKi9cblxuaW1wb3J0IHttZXJnZX0gZnJvbSAnLi9saWIvdXRpbC9tZXJnZS5qcydcbmltcG9ydCB7eGxpbmt9IGZyb20gJy4vbGliL3hsaW5rLmpzJ1xuaW1wb3J0IHt4bWx9IGZyb20gJy4vbGliL3htbC5qcydcbmltcG9ydCB7eG1sbnN9IGZyb20gJy4vbGliL3htbG5zLmpzJ1xuaW1wb3J0IHthcmlhfSBmcm9tICcuL2xpYi9hcmlhLmpzJ1xuaW1wb3J0IHtodG1sIGFzIGh0bWxCYXNlfSBmcm9tICcuL2xpYi9odG1sLmpzJ1xuaW1wb3J0IHtzdmcgYXMgc3ZnQmFzZX0gZnJvbSAnLi9saWIvc3ZnLmpzJ1xuXG5leHBvcnQge2ZpbmR9IGZyb20gJy4vbGliL2ZpbmQuanMnXG5leHBvcnQge2hhc3RUb1JlYWN0fSBmcm9tICcuL2xpYi9oYXN0LXRvLXJlYWN0LmpzJ1xuZXhwb3J0IHtub3JtYWxpemV9IGZyb20gJy4vbGliL25vcm1hbGl6ZS5qcydcbmV4cG9ydCBjb25zdCBodG1sID0gbWVyZ2UoW3htbCwgeGxpbmssIHhtbG5zLCBhcmlhLCBodG1sQmFzZV0sICdodG1sJylcbmV4cG9ydCBjb25zdCBzdmcgPSBtZXJnZShbeG1sLCB4bGluaywgeG1sbnMsIGFyaWEsIHN2Z0Jhc2VdLCAnc3ZnJylcbiIsImltcG9ydCB7dmlzaXR9IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQnXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdoYXN0JykuUm9vdH0gUm9vdFxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLkVsZW1lbnR9IEVsZW1lbnRcbiAqXG4gKiBAY2FsbGJhY2sgQWxsb3dFbGVtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtFbGVtZW50fFJvb3R9IHBhcmVudFxuICogQHJldHVybnMge2Jvb2xlYW58dW5kZWZpbmVkfVxuICpcbiAqIEB0eXBlZGVmIE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gW2FsbG93ZWRFbGVtZW50c11cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gW2Rpc2FsbG93ZWRFbGVtZW50cz1bXV1cbiAqIEBwcm9wZXJ0eSB7QWxsb3dFbGVtZW50fSBbYWxsb3dFbGVtZW50XVxuICogQHByb3BlcnR5IHtib29sZWFufSBbdW53cmFwRGlzYWxsb3dlZD1mYWxzZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlIHtpbXBvcnQoJ3VuaWZpZWQnKS5QbHVnaW48W09wdGlvbnNdLCBSb290Pn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVoeXBlRmlsdGVyKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuYWxsb3dlZEVsZW1lbnRzICYmIG9wdGlvbnMuZGlzYWxsb3dlZEVsZW1lbnRzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdPbmx5IG9uZSBvZiBgYWxsb3dlZEVsZW1lbnRzYCBhbmQgYGRpc2FsbG93ZWRFbGVtZW50c2Agc2hvdWxkIGJlIGRlZmluZWQnXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgIG9wdGlvbnMuYWxsb3dlZEVsZW1lbnRzIHx8XG4gICAgb3B0aW9ucy5kaXNhbGxvd2VkRWxlbWVudHMgfHxcbiAgICBvcHRpb25zLmFsbG93RWxlbWVudFxuICApIHtcbiAgICByZXR1cm4gKHRyZWUpID0+IHtcbiAgICAgIHZpc2l0KHRyZWUsICdlbGVtZW50JywgKG5vZGUsIGluZGV4LCBwYXJlbnRfKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IC8qKiBAdHlwZSB7RWxlbWVudHxSb290fSAqLyAocGFyZW50XylcbiAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufHVuZGVmaW5lZH0gKi9cbiAgICAgICAgbGV0IHJlbW92ZVxuXG4gICAgICAgIGlmIChvcHRpb25zLmFsbG93ZWRFbGVtZW50cykge1xuICAgICAgICAgIHJlbW92ZSA9ICFvcHRpb25zLmFsbG93ZWRFbGVtZW50cy5pbmNsdWRlcyhub2RlLnRhZ05hbWUpXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kaXNhbGxvd2VkRWxlbWVudHMpIHtcbiAgICAgICAgICByZW1vdmUgPSBvcHRpb25zLmRpc2FsbG93ZWRFbGVtZW50cy5pbmNsdWRlcyhub2RlLnRhZ05hbWUpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlbW92ZSAmJiBvcHRpb25zLmFsbG93RWxlbWVudCAmJiB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVtb3ZlID0gIW9wdGlvbnMuYWxsb3dFbGVtZW50KG5vZGUsIGluZGV4LCBwYXJlbnQpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVtb3ZlICYmIHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy51bndyYXBEaXNhbGxvd2VkICYmIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEsIC4uLm5vZGUuY2hpbGRyZW4pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGluZGV4XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIiwiY29uc3QgcHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJywgJ21haWx0bycsICd0ZWwnXVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmlcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cmlUcmFuc2Zvcm1lcih1cmkpIHtcbiAgY29uc3QgdXJsID0gKHVyaSB8fCAnJykudHJpbSgpXG4gIGNvbnN0IGZpcnN0ID0gdXJsLmNoYXJBdCgwKVxuXG4gIGlmIChmaXJzdCA9PT0gJyMnIHx8IGZpcnN0ID09PSAnLycpIHtcbiAgICByZXR1cm4gdXJsXG4gIH1cblxuICBjb25zdCBjb2xvbiA9IHVybC5pbmRleE9mKCc6JylcbiAgaWYgKGNvbG9uID09PSAtMSkge1xuICAgIHJldHVybiB1cmxcbiAgfVxuXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBwcm90b2NvbHMubGVuZ3RoKSB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBwcm90b2NvbHNbaW5kZXhdXG5cbiAgICBpZiAoXG4gICAgICBjb2xvbiA9PT0gcHJvdG9jb2wubGVuZ3RoICYmXG4gICAgICB1cmwuc2xpY2UoMCwgcHJvdG9jb2wubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBwcm90b2NvbFxuICAgICkge1xuICAgICAgcmV0dXJuIHVybFxuICAgIH1cbiAgfVxuXG4gIGluZGV4ID0gdXJsLmluZGV4T2YoJz8nKVxuICBpZiAoaW5kZXggIT09IC0xICYmIGNvbG9uID4gaW5kZXgpIHtcbiAgICByZXR1cm4gdXJsXG4gIH1cblxuICBpbmRleCA9IHVybC5pbmRleE9mKCcjJylcbiAgaWYgKGluZGV4ICE9PSAtMSAmJiBjb2xvbiA+IGluZGV4KSB7XG4gICAgcmV0dXJuIHVybFxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNjcmlwdC11cmxcbiAgcmV0dXJuICdqYXZhc2NyaXB0OnZvaWQoMCknXG59XG4iLCIvKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAqaW50ZXItZWxlbWVudCB3aGl0ZXNwYWNlKi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHRoaW5nXG4gKiAgIFRoaW5nIHRvIGNoZWNrICh0eXBpY2FsbHkgYE5vZGVgIG9yIGBzdHJpbmdgKS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIHRoZSBgdmFsdWVgIGlzIGludGVyLWVsZW1lbnQgd2hpdGVzcGFjZSAoYGJvb2xlYW5gKTogY29uc2lzdGluZyBvZlxuICogICB6ZXJvIG9yIG1vcmUgb2Ygc3BhY2UsIHRhYiAoYFxcdGApLCBsaW5lIGZlZWQgKGBcXG5gKSwgY2FycmlhZ2UgcmV0dXJuXG4gKiAgIChgXFxyYCksIG9yIGZvcm0gZmVlZCAoYFxcZmApLlxuICogICBJZiBhIG5vZGUgaXMgcGFzc2VkIGl0IG11c3QgYmUgYSBgVGV4dGAgbm9kZSwgd2hvc2UgYHZhbHVlYCBmaWVsZCBpc1xuICogICBjaGVja2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSh0aGluZykge1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgY29uc3QgdmFsdWUgPVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9va3MgbGlrZSBhIG5vZGUuXG4gICAgdGhpbmcgJiYgdHlwZW9mIHRoaW5nID09PSAnb2JqZWN0JyAmJiB0aGluZy50eXBlID09PSAndGV4dCdcbiAgICAgID8gLy8gQHRzLWV4cGVjdC1lcnJvciBsb29rcyBsaWtlIGEgdGV4dC5cbiAgICAgICAgdGhpbmcudmFsdWUgfHwgJydcbiAgICAgIDogdGhpbmdcblxuICAvLyBIVE1MIHdoaXRlc3BhY2UgZXhwcmVzc2lvbi5cbiAgLy8gU2VlIDxodHRwczovL2luZnJhLnNwZWMud2hhdHdnLm9yZy8jYXNjaWktd2hpdGVzcGFjZT4uXG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnJlcGxhY2UoL1sgXFx0XFxuXFxmXFxyXS9nLCAnJykgPT09ICcnXG59XG4iLCIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vdXRpbC9zY2hlbWEuanMnKS5TY2hlbWF9IFNjaGVtYVxuICovXG5cbmltcG9ydCB7bm9ybWFsaXplfSBmcm9tICcuL25vcm1hbGl6ZS5qcydcbmltcG9ydCB7RGVmaW5lZEluZm99IGZyb20gJy4vdXRpbC9kZWZpbmVkLWluZm8uanMnXG5pbXBvcnQge0luZm99IGZyb20gJy4vdXRpbC9pbmZvLmpzJ1xuXG5jb25zdCB2YWxpZCA9IC9eZGF0YVstXFx3LjpdKyQvaVxuY29uc3QgZGFzaCA9IC8tW2Etel0vZ1xuY29uc3QgY2FwID0gL1tBLVpdL2dcblxuLyoqXG4gKiBAcGFyYW0ge1NjaGVtYX0gc2NoZW1hXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtJbmZvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZChzY2hlbWEsIHZhbHVlKSB7XG4gIGNvbnN0IG5vcm1hbCA9IG5vcm1hbGl6ZSh2YWx1ZSlcbiAgbGV0IHByb3AgPSB2YWx1ZVxuICBsZXQgVHlwZSA9IEluZm9cblxuICBpZiAobm9ybWFsIGluIHNjaGVtYS5ub3JtYWwpIHtcbiAgICByZXR1cm4gc2NoZW1hLnByb3BlcnR5W3NjaGVtYS5ub3JtYWxbbm9ybWFsXV1cbiAgfVxuXG4gIGlmIChub3JtYWwubGVuZ3RoID4gNCAmJiBub3JtYWwuc2xpY2UoMCwgNCkgPT09ICdkYXRhJyAmJiB2YWxpZC50ZXN0KHZhbHVlKSkge1xuICAgIC8vIEF0dHJpYnV0ZSBvciBwcm9wZXJ0eS5cbiAgICBpZiAodmFsdWUuY2hhckF0KDQpID09PSAnLScpIHtcbiAgICAgIC8vIFR1cm4gaXQgaW50byBhIHByb3BlcnR5LlxuICAgICAgY29uc3QgcmVzdCA9IHZhbHVlLnNsaWNlKDUpLnJlcGxhY2UoZGFzaCwgY2FtZWxjYXNlKVxuICAgICAgcHJvcCA9ICdkYXRhJyArIHJlc3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyByZXN0LnNsaWNlKDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFR1cm4gaXQgaW50byBhbiBhdHRyaWJ1dGUuXG4gICAgICBjb25zdCByZXN0ID0gdmFsdWUuc2xpY2UoNClcblxuICAgICAgaWYgKCFkYXNoLnRlc3QocmVzdCkpIHtcbiAgICAgICAgbGV0IGRhc2hlcyA9IHJlc3QucmVwbGFjZShjYXAsIGtlYmFiKVxuXG4gICAgICAgIGlmIChkYXNoZXMuY2hhckF0KDApICE9PSAnLScpIHtcbiAgICAgICAgICBkYXNoZXMgPSAnLScgKyBkYXNoZXNcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlID0gJ2RhdGEnICsgZGFzaGVzXG4gICAgICB9XG4gICAgfVxuXG4gICAgVHlwZSA9IERlZmluZWRJbmZvXG4gIH1cblxuICByZXR1cm4gbmV3IFR5cGUocHJvcCwgdmFsdWUpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9ICQwXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBrZWJhYigkMCkge1xuICByZXR1cm4gJy0nICsgJDAudG9Mb3dlckNhc2UoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSAkMFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2FtZWxjYXNlKCQwKSB7XG4gIHJldHVybiAkMC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKVxufVxuIiwiLyoqXG4gKiBgaGFzdGAgaXMgY2xvc2UgdG8gYFJlYWN0YCwgYnV0IGRpZmZlcnMgaW4gYSBjb3VwbGUgb2YgY2FzZXMuXG4gKlxuICogVG8gZ2V0IGEgUmVhY3QgcHJvcGVydHkgZnJvbSBhIGhhc3QgcHJvcGVydHksIGNoZWNrIGlmIGl0IGlzIGluXG4gKiBgaGFzdFRvUmVhY3RgLCBpZiBpdCBpcywgdGhlbiB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUsXG4gKiBvdGhlcndpc2UsIHVzZSB0aGUgaGFzdCBwcm9wZXJ0eS5cbiAqXG4gKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc3RUb1JlYWN0ID0ge1xuICBjbGFzc0lkOiAnY2xhc3NJRCcsXG4gIGRhdGFUeXBlOiAnZGF0YXR5cGUnLFxuICBpdGVtSWQ6ICdpdGVtSUQnLFxuICBzdHJva2VEYXNoQXJyYXk6ICdzdHJva2VEYXNoYXJyYXknLFxuICBzdHJva2VEYXNoT2Zmc2V0OiAnc3Ryb2tlRGFzaG9mZnNldCcsXG4gIHN0cm9rZUxpbmVDYXA6ICdzdHJva2VMaW5lY2FwJyxcbiAgc3Ryb2tlTGluZUpvaW46ICdzdHJva2VMaW5lam9pbicsXG4gIHN0cm9rZU1pdGVyTGltaXQ6ICdzdHJva2VNaXRlcmxpbWl0JyxcbiAgdHlwZU9mOiAndHlwZW9mJyxcbiAgeExpbmtBY3R1YXRlOiAneGxpbmtBY3R1YXRlJyxcbiAgeExpbmtBcmNSb2xlOiAneGxpbmtBcmNyb2xlJyxcbiAgeExpbmtIcmVmOiAneGxpbmtIcmVmJyxcbiAgeExpbmtSb2xlOiAneGxpbmtSb2xlJyxcbiAgeExpbmtTaG93OiAneGxpbmtTaG93JyxcbiAgeExpbmtUaXRsZTogJ3hsaW5rVGl0bGUnLFxuICB4TGlua1R5cGU6ICd4bGlua1R5cGUnLFxuICB4bWxuc1hMaW5rOiAneG1sbnNYbGluaydcbn1cbiIsIi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50VHlwZTxUPn0gQ29tcG9uZW50VHlwZTxUPlxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3JlYWN0JykuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPFQ+fSBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8VD5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3JlYWN0JykuUmVhY3ROb2RlfSBSZWFjdE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9zaXRpb259IFBvc2l0aW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdoYXN0JykuRWxlbWVudH0gRWxlbWVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLkVsZW1lbnRDb250ZW50fSBFbGVtZW50Q29udGVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLlJvb3R9IFJvb3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2hhc3QnKS5UZXh0fSBUZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdoYXN0JykuQ29tbWVudH0gQ29tbWVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnaGFzdCcpLkRvY1R5cGV9IERvY3R5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3Byb3BlcnR5LWluZm9ybWF0aW9uJykuSW5mb30gSW5mb1xuICogQHR5cGVkZWYge2ltcG9ydCgncHJvcGVydHktaW5mb3JtYXRpb24nKS5TY2hlbWF9IFNjaGVtYVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9jb21wbGV4LXR5cGVzJykuUmVhY3RNYXJrZG93blByb3BzfSBSZWFjdE1hcmtkb3duUHJvcHNcbiAqXG4gKiBAdHlwZWRlZiBSYXdcbiAqIEBwcm9wZXJ0eSB7J3Jhdyd9IHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2YWx1ZVxuICpcbiAqIEB0eXBlZGVmIENvbnRleHRcbiAqIEBwcm9wZXJ0eSB7T3B0aW9uc30gb3B0aW9uc1xuICogQHByb3BlcnR5IHtTY2hlbWF9IHNjaGVtYVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxpc3REZXB0aFxuICpcbiAqIEBjYWxsYmFjayBUcmFuc2Zvcm1MaW5rXG4gKiBAcGFyYW0ge3N0cmluZ30gaHJlZlxuICogQHBhcmFtIHtBcnJheTxFbGVtZW50Q29udGVudD59IGNoaWxkcmVuXG4gKiBAcGFyYW0ge3N0cmluZz99IHRpdGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICpcbiAqIEBjYWxsYmFjayBUcmFuc2Zvcm1JbWFnZVxuICogQHBhcmFtIHtzdHJpbmd9IHNyY1xuICogQHBhcmFtIHtzdHJpbmd9IGFsdFxuICogQHBhcmFtIHtzdHJpbmc/fSB0aXRsZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdyZWFjdCcpLkhUTUxBdHRyaWJ1dGVBbmNob3JUYXJnZXR9IFRyYW5zZm9ybUxpbmtUYXJnZXRUeXBlXG4gKlxuICogQGNhbGxiYWNrIFRyYW5zZm9ybUxpbmtUYXJnZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBocmVmXG4gKiBAcGFyYW0ge0FycmF5PEVsZW1lbnRDb250ZW50Pn0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7c3RyaW5nP30gdGl0bGVcbiAqIEByZXR1cm5zIHtUcmFuc2Zvcm1MaW5rVGFyZ2V0VHlwZXx1bmRlZmluZWR9XG4gKlxuICogQHR5cGVkZWYge2tleW9mIEpTWC5JbnRyaW5zaWNFbGVtZW50c30gUmVhY3RNYXJrZG93bk5hbWVzXG4gKlxuICogVG8gZG86IGlzIGBkYXRhLXNvdXJjZXBvc2AgdHlwZWFibGU/XG4gKlxuICogQHR5cGVkZWYge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnY29kZSc+ICYgUmVhY3RNYXJrZG93blByb3BzICYge2lubGluZT86IGJvb2xlYW59fSBDb2RlUHJvcHNcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2gxJz4gJiBSZWFjdE1hcmtkb3duUHJvcHMgJiB7bGV2ZWw6IG51bWJlcn19IEhlYWRpbmdQcm9wc1xuICogQHR5cGVkZWYge0NvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnbGknPiAmIFJlYWN0TWFya2Rvd25Qcm9wcyAmIHtjaGVja2VkOiBib29sZWFufG51bGwsIGluZGV4OiBudW1iZXIsIG9yZGVyZWQ6IGJvb2xlYW59fSBMaVByb3BzXG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdvbCc+ICYgUmVhY3RNYXJrZG93blByb3BzICYge2RlcHRoOiBudW1iZXIsIG9yZGVyZWQ6IHRydWV9fSBPcmRlcmVkTGlzdFByb3BzXG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCd0YWJsZSc+ICYgUmVhY3RNYXJrZG93blByb3BzICYge3N0eWxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGlzSGVhZGVyOiBib29sZWFufX0gVGFibGVDZWxsUHJvcHNcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J3RyJz4gJiBSZWFjdE1hcmtkb3duUHJvcHMgJiB7aXNIZWFkZXI6IGJvb2xlYW59fSBUYWJsZVJvd1Byb3BzXG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCd1bCc+ICYgUmVhY3RNYXJrZG93blByb3BzICYge2RlcHRoOiBudW1iZXIsIG9yZGVyZWQ6IGZhbHNlfX0gVW5vcmRlcmVkTGlzdFByb3BzXG4gKlxuICogQHR5cGVkZWYge0NvbXBvbmVudFR5cGU8Q29kZVByb3BzPn0gQ29kZUNvbXBvbmVudFxuICogQHR5cGVkZWYge0NvbXBvbmVudFR5cGU8SGVhZGluZ1Byb3BzPn0gSGVhZGluZ0NvbXBvbmVudFxuICogQHR5cGVkZWYge0NvbXBvbmVudFR5cGU8TGlQcm9wcz59IExpQ29tcG9uZW50XG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50VHlwZTxPcmRlcmVkTGlzdFByb3BzPn0gT3JkZXJlZExpc3RDb21wb25lbnRcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRUeXBlPFRhYmxlQ2VsbFByb3BzPn0gVGFibGVDZWxsQ29tcG9uZW50XG4gKiBAdHlwZWRlZiB7Q29tcG9uZW50VHlwZTxUYWJsZVJvd1Byb3BzPn0gVGFibGVSb3dDb21wb25lbnRcbiAqIEB0eXBlZGVmIHtDb21wb25lbnRUeXBlPFVub3JkZXJlZExpc3RQcm9wcz59IFVub3JkZXJlZExpc3RDb21wb25lbnRcbiAqXG4gKiBAdHlwZWRlZiBTcGVjaWFsQ29tcG9uZW50c1xuICogQHByb3BlcnR5IHtDb2RlQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gY29kZVxuICogQHByb3BlcnR5IHtIZWFkaW5nQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gaDFcbiAqIEBwcm9wZXJ0eSB7SGVhZGluZ0NvbXBvbmVudHxSZWFjdE1hcmtkb3duTmFtZXN9IGgyXG4gKiBAcHJvcGVydHkge0hlYWRpbmdDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSBoM1xuICogQHByb3BlcnR5IHtIZWFkaW5nQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gaDRcbiAqIEBwcm9wZXJ0eSB7SGVhZGluZ0NvbXBvbmVudHxSZWFjdE1hcmtkb3duTmFtZXN9IGg1XG4gKiBAcHJvcGVydHkge0hlYWRpbmdDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSBoNlxuICogQHByb3BlcnR5IHtMaUNvbXBvbmVudHxSZWFjdE1hcmtkb3duTmFtZXN9IGxpXG4gKiBAcHJvcGVydHkge09yZGVyZWRMaXN0Q29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gb2xcbiAqIEBwcm9wZXJ0eSB7VGFibGVDZWxsQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gdGRcbiAqIEBwcm9wZXJ0eSB7VGFibGVDZWxsQ29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gdGhcbiAqIEBwcm9wZXJ0eSB7VGFibGVSb3dDb21wb25lbnR8UmVhY3RNYXJrZG93bk5hbWVzfSB0clxuICogQHByb3BlcnR5IHtVbm9yZGVyZWRMaXN0Q29tcG9uZW50fFJlYWN0TWFya2Rvd25OYW1lc30gdWxcbiAqXG4gKiBAdHlwZWRlZiB7UGFydGlhbDxPbWl0PGltcG9ydCgnLi9jb21wbGV4LXR5cGVzJykuTm9ybWFsQ29tcG9uZW50cywga2V5b2YgU3BlY2lhbENvbXBvbmVudHM+ICYgU3BlY2lhbENvbXBvbmVudHM+fSBDb21wb25lbnRzXG4gKlxuICogQHR5cGVkZWYgT3B0aW9uc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbc291cmNlUG9zPWZhbHNlXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbcmF3U291cmNlUG9zPWZhbHNlXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbc2tpcEh0bWw9ZmFsc2VdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtpbmNsdWRlRWxlbWVudEluZGV4PWZhbHNlXVxuICogQHByb3BlcnR5IHtudWxsfGZhbHNlfFRyYW5zZm9ybUxpbmt9IFt0cmFuc2Zvcm1MaW5rVXJpXVxuICogQHByb3BlcnR5IHtUcmFuc2Zvcm1JbWFnZX0gW3RyYW5zZm9ybUltYWdlVXJpXVxuICogQHByb3BlcnR5IHtUcmFuc2Zvcm1MaW5rVGFyZ2V0VHlwZXxUcmFuc2Zvcm1MaW5rVGFyZ2V0fSBbbGlua1RhcmdldF1cbiAqIEBwcm9wZXJ0eSB7Q29tcG9uZW50c30gW2NvbXBvbmVudHNdXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0SXMgZnJvbSAncmVhY3QtaXMnXG5pbXBvcnQge3doaXRlc3BhY2V9IGZyb20gJ2hhc3QtdXRpbC13aGl0ZXNwYWNlJ1xuaW1wb3J0IHtzdmcsIGZpbmQsIGhhc3RUb1JlYWN0fSBmcm9tICdwcm9wZXJ0eS1pbmZvcm1hdGlvbidcbmltcG9ydCB7c3RyaW5naWZ5IGFzIHNwYWNlc30gZnJvbSAnc3BhY2Utc2VwYXJhdGVkLXRva2VucydcbmltcG9ydCB7c3RyaW5naWZ5IGFzIGNvbW1hc30gZnJvbSAnY29tbWEtc2VwYXJhdGVkLXRva2VucydcbmltcG9ydCBzdHlsZSBmcm9tICdzdHlsZS10by1vYmplY3QnXG5cbmNvbnN0IG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIFRoZSB0YWJsZS1yZWxhdGVkIGVsZW1lbnRzIHRoYXQgbXVzdCBub3QgY29udGFpbiB3aGl0ZXNwYWNlIHRleHQgYWNjb3JkaW5nXG4vLyB0byBSZWFjdC5cbmNvbnN0IHRhYmxlRWxlbWVudHMgPSBuZXcgU2V0KFsndGFibGUnLCAndGhlYWQnLCAndGJvZHknLCAndGZvb3QnLCAndHInXSlcblxuLyoqXG4gKiBAcGFyYW0ge0NvbnRleHR9IGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudHxSb290fSBub2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZHJlblRvUmVhY3QoY29udGV4dCwgbm9kZSkge1xuICAvKiogQHR5cGUge0FycmF5PFJlYWN0Tm9kZT59ICovXG4gIGNvbnN0IGNoaWxkcmVuID0gW11cbiAgbGV0IGNoaWxkSW5kZXggPSAtMVxuICAvKiogQHR5cGUge0NvbW1lbnR8RG9jdHlwZXxFbGVtZW50fFJhd3xUZXh0fSAqL1xuICBsZXQgY2hpbGRcblxuICB3aGlsZSAoKytjaGlsZEluZGV4IDwgbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bY2hpbGRJbmRleF1cblxuICAgIGlmIChjaGlsZC50eXBlID09PSAnZWxlbWVudCcpIHtcbiAgICAgIGNoaWxkcmVuLnB1c2godG9SZWFjdChjb250ZXh0LCBjaGlsZCwgY2hpbGRJbmRleCwgbm9kZSkpXG4gICAgfSBlbHNlIGlmIChjaGlsZC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIC8vIEN1cnJlbnRseSwgYSB3YXJuaW5nIGlzIHRyaWdnZXJlZCBieSByZWFjdCBmb3IgKmFueSogd2hpdGUgc3BhY2UgaW5cbiAgICAgIC8vIHRhYmxlcy5cbiAgICAgIC8vIFNvIHdlIGRyb3AgaXQuXG4gICAgICAvLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MDgxPi5cbiAgICAgIC8vIFNlZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzc1MTU+LlxuICAgICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3JlbWFya2pzL3JlbWFyay1yZWFjdC9pc3N1ZXMvNjQ+LlxuICAgICAgLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL3JlbWFya2pzL3JlYWN0LW1hcmtkb3duL2lzc3Vlcy81NzY+LlxuICAgICAgaWYgKFxuICAgICAgICBub2RlLnR5cGUgIT09ICdlbGVtZW50JyB8fFxuICAgICAgICAhdGFibGVFbGVtZW50cy5oYXMobm9kZS50YWdOYW1lKSB8fFxuICAgICAgICAhd2hpdGVzcGFjZShjaGlsZClcbiAgICAgICkge1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkLnZhbHVlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gJ3JhdycgJiYgIWNvbnRleHQub3B0aW9ucy5za2lwSHRtbCkge1xuICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byBzaG93IChlbmNvZGVkKSBIVE1MLlxuICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZC52YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbnRleHR9IGNvbnRleHRcbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge0VsZW1lbnR8Um9vdH0gcGFyZW50XG4gKi9cbmZ1bmN0aW9uIHRvUmVhY3QoY29udGV4dCwgbm9kZSwgaW5kZXgsIHBhcmVudCkge1xuICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zXG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IGNvbnRleHQuc2NoZW1hXG4gIC8qKiBAdHlwZSB7UmVhY3RNYXJrZG93bk5hbWVzfSAqL1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIGFzc3VtZSBhIGtub3duIEhUTUwvU1ZHIGVsZW1lbnQuXG4gIGNvbnN0IG5hbWUgPSBub2RlLnRhZ05hbWVcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi9cbiAgY29uc3QgcHJvcGVydGllcyA9IHt9XG4gIGxldCBzY2hlbWEgPSBwYXJlbnRTY2hlbWFcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBwcm9wZXJ0eVxuXG4gIGlmIChwYXJlbnRTY2hlbWEuc3BhY2UgPT09ICdodG1sJyAmJiBuYW1lID09PSAnc3ZnJykge1xuICAgIHNjaGVtYSA9IHN2Z1xuICAgIGNvbnRleHQuc2NoZW1hID0gc2NoZW1hXG4gIH1cblxuICBpZiAobm9kZS5wcm9wZXJ0aWVzKSB7XG4gICAgZm9yIChwcm9wZXJ0eSBpbiBub2RlLnByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChvd24uY2FsbChub2RlLnByb3BlcnRpZXMsIHByb3BlcnR5KSkge1xuICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgbm9kZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSwgY29udGV4dClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobmFtZSA9PT0gJ29sJyB8fCBuYW1lID09PSAndWwnKSB7XG4gICAgY29udGV4dC5saXN0RGVwdGgrK1xuICB9XG5cbiAgY29uc3QgY2hpbGRyZW4gPSBjaGlsZHJlblRvUmVhY3QoY29udGV4dCwgbm9kZSlcblxuICBpZiAobmFtZSA9PT0gJ29sJyB8fCBuYW1lID09PSAndWwnKSB7XG4gICAgY29udGV4dC5saXN0RGVwdGgtLVxuICB9XG5cbiAgLy8gUmVzdG9yZSBwYXJlbnQgc2NoZW1hLlxuICBjb250ZXh0LnNjaGVtYSA9IHBhcmVudFNjaGVtYVxuXG4gIC8vIE5vZGVzIGNyZWF0ZWQgYnkgcGx1Z2lucyBkbyBub3QgaGF2ZSBwb3NpdGlvbmFsIGluZm8sIGluIHdoaWNoIGNhc2Ugd2UgdXNlXG4gIC8vIGFuIG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIHBvc2l0aW9uIGludGVyZmFjZS5cbiAgY29uc3QgcG9zaXRpb24gPSBub2RlLnBvc2l0aW9uIHx8IHtcbiAgICBzdGFydDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbCwgb2Zmc2V0OiBudWxsfSxcbiAgICBlbmQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGwsIG9mZnNldDogbnVsbH1cbiAgfVxuICBjb25zdCBjb21wb25lbnQgPVxuICAgIG9wdGlvbnMuY29tcG9uZW50cyAmJiBvd24uY2FsbChvcHRpb25zLmNvbXBvbmVudHMsIG5hbWUpXG4gICAgICA/IG9wdGlvbnMuY29tcG9uZW50c1tuYW1lXVxuICAgICAgOiBuYW1lXG4gIGNvbnN0IGJhc2ljID0gdHlwZW9mIGNvbXBvbmVudCA9PT0gJ3N0cmluZycgfHwgY29tcG9uZW50ID09PSBSZWFjdC5GcmFnbWVudFxuXG4gIGlmICghUmVhY3RJcy5pc1ZhbGlkRWxlbWVudFR5cGUoY29tcG9uZW50KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgQ29tcG9uZW50IGZvciBuYW1lIFxcYCR7bmFtZX1cXGAgbm90IGRlZmluZWQgb3IgaXMgbm90IHJlbmRlcmFibGVgXG4gICAgKVxuICB9XG5cbiAgcHJvcGVydGllcy5rZXkgPSBbXG4gICAgbmFtZSxcbiAgICBwb3NpdGlvbi5zdGFydC5saW5lLFxuICAgIHBvc2l0aW9uLnN0YXJ0LmNvbHVtbixcbiAgICBpbmRleFxuICBdLmpvaW4oJy0nKVxuXG4gIGlmIChuYW1lID09PSAnYScgJiYgb3B0aW9ucy5saW5rVGFyZ2V0KSB7XG4gICAgcHJvcGVydGllcy50YXJnZXQgPVxuICAgICAgdHlwZW9mIG9wdGlvbnMubGlua1RhcmdldCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IG9wdGlvbnMubGlua1RhcmdldChcbiAgICAgICAgICAgIFN0cmluZyhwcm9wZXJ0aWVzLmhyZWYgfHwgJycpLFxuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9wZXJ0aWVzLnRpdGxlID09PSAnc3RyaW5nJyA/IHByb3BlcnRpZXMudGl0bGUgOiBudWxsXG4gICAgICAgICAgKVxuICAgICAgICA6IG9wdGlvbnMubGlua1RhcmdldFxuICB9XG5cbiAgaWYgKG5hbWUgPT09ICdhJyAmJiBvcHRpb25zLnRyYW5zZm9ybUxpbmtVcmkpIHtcbiAgICBwcm9wZXJ0aWVzLmhyZWYgPSBvcHRpb25zLnRyYW5zZm9ybUxpbmtVcmkoXG4gICAgICBTdHJpbmcocHJvcGVydGllcy5ocmVmIHx8ICcnKSxcbiAgICAgIG5vZGUuY2hpbGRyZW4sXG4gICAgICB0eXBlb2YgcHJvcGVydGllcy50aXRsZSA9PT0gJ3N0cmluZycgPyBwcm9wZXJ0aWVzLnRpdGxlIDogbnVsbFxuICAgIClcbiAgfVxuXG4gIGlmIChcbiAgICAhYmFzaWMgJiZcbiAgICBuYW1lID09PSAnY29kZScgJiZcbiAgICBwYXJlbnQudHlwZSA9PT0gJ2VsZW1lbnQnICYmXG4gICAgcGFyZW50LnRhZ05hbWUgIT09ICdwcmUnXG4gICkge1xuICAgIHByb3BlcnRpZXMuaW5saW5lID0gdHJ1ZVxuICB9XG5cbiAgaWYgKFxuICAgICFiYXNpYyAmJlxuICAgIChuYW1lID09PSAnaDEnIHx8XG4gICAgICBuYW1lID09PSAnaDInIHx8XG4gICAgICBuYW1lID09PSAnaDMnIHx8XG4gICAgICBuYW1lID09PSAnaDQnIHx8XG4gICAgICBuYW1lID09PSAnaDUnIHx8XG4gICAgICBuYW1lID09PSAnaDYnKVxuICApIHtcbiAgICBwcm9wZXJ0aWVzLmxldmVsID0gTnVtYmVyLnBhcnNlSW50KG5hbWUuY2hhckF0KDEpLCAxMClcbiAgfVxuXG4gIGlmIChuYW1lID09PSAnaW1nJyAmJiBvcHRpb25zLnRyYW5zZm9ybUltYWdlVXJpKSB7XG4gICAgcHJvcGVydGllcy5zcmMgPSBvcHRpb25zLnRyYW5zZm9ybUltYWdlVXJpKFxuICAgICAgU3RyaW5nKHByb3BlcnRpZXMuc3JjIHx8ICcnKSxcbiAgICAgIFN0cmluZyhwcm9wZXJ0aWVzLmFsdCB8fCAnJyksXG4gICAgICB0eXBlb2YgcHJvcGVydGllcy50aXRsZSA9PT0gJ3N0cmluZycgPyBwcm9wZXJ0aWVzLnRpdGxlIDogbnVsbFxuICAgIClcbiAgfVxuXG4gIGlmICghYmFzaWMgJiYgbmFtZSA9PT0gJ2xpJyAmJiBwYXJlbnQudHlwZSA9PT0gJ2VsZW1lbnQnKSB7XG4gICAgY29uc3QgaW5wdXQgPSBnZXRJbnB1dEVsZW1lbnQobm9kZSlcbiAgICBwcm9wZXJ0aWVzLmNoZWNrZWQgPVxuICAgICAgaW5wdXQgJiYgaW5wdXQucHJvcGVydGllcyA/IEJvb2xlYW4oaW5wdXQucHJvcGVydGllcy5jaGVja2VkKSA6IG51bGxcbiAgICBwcm9wZXJ0aWVzLmluZGV4ID0gZ2V0RWxlbWVudHNCZWZvcmVDb3VudChwYXJlbnQsIG5vZGUpXG4gICAgcHJvcGVydGllcy5vcmRlcmVkID0gcGFyZW50LnRhZ05hbWUgPT09ICdvbCdcbiAgfVxuXG4gIGlmICghYmFzaWMgJiYgKG5hbWUgPT09ICdvbCcgfHwgbmFtZSA9PT0gJ3VsJykpIHtcbiAgICBwcm9wZXJ0aWVzLm9yZGVyZWQgPSBuYW1lID09PSAnb2wnXG4gICAgcHJvcGVydGllcy5kZXB0aCA9IGNvbnRleHQubGlzdERlcHRoXG4gIH1cblxuICBpZiAobmFtZSA9PT0gJ3RkJyB8fCBuYW1lID09PSAndGgnKSB7XG4gICAgaWYgKHByb3BlcnRpZXMuYWxpZ24pIHtcbiAgICAgIGlmICghcHJvcGVydGllcy5zdHlsZSkgcHJvcGVydGllcy5zdHlsZSA9IHt9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFzc3VtZSBgc3R5bGVgIGlzIGFuIG9iamVjdFxuICAgICAgcHJvcGVydGllcy5zdHlsZS50ZXh0QWxpZ24gPSBwcm9wZXJ0aWVzLmFsaWduXG4gICAgICBkZWxldGUgcHJvcGVydGllcy5hbGlnblxuICAgIH1cblxuICAgIGlmICghYmFzaWMpIHtcbiAgICAgIHByb3BlcnRpZXMuaXNIZWFkZXIgPSBuYW1lID09PSAndGgnXG4gICAgfVxuICB9XG5cbiAgaWYgKCFiYXNpYyAmJiBuYW1lID09PSAndHInICYmIHBhcmVudC50eXBlID09PSAnZWxlbWVudCcpIHtcbiAgICBwcm9wZXJ0aWVzLmlzSGVhZGVyID0gQm9vbGVhbihwYXJlbnQudGFnTmFtZSA9PT0gJ3RoZWFkJylcbiAgfVxuXG4gIC8vIElmIGBzb3VyY2VQb3NgIGlzIGdpdmVuLCBwYXNzIHNvdXJjZSBpbmZvcm1hdGlvbiAobGluZS9jb2x1bW4gaW5mbyBmcm9tIG1hcmtkb3duIHNvdXJjZSkuXG4gIGlmIChvcHRpb25zLnNvdXJjZVBvcykge1xuICAgIHByb3BlcnRpZXNbJ2RhdGEtc291cmNlcG9zJ10gPSBmbGF0dGVuUG9zaXRpb24ocG9zaXRpb24pXG4gIH1cblxuICBpZiAoIWJhc2ljICYmIG9wdGlvbnMucmF3U291cmNlUG9zKSB7XG4gICAgcHJvcGVydGllcy5zb3VyY2VQb3NpdGlvbiA9IG5vZGUucG9zaXRpb25cbiAgfVxuXG4gIC8vIElmIGBpbmNsdWRlRWxlbWVudEluZGV4YCBpcyBnaXZlbiwgcGFzcyBub2RlIGluZGV4IGluZm8gdG8gY29tcG9uZW50cy5cbiAgaWYgKCFiYXNpYyAmJiBvcHRpb25zLmluY2x1ZGVFbGVtZW50SW5kZXgpIHtcbiAgICBwcm9wZXJ0aWVzLmluZGV4ID0gZ2V0RWxlbWVudHNCZWZvcmVDb3VudChwYXJlbnQsIG5vZGUpXG4gICAgcHJvcGVydGllcy5zaWJsaW5nQ291bnQgPSBnZXRFbGVtZW50c0JlZm9yZUNvdW50KHBhcmVudClcbiAgfVxuXG4gIGlmICghYmFzaWMpIHtcbiAgICBwcm9wZXJ0aWVzLm5vZGUgPSBub2RlXG4gIH1cblxuICAvLyBFbnN1cmUgbm8gUmVhY3Qgd2FybmluZ3MgYXJlIGVtaXR0ZWQgZm9yIHZvaWQgZWxlbWVudHMgdy8gY2hpbGRyZW4uXG4gIHJldHVybiBjaGlsZHJlbi5sZW5ndGggPiAwXG4gICAgPyBSZWFjdC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgcHJvcGVydGllcywgY2hpbGRyZW4pXG4gICAgOiBSZWFjdC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgcHJvcGVydGllcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR8Um9vdH0gbm9kZVxuICogQHJldHVybnMge0VsZW1lbnQ/fVxuICovXG5mdW5jdGlvbiBnZXRJbnB1dEVsZW1lbnQobm9kZSkge1xuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baW5kZXhdXG5cbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2VsZW1lbnQnICYmIGNoaWxkLnRhZ05hbWUgPT09ICdpbnB1dCcpIHtcbiAgICAgIHJldHVybiBjaGlsZFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50fFJvb3R9IHBhcmVudFxuICogQHBhcmFtIHtFbGVtZW50fSBbbm9kZV1cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldEVsZW1lbnRzQmVmb3JlQ291bnQocGFyZW50LCBub2RlKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIGxldCBjb3VudCA9IDBcblxuICB3aGlsZSAoKytpbmRleCA8IHBhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBpZiAocGFyZW50LmNoaWxkcmVuW2luZGV4XSA9PT0gbm9kZSkgYnJlYWtcbiAgICBpZiAocGFyZW50LmNoaWxkcmVuW2luZGV4XS50eXBlID09PSAnZWxlbWVudCcpIGNvdW50KytcbiAgfVxuXG4gIHJldHVybiBjb3VudFxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcFxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogQHBhcmFtIHtDb250ZXh0fSBjdHhcbiAqL1xuZnVuY3Rpb24gYWRkUHJvcGVydHkocHJvcHMsIHByb3AsIHZhbHVlLCBjdHgpIHtcbiAgY29uc3QgaW5mbyA9IGZpbmQoY3R4LnNjaGVtYSwgcHJvcClcbiAgbGV0IHJlc3VsdCA9IHZhbHVlXG5cbiAgLy8gSWdub3JlIG51bGxpc2ggYW5kIGBOYU5gIHZhbHVlcy5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCAhPT0gcmVzdWx0KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBBY2NlcHQgYGFycmF5YC5cbiAgLy8gTW9zdCBwcm9wcyBhcmUgc3BhY2Utc2VwYXJhdGVkLlxuICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgcmVzdWx0ID0gaW5mby5jb21tYVNlcGFyYXRlZCA/IGNvbW1hcyhyZXN1bHQpIDogc3BhY2VzKHJlc3VsdClcbiAgfVxuXG4gIGlmIChpbmZvLnByb3BlcnR5ID09PSAnc3R5bGUnICYmIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmVzdWx0ID0gcGFyc2VTdHlsZShyZXN1bHQpXG4gIH1cblxuICBpZiAoaW5mby5zcGFjZSAmJiBpbmZvLnByb3BlcnR5KSB7XG4gICAgcHJvcHNbXG4gICAgICBvd24uY2FsbChoYXN0VG9SZWFjdCwgaW5mby5wcm9wZXJ0eSlcbiAgICAgICAgPyBoYXN0VG9SZWFjdFtpbmZvLnByb3BlcnR5XVxuICAgICAgICA6IGluZm8ucHJvcGVydHlcbiAgICBdID0gcmVzdWx0XG4gIH0gZWxzZSBpZiAoaW5mby5hdHRyaWJ1dGUpIHtcbiAgICBwcm9wc1tpbmZvLmF0dHJpYnV0ZV0gPSByZXN1bHRcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU3R5bGUodmFsdWUpIHtcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICBjb25zdCByZXN1bHQgPSB7fVxuXG4gIHRyeSB7XG4gICAgc3R5bGUodmFsdWUsIGl0ZXJhdG9yKVxuICB9IGNhdGNoIHtcbiAgICAvLyBTaWxlbnQuXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2XG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvcihuYW1lLCB2KSB7XG4gICAgY29uc3QgayA9IG5hbWUuc2xpY2UoMCwgNCkgPT09ICctbXMtJyA/IGBtcy0ke25hbWUuc2xpY2UoNCl9YCA6IG5hbWVcbiAgICByZXN1bHRbay5yZXBsYWNlKC8tKFthLXpdKS9nLCBzdHlsZVJlcGxhY2VyKV0gPSB2XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IF9cbiAqIEBwYXJhbSB7c3RyaW5nfSAkMVxuICovXG5mdW5jdGlvbiBzdHlsZVJlcGxhY2VyKF8sICQxKSB7XG4gIHJldHVybiAkMS50b1VwcGVyQ2FzZSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtQb3NpdGlvbnx7c3RhcnQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGwsIG9mZnNldDogbnVsbH0sIGVuZDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbCwgb2Zmc2V0OiBudWxsfX19IHBvc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZmxhdHRlblBvc2l0aW9uKHBvcykge1xuICByZXR1cm4gW1xuICAgIHBvcy5zdGFydC5saW5lLFxuICAgICc6JyxcbiAgICBwb3Muc3RhcnQuY29sdW1uLFxuICAgICctJyxcbiAgICBwb3MuZW5kLmxpbmUsXG4gICAgJzonLFxuICAgIHBvcy5lbmQuY29sdW1uXG4gIF1cbiAgICAubWFwKChkKSA9PiBTdHJpbmcoZCkpXG4gICAgLmpvaW4oJycpXG59XG4iLCIvKipcbiAqIEB0eXBlZGVmIE9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbiBmb3IgYHN0cmluZ2lmeWAuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwYWRMZWZ0PXRydWVdXG4gKiAgIFdoZXRoZXIgdG8gcGFkIGEgc3BhY2UgYmVmb3JlIGEgdG9rZW4uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwYWRSaWdodD1mYWxzZV1cbiAqICAgV2hldGhlciB0byBwYWQgYSBzcGFjZSBhZnRlciBhIHRva2VuLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09wdGlvbnN9IFN0cmluZ2lmeU9wdGlvbnNcbiAqICAgUGxlYXNlIHVzZSBgU3RyaW5naWZ5T3B0aW9uc2AgaW5zdGVhZC5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIGNvbW1hLXNlcGFyYXRlZCB0b2tlbnMgdG8gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIENvbW1hLXNlcGFyYXRlZCB0b2tlbnMuXG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn1cbiAqICAgTGlzdCBvZiB0b2tlbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2YWx1ZSkge1xuICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovXG4gIGNvbnN0IHRva2VucyA9IFtdXG4gIGNvbnN0IGlucHV0ID0gU3RyaW5nKHZhbHVlIHx8ICcnKVxuICBsZXQgaW5kZXggPSBpbnB1dC5pbmRleE9mKCcsJylcbiAgbGV0IHN0YXJ0ID0gMFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBlbmQgPSBmYWxzZVxuXG4gIHdoaWxlICghZW5kKSB7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgaW5kZXggPSBpbnB1dC5sZW5ndGhcbiAgICAgIGVuZCA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbiA9IGlucHV0LnNsaWNlKHN0YXJ0LCBpbmRleCkudHJpbSgpXG5cbiAgICBpZiAodG9rZW4gfHwgIWVuZCkge1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pXG4gICAgfVxuXG4gICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICBpbmRleCA9IGlucHV0LmluZGV4T2YoJywnLCBzdGFydClcbiAgfVxuXG4gIHJldHVybiB0b2tlbnNcbn1cblxuLyoqXG4gKiBTZXJpYWxpemUgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBudW1iZXJzIHRvIGNvbW1hLXNlcGFyYXRlZCB0b2tlbnMuXG4gKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmd8bnVtYmVyPn0gdmFsdWVzXG4gKiAgIExpc3Qgb2YgdG9rZW5zLlxuICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc11cbiAqICAgQ29uZmlndXJhdGlvbiBmb3IgYHN0cmluZ2lmeWAgKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIENvbW1hLXNlcGFyYXRlZCB0b2tlbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWVzLCBvcHRpb25zKSB7XG4gIGNvbnN0IHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuXG4gIC8vIEVuc3VyZSB0aGUgbGFzdCBlbXB0eSBlbnRyeSBpcyBzZWVuLlxuICBjb25zdCBpbnB1dCA9IHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gPT09ICcnID8gWy4uLnZhbHVlcywgJyddIDogdmFsdWVzXG5cbiAgcmV0dXJuIGlucHV0XG4gICAgLmpvaW4oXG4gICAgICAoc2V0dGluZ3MucGFkUmlnaHQgPyAnICcgOiAnJykgK1xuICAgICAgICAnLCcgK1xuICAgICAgICAoc2V0dGluZ3MucGFkTGVmdCA9PT0gZmFsc2UgPyAnJyA6ICcgJylcbiAgICApXG4gICAgLnRyaW0oKVxufVxuIiwiLyoqXG4gKiBQYXJzZSBzcGFjZS1zZXBhcmF0ZWQgdG9rZW5zIHRvIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIFNwYWNlLXNlcGFyYXRlZCB0b2tlbnMuXG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn1cbiAqICAgTGlzdCBvZiB0b2tlbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh2YWx1ZSkge1xuICBjb25zdCBpbnB1dCA9IFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpXG4gIHJldHVybiBpbnB1dCA/IGlucHV0LnNwbGl0KC9bIFxcdFxcblxcclxcZl0rL2cpIDogW11cbn1cblxuLyoqXG4gKiBTZXJpYWxpemUgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyBzcGFjZSBzZXBhcmF0ZWQtdG9rZW5zLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nfG51bWJlcj59IHZhbHVlc1xuICogICBMaXN0IG9mIHRva2Vucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFNwYWNlLXNlcGFyYXRlZCB0b2tlbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWVzKSB7XG4gIHJldHVybiB2YWx1ZXMuam9pbignICcpLnRyaW0oKVxufVxuIiwiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdyZWFjdCcpLlJlYWN0Tm9kZX0gUmVhY3ROb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdyZWFjdCcpLlJlYWN0RWxlbWVudDx7fT59IFJlYWN0RWxlbWVudFxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pZmllZCcpLlBsdWdnYWJsZUxpc3R9IFBsdWdnYWJsZUxpc3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2hhc3QnKS5Sb290fSBSb290XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL3JlaHlwZS1maWx0ZXIuanMnKS5PcHRpb25zfSBGaWx0ZXJPcHRpb25zXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2FzdC10by1yZWFjdC5qcycpLk9wdGlvbnN9IFRyYW5zZm9ybU9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBDb3JlT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNoaWxkcmVuXG4gKlxuICogQHR5cGVkZWYgUGx1Z2luT3B0aW9uc1xuICogQHByb3BlcnR5IHtQbHVnZ2FibGVMaXN0fSBbcGx1Z2lucz1bXV0gKipkZXByZWNhdGVkKio6IHVzZSBgcmVtYXJrUGx1Z2luc2AgaW5zdGVhZFxuICogQHByb3BlcnR5IHtQbHVnZ2FibGVMaXN0fSBbcmVtYXJrUGx1Z2lucz1bXV1cbiAqIEBwcm9wZXJ0eSB7UGx1Z2dhYmxlTGlzdH0gW3JlaHlwZVBsdWdpbnM9W11dXG4gKlxuICogQHR5cGVkZWYgTGF5b3V0T3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGFzc05hbWVdXG4gKlxuICogQHR5cGVkZWYge0NvcmVPcHRpb25zICYgUGx1Z2luT3B0aW9ucyAmIExheW91dE9wdGlvbnMgJiBGaWx0ZXJPcHRpb25zICYgVHJhbnNmb3JtT3B0aW9uc30gUmVhY3RNYXJrZG93bk9wdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBEZXByZWNhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3RvXVxuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7VkZpbGV9IGZyb20gJ3ZmaWxlJ1xuaW1wb3J0IHt1bmlmaWVkfSBmcm9tICd1bmlmaWVkJ1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gJ3JlbWFyay1wYXJzZSdcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSdcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7aHRtbH0gZnJvbSAncHJvcGVydHktaW5mb3JtYXRpb24nXG5pbXBvcnQgcmVoeXBlRmlsdGVyIGZyb20gJy4vcmVoeXBlLWZpbHRlci5qcydcbmltcG9ydCB7dXJpVHJhbnNmb3JtZXJ9IGZyb20gJy4vdXJpLXRyYW5zZm9ybWVyLmpzJ1xuaW1wb3J0IHtjaGlsZHJlblRvUmVhY3R9IGZyb20gJy4vYXN0LXRvLXJlYWN0LmpzJ1xuXG5jb25zdCBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuY29uc3QgY2hhbmdlbG9nID1cbiAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9yZW1hcmtqcy9yZWFjdC1tYXJrZG93bi9ibG9iL21haW4vY2hhbmdlbG9nLm1kJ1xuXG4vKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIERlcHJlY2F0aW9uPn0gKi9cbmNvbnN0IGRlcHJlY2F0ZWQgPSB7XG4gIHJlbmRlcmVyczoge3RvOiAnY29tcG9uZW50cycsIGlkOiAnY2hhbmdlLXJlbmRlcmVycy10by1jb21wb25lbnRzJ30sXG4gIGFzdFBsdWdpbnM6IHtpZDogJ3JlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlcid9LFxuICBhbGxvd0Rhbmdlcm91c0h0bWw6IHtpZDogJ3JlbW92ZS1idWdneS1odG1sLWluLW1hcmtkb3duLXBhcnNlcid9LFxuICBlc2NhcGVIdG1sOiB7aWQ6ICdyZW1vdmUtYnVnZ3ktaHRtbC1pbi1tYXJrZG93bi1wYXJzZXInfSxcbiAgc291cmNlOiB7dG86ICdjaGlsZHJlbicsIGlkOiAnY2hhbmdlLXNvdXJjZS10by1jaGlsZHJlbid9LFxuICBhbGxvd05vZGU6IHtcbiAgICB0bzogJ2FsbG93RWxlbWVudCcsXG4gICAgaWQ6ICdyZXBsYWNlLWFsbG93bm9kZS1hbGxvd2VkdHlwZXMtYW5kLWRpc2FsbG93ZWR0eXBlcydcbiAgfSxcbiAgYWxsb3dlZFR5cGVzOiB7XG4gICAgdG86ICdhbGxvd2VkRWxlbWVudHMnLFxuICAgIGlkOiAncmVwbGFjZS1hbGxvd25vZGUtYWxsb3dlZHR5cGVzLWFuZC1kaXNhbGxvd2VkdHlwZXMnXG4gIH0sXG4gIGRpc2FsbG93ZWRUeXBlczoge1xuICAgIHRvOiAnZGlzYWxsb3dlZEVsZW1lbnRzJyxcbiAgICBpZDogJ3JlcGxhY2UtYWxsb3dub2RlLWFsbG93ZWR0eXBlcy1hbmQtZGlzYWxsb3dlZHR5cGVzJ1xuICB9LFxuICBpbmNsdWRlTm9kZUluZGV4OiB7XG4gICAgdG86ICdpbmNsdWRlRWxlbWVudEluZGV4JyxcbiAgICBpZDogJ2NoYW5nZS1pbmNsdWRlbm9kZWluZGV4LXRvLWluY2x1ZGVlbGVtZW50aW5kZXgnXG4gIH1cbn1cblxuLyoqXG4gKiBSZWFjdCBjb21wb25lbnQgdG8gcmVuZGVyIG1hcmtkb3duLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RNYXJrZG93bk9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtSZWFjdEVsZW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZWFjdE1hcmtkb3duKG9wdGlvbnMpIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gZGVwcmVjYXRlZCkge1xuICAgIGlmIChvd24uY2FsbChkZXByZWNhdGVkLCBrZXkpICYmIG93bi5jYWxsKG9wdGlvbnMsIGtleSkpIHtcbiAgICAgIGNvbnN0IGRlcHJlY2F0aW9uID0gZGVwcmVjYXRlZFtrZXldXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbcmVhY3QtbWFya2Rvd25dIFdhcm5pbmc6IHBsZWFzZSAke1xuICAgICAgICAgIGRlcHJlY2F0aW9uLnRvID8gYHVzZSBcXGAke2RlcHJlY2F0aW9uLnRvfVxcYCBpbnN0ZWFkIG9mYCA6ICdyZW1vdmUnXG4gICAgICAgIH0gXFxgJHtrZXl9XFxgIChzZWUgPCR7Y2hhbmdlbG9nfSMke2RlcHJlY2F0aW9uLmlkfT4gZm9yIG1vcmUgaW5mbylgXG4gICAgICApXG4gICAgICBkZWxldGUgZGVwcmVjYXRlZFtrZXldXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJvY2Vzc29yID0gdW5pZmllZCgpXG4gICAgLnVzZShyZW1hcmtQYXJzZSlcbiAgICAvLyBUT0RPOiBkZXByZWNhdGUgYHBsdWdpbnNgIGluIHY4LjAuMC5cbiAgICAudXNlKG9wdGlvbnMucmVtYXJrUGx1Z2lucyB8fCBvcHRpb25zLnBsdWdpbnMgfHwgW10pXG4gICAgLnVzZShyZW1hcmtSZWh5cGUsIHthbGxvd0Rhbmdlcm91c0h0bWw6IHRydWV9KVxuICAgIC51c2Uob3B0aW9ucy5yZWh5cGVQbHVnaW5zIHx8IFtdKVxuICAgIC51c2UocmVoeXBlRmlsdGVyLCBvcHRpb25zKVxuXG4gIGNvbnN0IGZpbGUgPSBuZXcgVkZpbGUoKVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jaGlsZHJlbiA9PT0gJ3N0cmluZycpIHtcbiAgICBmaWxlLnZhbHVlID0gb3B0aW9ucy5jaGlsZHJlblxuICB9IGVsc2UgaWYgKG9wdGlvbnMuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFtyZWFjdC1tYXJrZG93bl0gV2FybmluZzogcGxlYXNlIHBhc3MgYSBzdHJpbmcgYXMgXFxgY2hpbGRyZW5cXGAgKG5vdDogXFxgJHtvcHRpb25zLmNoaWxkcmVufVxcYClgXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzdE5vZGUgPSBwcm9jZXNzb3IucnVuU3luYyhwcm9jZXNzb3IucGFyc2UoZmlsZSksIGZpbGUpXG5cbiAgaWYgKGhhc3ROb2RlLnR5cGUgIT09ICdyb290Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgYHJvb3RgIG5vZGUnKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtSZWFjdEVsZW1lbnR9ICovXG4gIGxldCByZXN1bHQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFxuICAgIFJlYWN0LkZyYWdtZW50LFxuICAgIHt9LFxuICAgIGNoaWxkcmVuVG9SZWFjdCh7b3B0aW9ucywgc2NoZW1hOiBodG1sLCBsaXN0RGVwdGg6IDB9LCBoYXN0Tm9kZSlcbiAgKVxuXG4gIGlmIChvcHRpb25zLmNsYXNzTmFtZSkge1xuICAgIHJlc3VsdCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtjbGFzc05hbWU6IG9wdGlvbnMuY2xhc3NOYW1lfSwgcmVzdWx0KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5SZWFjdE1hcmtkb3duLmRlZmF1bHRQcm9wcyA9IHt0cmFuc2Zvcm1MaW5rVXJpOiB1cmlUcmFuc2Zvcm1lcn1cblxuUmVhY3RNYXJrZG93bi5wcm9wVHlwZXMgPSB7XG4gIC8vIENvcmUgb3B0aW9uczpcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8vIExheW91dCBvcHRpb25zOlxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8vIEZpbHRlciBvcHRpb25zOlxuICBhbGxvd0VsZW1lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICBhbGxvd2VkRWxlbWVudHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICBkaXNhbGxvd2VkRWxlbWVudHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICB1bndyYXBEaXNhbGxvd2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLy8gUGx1Z2luIG9wdGlvbnM6XG4gIHJlbWFya1BsdWdpbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIFByb3BUeXBlcy5mdW5jLFxuICAgICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKSlcbiAgICBdKVxuICApLFxuICByZWh5cGVQbHVnaW5zOiBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5mdW5jXSkpXG4gICAgXSlcbiAgKSxcbiAgLy8gVHJhbnNmb3JtIG9wdGlvbnM6XG4gIHNvdXJjZVBvczogUHJvcFR5cGVzLmJvb2wsXG4gIHJhd1NvdXJjZVBvczogUHJvcFR5cGVzLmJvb2wsXG4gIHNraXBIdG1sOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW5jbHVkZUVsZW1lbnRJbmRleDogUHJvcFR5cGVzLmJvb2wsXG4gIHRyYW5zZm9ybUxpbmtVcmk6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuYm9vbF0pLFxuICBsaW5rVGFyZ2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnN0cmluZ10pLFxuICB0cmFuc2Zvcm1JbWFnZVVyaTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5vYmplY3Rcbn1cbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIEdldCBhbGwgcG9zc2libGUgcGVybXV0YXRpb25zIG9mIGFsbCBwb3dlciBzZXRzXG4vL1xuLy8gU3VwZXIgc2ltcGxlLCBub24tYWxnb3JpdGhtaWMgc29sdXRpb24gc2luY2UgdGhlXG4vLyBudW1iZXIgb2YgY2xhc3MgbmFtZXMgd2lsbCBub3QgYmUgZ3JlYXRlciB0aGFuIDRcblxuZnVuY3Rpb24gcG93ZXJTZXRQZXJtdXRhdGlvbnMoYXJyKSB7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuICBpZiAoYXJyTGVuZ3RoID09PSAwIHx8IGFyckxlbmd0aCA9PT0gMSkgcmV0dXJuIGFycjtcblxuICBpZiAoYXJyTGVuZ3RoID09PSAyKSB7XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuIFthcnJbMF0sIGFyclsxXSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsxXSksIFwiXCIuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0pXTtcbiAgfVxuXG4gIGlmIChhcnJMZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gW2FyclswXSwgYXJyWzFdLCBhcnJbMl0sIFwiXCIuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0pLCBcIlwiLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclsxXSksIFwiXCIuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsyXSksIFwiXCIuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclswXSldO1xuICB9XG5cbiAgaWYgKGFyckxlbmd0aCA+PSA0KSB7XG4gICAgLy8gQ3VycmVudGx5IGRvZXMgbm90IHN1cHBvcnQgbW9yZSB0aGFuIDQgZXh0cmFcbiAgICAvLyBjbGFzcyBuYW1lcyAoYWZ0ZXIgYC50b2tlbmAgaGFzIGJlZW4gcmVtb3ZlZClcbiAgICByZXR1cm4gW2FyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsxXSksIFwiXCIuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0pLCBcIlwiLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0pLCBcIlwiLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0pLCBcIlwiLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclszXSksIFwiXCIuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbM10pLCBcIlwiLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclsxXSksIFwiXCIuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0pLCBcIlwiLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclszXSksIFwiXCIuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbM10pLCBcIlwiLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclszXSksIFwiXCIuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbM10pLCBcIlwiLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0pLCBcIlwiLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsyXSksIFwiXCIuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0pLCBcIlwiLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclswXSksIFwiXCIuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzBdLCBcIi5cIikuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzFdLCBcIi5cIikuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzNdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbM10sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzJdLCBcIi5cIikuY29uY2F0KGFyclszXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclswXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzJdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclsxXSwgXCIuXCIpLmNvbmNhdChhcnJbMl0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMF0sIFwiLlwiKS5jb25jYXQoYXJyWzFdKSwgXCJcIi5jb25jYXQoYXJyWzNdLCBcIi5cIikuY29uY2F0KGFyclsyXSwgXCIuXCIpLmNvbmNhdChhcnJbMV0sIFwiLlwiKS5jb25jYXQoYXJyWzBdKV07XG4gIH1cbn1cblxudmFyIGNsYXNzTmFtZUNvbWJpbmF0aW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDbGFzc05hbWVDb21iaW5hdGlvbnMoY2xhc3NOYW1lcykge1xuICBpZiAoY2xhc3NOYW1lcy5sZW5ndGggPT09IDAgfHwgY2xhc3NOYW1lcy5sZW5ndGggPT09IDEpIHJldHVybiBjbGFzc05hbWVzO1xuICB2YXIga2V5ID0gY2xhc3NOYW1lcy5qb2luKCcuJyk7XG5cbiAgaWYgKCFjbGFzc05hbWVDb21iaW5hdGlvbnNba2V5XSkge1xuICAgIGNsYXNzTmFtZUNvbWJpbmF0aW9uc1trZXldID0gcG93ZXJTZXRQZXJtdXRhdGlvbnMoY2xhc3NOYW1lcyk7XG4gIH1cblxuICByZXR1cm4gY2xhc3NOYW1lQ29tYmluYXRpb25zW2tleV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdHlsZU9iamVjdChjbGFzc05hbWVzKSB7XG4gIHZhciBlbGVtZW50U3R5bGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgc3R5bGVzaGVldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgbm9uVG9rZW5DbGFzc05hbWVzID0gY2xhc3NOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgIHJldHVybiBjbGFzc05hbWUgIT09ICd0b2tlbic7XG4gIH0pO1xuICB2YXIgY2xhc3NOYW1lc0NvbWJpbmF0aW9ucyA9IGdldENsYXNzTmFtZUNvbWJpbmF0aW9ucyhub25Ub2tlbkNsYXNzTmFtZXMpO1xuICByZXR1cm4gY2xhc3NOYW1lc0NvbWJpbmF0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKHN0eWxlT2JqZWN0LCBjbGFzc05hbWUpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZU9iamVjdCksIHN0eWxlc2hlZXRbY2xhc3NOYW1lXSk7XG4gIH0sIGVsZW1lbnRTdHlsZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NOYW1lU3RyaW5nKGNsYXNzTmFtZXMpIHtcbiAgcmV0dXJuIGNsYXNzTmFtZXMuam9pbignICcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuKHN0eWxlc2hlZXQsIHVzZUlubGluZVN0eWxlcykge1xuICB2YXIgY2hpbGRyZW5Db3VudCA9IDA7XG4gIHJldHVybiBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgICBjaGlsZHJlbkNvdW50ICs9IDE7XG4gICAgcmV0dXJuIGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQsIGkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHtcbiAgICAgICAgbm9kZTogY2hpbGQsXG4gICAgICAgIHN0eWxlc2hlZXQ6IHN0eWxlc2hlZXQsXG4gICAgICAgIHVzZUlubGluZVN0eWxlczogdXNlSW5saW5lU3R5bGVzLFxuICAgICAgICBrZXk6IFwiY29kZS1zZWdtZW50LVwiLmNvbmNhdChjaGlsZHJlbkNvdW50LCBcIi1cIikuY29uY2F0KGkpXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoX3JlZikge1xuICB2YXIgbm9kZSA9IF9yZWYubm9kZSxcbiAgICAgIHN0eWxlc2hlZXQgPSBfcmVmLnN0eWxlc2hlZXQsXG4gICAgICBfcmVmJHN0eWxlID0gX3JlZi5zdHlsZSxcbiAgICAgIHN0eWxlID0gX3JlZiRzdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcmVmJHN0eWxlLFxuICAgICAgdXNlSW5saW5lU3R5bGVzID0gX3JlZi51c2VJbmxpbmVTdHlsZXMsXG4gICAgICBrZXkgPSBfcmVmLmtleTtcbiAgdmFyIHByb3BlcnRpZXMgPSBub2RlLnByb3BlcnRpZXMsXG4gICAgICB0eXBlID0gbm9kZS50eXBlLFxuICAgICAgVGFnTmFtZSA9IG5vZGUudGFnTmFtZSxcbiAgICAgIHZhbHVlID0gbm9kZS52YWx1ZTtcblxuICBpZiAodHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9IGVsc2UgaWYgKFRhZ05hbWUpIHtcbiAgICB2YXIgY2hpbGRyZW5DcmVhdG9yID0gY3JlYXRlQ2hpbGRyZW4oc3R5bGVzaGVldCwgdXNlSW5saW5lU3R5bGVzKTtcbiAgICB2YXIgcHJvcHM7XG5cbiAgICBpZiAoIXVzZUlubGluZVN0eWxlcykge1xuICAgICAgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BlcnRpZXMpLCB7fSwge1xuICAgICAgICBjbGFzc05hbWU6IGNyZWF0ZUNsYXNzTmFtZVN0cmluZyhwcm9wZXJ0aWVzLmNsYXNzTmFtZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYWxsU3R5bGVzaGVldFNlbGVjdG9ycyA9IE9iamVjdC5rZXlzKHN0eWxlc2hlZXQpLnJlZHVjZShmdW5jdGlvbiAoY2xhc3Nlcywgc2VsZWN0b3IpIHtcbiAgICAgICAgc2VsZWN0b3Iuc3BsaXQoJy4nKS5mb3JFYWNoKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgICBpZiAoIWNsYXNzZXMuaW5jbHVkZXMoY2xhc3NOYW1lKSkgY2xhc3Nlcy5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICAgIH0sIFtdKTsgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiByZWFjdC1zeW50YXgtaGlnaGxpZ2h0ZXJcblxuICAgICAgdmFyIHN0YXJ0aW5nQ2xhc3NOYW1lID0gcHJvcGVydGllcy5jbGFzc05hbWUgJiYgcHJvcGVydGllcy5jbGFzc05hbWUuaW5jbHVkZXMoJ3Rva2VuJykgPyBbJ3Rva2VuJ10gOiBbXTtcbiAgICAgIHZhciBjbGFzc05hbWUgPSBwcm9wZXJ0aWVzLmNsYXNzTmFtZSAmJiBzdGFydGluZ0NsYXNzTmFtZS5jb25jYXQocHJvcGVydGllcy5jbGFzc05hbWUuZmlsdGVyKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuICFhbGxTdHlsZXNoZWV0U2VsZWN0b3JzLmluY2x1ZGVzKGNsYXNzTmFtZSk7XG4gICAgICB9KSk7XG4gICAgICBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcGVydGllcyksIHt9LCB7XG4gICAgICAgIGNsYXNzTmFtZTogY3JlYXRlQ2xhc3NOYW1lU3RyaW5nKGNsYXNzTmFtZSkgfHwgdW5kZWZpbmVkLFxuICAgICAgICBzdHlsZTogY3JlYXRlU3R5bGVPYmplY3QocHJvcGVydGllcy5jbGFzc05hbWUsIE9iamVjdC5hc3NpZ24oe30sIHByb3BlcnRpZXMuc3R5bGUsIHN0eWxlKSwgc3R5bGVzaGVldClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IGNoaWxkcmVuQ3JlYXRvcihub2RlLmNoaWxkcmVuKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGFnTmFtZSwgX2V4dGVuZHMoe1xuICAgICAga2V5OiBrZXlcbiAgICB9LCBwcm9wcyksIGNoaWxkcmVuKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoYXN0R2VuZXJhdG9yLCBsYW5ndWFnZSkge1xuICB2YXIgbGFuZ3MgPSBhc3RHZW5lcmF0b3IubGlzdExhbmd1YWdlcygpO1xuICByZXR1cm4gbGFuZ3MuaW5kZXhPZihsYW5ndWFnZSkgIT09IC0xO1xufSk7IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xudmFyIF9leGNsdWRlZCA9IFtcImxhbmd1YWdlXCIsIFwiY2hpbGRyZW5cIiwgXCJzdHlsZVwiLCBcImN1c3RvbVN0eWxlXCIsIFwiY29kZVRhZ1Byb3BzXCIsIFwidXNlSW5saW5lU3R5bGVzXCIsIFwic2hvd0xpbmVOdW1iZXJzXCIsIFwic2hvd0lubGluZUxpbmVOdW1iZXJzXCIsIFwic3RhcnRpbmdMaW5lTnVtYmVyXCIsIFwibGluZU51bWJlckNvbnRhaW5lclN0eWxlXCIsIFwibGluZU51bWJlclN0eWxlXCIsIFwid3JhcExpbmVzXCIsIFwid3JhcExvbmdMaW5lc1wiLCBcImxpbmVQcm9wc1wiLCBcInJlbmRlcmVyXCIsIFwiUHJlVGFnXCIsIFwiQ29kZVRhZ1wiLCBcImNvZGVcIiwgXCJhc3RHZW5lcmF0b3JcIl07XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlRWxlbWVudCBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCBjaGVja0Zvckxpc3RlZExhbmd1YWdlIGZyb20gJy4vY2hlY2tGb3JMaXN0ZWRMYW5ndWFnZSc7XG52YXIgbmV3TGluZVJlZ2V4ID0gL1xcbi9nO1xuXG5mdW5jdGlvbiBnZXROZXdMaW5lcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5tYXRjaChuZXdMaW5lUmVnZXgpO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxMaW5lTnVtYmVycyhfcmVmKSB7XG4gIHZhciBsaW5lcyA9IF9yZWYubGluZXMsXG4gICAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSBfcmVmLnN0YXJ0aW5nTGluZU51bWJlcixcbiAgICAgIHN0eWxlID0gX3JlZi5zdHlsZTtcbiAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgIHZhciBudW1iZXIgPSBpICsgc3RhcnRpbmdMaW5lTnVtYmVyO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAga2V5OiBcImxpbmUtXCIuY29uY2F0KGkpLFxuICAgICAgY2xhc3NOYW1lOiBcInJlYWN0LXN5bnRheC1oaWdobGlnaHRlci1saW5lLW51bWJlclwiLFxuICAgICAgc3R5bGU6IHR5cGVvZiBzdHlsZSA9PT0gJ2Z1bmN0aW9uJyA/IHN0eWxlKG51bWJlcikgOiBzdHlsZVxuICAgIH0sIFwiXCIuY29uY2F0KG51bWJlciwgXCJcXG5cIikpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gQWxsTGluZU51bWJlcnMoX3JlZjIpIHtcbiAgdmFyIGNvZGVTdHJpbmcgPSBfcmVmMi5jb2RlU3RyaW5nLFxuICAgICAgY29kZVN0eWxlID0gX3JlZjIuY29kZVN0eWxlLFxuICAgICAgX3JlZjIkY29udGFpbmVyU3R5bGUgPSBfcmVmMi5jb250YWluZXJTdHlsZSxcbiAgICAgIGNvbnRhaW5lclN0eWxlID0gX3JlZjIkY29udGFpbmVyU3R5bGUgPT09IHZvaWQgMCA/IHtcbiAgICBcImZsb2F0XCI6ICdsZWZ0JyxcbiAgICBwYWRkaW5nUmlnaHQ6ICcxMHB4J1xuICB9IDogX3JlZjIkY29udGFpbmVyU3R5bGUsXG4gICAgICBfcmVmMiRudW1iZXJTdHlsZSA9IF9yZWYyLm51bWJlclN0eWxlLFxuICAgICAgbnVtYmVyU3R5bGUgPSBfcmVmMiRudW1iZXJTdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfcmVmMiRudW1iZXJTdHlsZSxcbiAgICAgIHN0YXJ0aW5nTGluZU51bWJlciA9IF9yZWYyLnN0YXJ0aW5nTGluZU51bWJlcjtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY29kZVwiLCB7XG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIGNvZGVTdHlsZSwgY29udGFpbmVyU3R5bGUpXG4gIH0sIGdldEFsbExpbmVOdW1iZXJzKHtcbiAgICBsaW5lczogY29kZVN0cmluZy5yZXBsYWNlKC9cXG4kLywgJycpLnNwbGl0KCdcXG4nKSxcbiAgICBzdHlsZTogbnVtYmVyU3R5bGUsXG4gICAgc3RhcnRpbmdMaW5lTnVtYmVyOiBzdGFydGluZ0xpbmVOdW1iZXJcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBnZXRFbVdpZHRoT2ZOdW1iZXIobnVtKSB7XG4gIHJldHVybiBcIlwiLmNvbmNhdChudW0udG9TdHJpbmcoKS5sZW5ndGgsIFwiLjI1ZW1cIik7XG59XG5cbmZ1bmN0aW9uIGdldElubGluZUxpbmVOdW1iZXIobGluZU51bWJlciwgaW5saW5lTGluZU51bWJlclN0eWxlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2VsZW1lbnQnLFxuICAgIHRhZ05hbWU6ICdzcGFuJyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBrZXk6IFwibGluZS1udW1iZXItLVwiLmNvbmNhdChsaW5lTnVtYmVyKSxcbiAgICAgIGNsYXNzTmFtZTogWydjb21tZW50JywgJ2xpbmVudW1iZXInLCAncmVhY3Qtc3ludGF4LWhpZ2hsaWdodGVyLWxpbmUtbnVtYmVyJ10sXG4gICAgICBzdHlsZTogaW5saW5lTGluZU51bWJlclN0eWxlXG4gICAgfSxcbiAgICBjaGlsZHJlbjogW3tcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHZhbHVlOiBsaW5lTnVtYmVyXG4gICAgfV1cbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNzZW1ibGVMaW5lTnVtYmVyU3R5bGVzKGxpbmVOdW1iZXJTdHlsZSwgbGluZU51bWJlciwgbGFyZ2VzdExpbmVOdW1iZXIpIHtcbiAgLy8gbWluaW1hbGx5IG5lY2Vzc2FyeSBzdHlsaW5nIGZvciBsaW5lIG51bWJlcnNcbiAgdmFyIGRlZmF1bHRMaW5lTnVtYmVyU3R5bGUgPSB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgbWluV2lkdGg6IGdldEVtV2lkdGhPZk51bWJlcihsYXJnZXN0TGluZU51bWJlciksXG4gICAgcGFkZGluZ1JpZ2h0OiAnMWVtJyxcbiAgICB0ZXh0QWxpZ246ICdyaWdodCcsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnXG4gIH07IC8vIHByZXAgY3VzdG9tIHN0eWxpbmdcblxuICB2YXIgY3VzdG9tTGluZU51bWJlclN0eWxlID0gdHlwZW9mIGxpbmVOdW1iZXJTdHlsZSA9PT0gJ2Z1bmN0aW9uJyA/IGxpbmVOdW1iZXJTdHlsZShsaW5lTnVtYmVyKSA6IGxpbmVOdW1iZXJTdHlsZTsgLy8gY29tYmluZVxuXG4gIHZhciBhc3NlbWJsZWRTdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdExpbmVOdW1iZXJTdHlsZSksIGN1c3RvbUxpbmVOdW1iZXJTdHlsZSk7XG5cbiAgcmV0dXJuIGFzc2VtYmxlZFN0eWxlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMaW5lRWxlbWVudChfcmVmMykge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmMy5jaGlsZHJlbixcbiAgICAgIGxpbmVOdW1iZXIgPSBfcmVmMy5saW5lTnVtYmVyLFxuICAgICAgbGluZU51bWJlclN0eWxlID0gX3JlZjMubGluZU51bWJlclN0eWxlLFxuICAgICAgbGFyZ2VzdExpbmVOdW1iZXIgPSBfcmVmMy5sYXJnZXN0TGluZU51bWJlcixcbiAgICAgIHNob3dJbmxpbmVMaW5lTnVtYmVycyA9IF9yZWYzLnNob3dJbmxpbmVMaW5lTnVtYmVycyxcbiAgICAgIF9yZWYzJGxpbmVQcm9wcyA9IF9yZWYzLmxpbmVQcm9wcyxcbiAgICAgIGxpbmVQcm9wcyA9IF9yZWYzJGxpbmVQcm9wcyA9PT0gdm9pZCAwID8ge30gOiBfcmVmMyRsaW5lUHJvcHMsXG4gICAgICBfcmVmMyRjbGFzc05hbWUgPSBfcmVmMy5jbGFzc05hbWUsXG4gICAgICBjbGFzc05hbWUgPSBfcmVmMyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IFtdIDogX3JlZjMkY2xhc3NOYW1lLFxuICAgICAgc2hvd0xpbmVOdW1iZXJzID0gX3JlZjMuc2hvd0xpbmVOdW1iZXJzLFxuICAgICAgd3JhcExvbmdMaW5lcyA9IF9yZWYzLndyYXBMb25nTGluZXM7XG4gIHZhciBwcm9wZXJ0aWVzID0gdHlwZW9mIGxpbmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/IGxpbmVQcm9wcyhsaW5lTnVtYmVyKSA6IGxpbmVQcm9wcztcbiAgcHJvcGVydGllc1snY2xhc3NOYW1lJ10gPSBjbGFzc05hbWU7XG5cbiAgaWYgKGxpbmVOdW1iZXIgJiYgc2hvd0lubGluZUxpbmVOdW1iZXJzKSB7XG4gICAgdmFyIGlubGluZUxpbmVOdW1iZXJTdHlsZSA9IGFzc2VtYmxlTGluZU51bWJlclN0eWxlcyhsaW5lTnVtYmVyU3R5bGUsIGxpbmVOdW1iZXIsIGxhcmdlc3RMaW5lTnVtYmVyKTtcbiAgICBjaGlsZHJlbi51bnNoaWZ0KGdldElubGluZUxpbmVOdW1iZXIobGluZU51bWJlciwgaW5saW5lTGluZU51bWJlclN0eWxlKSk7XG4gIH1cblxuICBpZiAod3JhcExvbmdMaW5lcyAmIHNob3dMaW5lTnVtYmVycykge1xuICAgIHByb3BlcnRpZXMuc3R5bGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BlcnRpZXMuc3R5bGUpLCB7fSwge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdlbGVtZW50JyxcbiAgICB0YWdOYW1lOiAnc3BhbicsXG4gICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfTtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbkNvZGVUcmVlKHRyZWUpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107XG4gIHZhciBuZXdUcmVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IHRyZWVbaV07XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIG5ld1RyZWUucHVzaChjcmVhdGVMaW5lRWxlbWVudCh7XG4gICAgICAgIGNoaWxkcmVuOiBbbm9kZV0sXG4gICAgICAgIGNsYXNzTmFtZTogX3RvQ29uc3VtYWJsZUFycmF5KG5ldyBTZXQoY2xhc3NOYW1lKSlcbiAgICAgIH0pKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHZhciBjbGFzc05hbWVzID0gY2xhc3NOYW1lLmNvbmNhdChub2RlLnByb3BlcnRpZXMuY2xhc3NOYW1lKTtcbiAgICAgIGZsYXR0ZW5Db2RlVHJlZShub2RlLmNoaWxkcmVuLCBjbGFzc05hbWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIHJldHVybiBuZXdUcmVlLnB1c2goaSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3VHJlZTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0xpbmVzKGNvZGVUcmVlLCB3cmFwTGluZXMsIGxpbmVQcm9wcywgc2hvd0xpbmVOdW1iZXJzLCBzaG93SW5saW5lTGluZU51bWJlcnMsIHN0YXJ0aW5nTGluZU51bWJlciwgbGFyZ2VzdExpbmVOdW1iZXIsIGxpbmVOdW1iZXJTdHlsZSwgd3JhcExvbmdMaW5lcykge1xuICB2YXIgX3JlZjQ7XG5cbiAgdmFyIHRyZWUgPSBmbGF0dGVuQ29kZVRyZWUoY29kZVRyZWUudmFsdWUpO1xuICB2YXIgbmV3VHJlZSA9IFtdO1xuICB2YXIgbGFzdExpbmVCcmVha0luZGV4ID0gLTE7XG4gIHZhciBpbmRleCA9IDA7XG5cbiAgZnVuY3Rpb24gY3JlYXRlV3JhcHBlZExpbmUoY2hpbGRyZW4sIGxpbmVOdW1iZXIpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBbXTtcbiAgICByZXR1cm4gY3JlYXRlTGluZUVsZW1lbnQoe1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgbGluZU51bWJlcjogbGluZU51bWJlcixcbiAgICAgIGxpbmVOdW1iZXJTdHlsZTogbGluZU51bWJlclN0eWxlLFxuICAgICAgbGFyZ2VzdExpbmVOdW1iZXI6IGxhcmdlc3RMaW5lTnVtYmVyLFxuICAgICAgc2hvd0lubGluZUxpbmVOdW1iZXJzOiBzaG93SW5saW5lTGluZU51bWJlcnMsXG4gICAgICBsaW5lUHJvcHM6IGxpbmVQcm9wcyxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgc2hvd0xpbmVOdW1iZXJzOiBzaG93TGluZU51bWJlcnMsXG4gICAgICB3cmFwTG9uZ0xpbmVzOiB3cmFwTG9uZ0xpbmVzXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVVbndyYXBwZWRMaW5lKGNoaWxkcmVuLCBsaW5lTnVtYmVyKSB7XG4gICAgaWYgKHNob3dMaW5lTnVtYmVycyAmJiBsaW5lTnVtYmVyICYmIHNob3dJbmxpbmVMaW5lTnVtYmVycykge1xuICAgICAgdmFyIGlubGluZUxpbmVOdW1iZXJTdHlsZSA9IGFzc2VtYmxlTGluZU51bWJlclN0eWxlcyhsaW5lTnVtYmVyU3R5bGUsIGxpbmVOdW1iZXIsIGxhcmdlc3RMaW5lTnVtYmVyKTtcbiAgICAgIGNoaWxkcmVuLnVuc2hpZnQoZ2V0SW5saW5lTGluZU51bWJlcihsaW5lTnVtYmVyLCBpbmxpbmVMaW5lTnVtYmVyU3R5bGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVMaW5lKGNoaWxkcmVuLCBsaW5lTnVtYmVyKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogW107XG4gICAgcmV0dXJuIHdyYXBMaW5lcyB8fCBjbGFzc05hbWUubGVuZ3RoID4gMCA/IGNyZWF0ZVdyYXBwZWRMaW5lKGNoaWxkcmVuLCBsaW5lTnVtYmVyLCBjbGFzc05hbWUpIDogY3JlYXRlVW53cmFwcGVkTGluZShjaGlsZHJlbiwgbGluZU51bWJlcik7XG4gIH1cblxuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcCgpIHtcbiAgICB2YXIgbm9kZSA9IHRyZWVbaW5kZXhdO1xuICAgIHZhciB2YWx1ZSA9IG5vZGUuY2hpbGRyZW5bMF0udmFsdWU7XG4gICAgdmFyIG5ld0xpbmVzID0gZ2V0TmV3TGluZXModmFsdWUpO1xuXG4gICAgaWYgKG5ld0xpbmVzKSB7XG4gICAgICB2YXIgc3BsaXRWYWx1ZSA9IHZhbHVlLnNwbGl0KCdcXG4nKTtcbiAgICAgIHNwbGl0VmFsdWUuZm9yRWFjaChmdW5jdGlvbiAodGV4dCwgaSkge1xuICAgICAgICB2YXIgbGluZU51bWJlciA9IHNob3dMaW5lTnVtYmVycyAmJiBuZXdUcmVlLmxlbmd0aCArIHN0YXJ0aW5nTGluZU51bWJlcjtcbiAgICAgICAgdmFyIG5ld0NoaWxkID0ge1xuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICB2YWx1ZTogXCJcIi5jb25jYXQodGV4dCwgXCJcXG5cIilcbiAgICAgICAgfTsgLy8gaWYgaXQncyB0aGUgZmlyc3QgbGluZVxuXG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgdmFyIF9jaGlsZHJlbiA9IHRyZWUuc2xpY2UobGFzdExpbmVCcmVha0luZGV4ICsgMSwgaW5kZXgpLmNvbmNhdChjcmVhdGVMaW5lRWxlbWVudCh7XG4gICAgICAgICAgICBjaGlsZHJlbjogW25ld0NoaWxkXSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogbm9kZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZVxuICAgICAgICAgIH0pKTtcblxuICAgICAgICAgIHZhciBfbGluZSA9IGNyZWF0ZUxpbmUoX2NoaWxkcmVuLCBsaW5lTnVtYmVyKTtcblxuICAgICAgICAgIG5ld1RyZWUucHVzaChfbGluZSk7IC8vIGlmIGl0J3MgdGhlIGxhc3QgbGluZVxuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IHNwbGl0VmFsdWUubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHZhciBzdHJpbmdDaGlsZCA9IHRyZWVbaW5kZXggKyAxXSAmJiB0cmVlW2luZGV4ICsgMV0uY2hpbGRyZW4gJiYgdHJlZVtpbmRleCArIDFdLmNoaWxkcmVuWzBdO1xuICAgICAgICAgIHZhciBsYXN0TGluZUluUHJldmlvdXNTcGFuID0ge1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdmFsdWU6IFwiXCIuY29uY2F0KHRleHQpXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChzdHJpbmdDaGlsZCkge1xuICAgICAgICAgICAgdmFyIG5ld0VsZW0gPSBjcmVhdGVMaW5lRWxlbWVudCh7XG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbbGFzdExpbmVJblByZXZpb3VzU3Bhbl0sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogbm9kZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0cmVlLnNwbGljZShpbmRleCArIDEsIDAsIG5ld0VsZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgX2NoaWxkcmVuMiA9IFtsYXN0TGluZUluUHJldmlvdXNTcGFuXTtcblxuICAgICAgICAgICAgdmFyIF9saW5lMiA9IGNyZWF0ZUxpbmUoX2NoaWxkcmVuMiwgbGluZU51bWJlciwgbm9kZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSk7XG5cbiAgICAgICAgICAgIG5ld1RyZWUucHVzaChfbGluZTIpO1xuICAgICAgICAgIH0gLy8gaWYgaXQncyBuZWl0aGVyIHRoZSBmaXJzdCBub3IgdGhlIGxhc3QgbGluZVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIF9jaGlsZHJlbjMgPSBbbmV3Q2hpbGRdO1xuXG4gICAgICAgICAgdmFyIF9saW5lMyA9IGNyZWF0ZUxpbmUoX2NoaWxkcmVuMywgbGluZU51bWJlciwgbm9kZS5wcm9wZXJ0aWVzLmNsYXNzTmFtZSk7XG5cbiAgICAgICAgICBuZXdUcmVlLnB1c2goX2xpbmUzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsYXN0TGluZUJyZWFrSW5kZXggPSBpbmRleDtcbiAgICB9XG5cbiAgICBpbmRleCsrO1xuICB9O1xuXG4gIHdoaWxlIChpbmRleCA8IHRyZWUubGVuZ3RoKSB7XG4gICAgX2xvb3AoKTtcbiAgfVxuXG4gIGlmIChsYXN0TGluZUJyZWFrSW5kZXggIT09IHRyZWUubGVuZ3RoIC0gMSkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRyZWUuc2xpY2UobGFzdExpbmVCcmVha0luZGV4ICsgMSwgdHJlZS5sZW5ndGgpO1xuXG4gICAgaWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzaG93TGluZU51bWJlcnMgJiYgbmV3VHJlZS5sZW5ndGggKyBzdGFydGluZ0xpbmVOdW1iZXI7XG4gICAgICB2YXIgbGluZSA9IGNyZWF0ZUxpbmUoY2hpbGRyZW4sIGxpbmVOdW1iZXIpO1xuICAgICAgbmV3VHJlZS5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3cmFwTGluZXMgPyBuZXdUcmVlIDogKF9yZWY0ID0gW10pLmNvbmNhdC5hcHBseShfcmVmNCwgbmV3VHJlZSk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRSZW5kZXJlcihfcmVmNSkge1xuICB2YXIgcm93cyA9IF9yZWY1LnJvd3MsXG4gICAgICBzdHlsZXNoZWV0ID0gX3JlZjUuc3R5bGVzaGVldCxcbiAgICAgIHVzZUlubGluZVN0eWxlcyA9IF9yZWY1LnVzZUlubGluZVN0eWxlcztcbiAgcmV0dXJuIHJvd3MubWFwKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoe1xuICAgICAgbm9kZTogbm9kZSxcbiAgICAgIHN0eWxlc2hlZXQ6IHN0eWxlc2hlZXQsXG4gICAgICB1c2VJbmxpbmVTdHlsZXM6IHVzZUlubGluZVN0eWxlcyxcbiAgICAgIGtleTogXCJjb2RlLXNlZ2VtZW50XCIuY29uY2F0KGkpXG4gICAgfSk7XG4gIH0pO1xufSAvLyBvbmx5IGhpZ2hsaWdodC5qcyBoYXMgdGhlIGhpZ2hsaWdodEF1dG8gbWV0aG9kXG5cblxuZnVuY3Rpb24gaXNIaWdobGlnaHRKcyhhc3RHZW5lcmF0b3IpIHtcbiAgcmV0dXJuIGFzdEdlbmVyYXRvciAmJiB0eXBlb2YgYXN0R2VuZXJhdG9yLmhpZ2hsaWdodEF1dG8gIT09ICd1bmRlZmluZWQnO1xufVxuXG5mdW5jdGlvbiBnZXRDb2RlVHJlZShfcmVmNikge1xuICB2YXIgYXN0R2VuZXJhdG9yID0gX3JlZjYuYXN0R2VuZXJhdG9yLFxuICAgICAgbGFuZ3VhZ2UgPSBfcmVmNi5sYW5ndWFnZSxcbiAgICAgIGNvZGUgPSBfcmVmNi5jb2RlLFxuICAgICAgZGVmYXVsdENvZGVWYWx1ZSA9IF9yZWY2LmRlZmF1bHRDb2RlVmFsdWU7XG5cbiAgLy8gZmlndXJlIG91dCB3aGV0aGVyIHdlJ3JlIHVzaW5nIGxvd2xpZ2h0L2hpZ2hsaWdodCBvciByZWZyYWN0b3IvcHJpc21cbiAgLy8gdGhlbiBhdHRlbXB0IGhpZ2hsaWdodGluZyBhY2NvcmRpbmdseVxuICAvLyBsb3dsaWdodC9oaWdobGlnaHQ/XG4gIGlmIChpc0hpZ2hsaWdodEpzKGFzdEdlbmVyYXRvcikpIHtcbiAgICB2YXIgaGFzTGFuZ3VhZ2UgPSBjaGVja0Zvckxpc3RlZExhbmd1YWdlKGFzdEdlbmVyYXRvciwgbGFuZ3VhZ2UpO1xuXG4gICAgaWYgKGxhbmd1YWdlID09PSAndGV4dCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBkZWZhdWx0Q29kZVZhbHVlLFxuICAgICAgICBsYW5ndWFnZTogJ3RleHQnXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoaGFzTGFuZ3VhZ2UpIHtcbiAgICAgIHJldHVybiBhc3RHZW5lcmF0b3IuaGlnaGxpZ2h0KGxhbmd1YWdlLCBjb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFzdEdlbmVyYXRvci5oaWdobGlnaHRBdXRvKGNvZGUpO1xuICAgIH1cbiAgfSAvLyBtdXN0IGJlIHJlZnJhY3Rvci9wcmlzbSwgdGhlblxuXG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbGFuZ3VhZ2UgJiYgbGFuZ3VhZ2UgIT09ICd0ZXh0JyA/IHtcbiAgICAgIHZhbHVlOiBhc3RHZW5lcmF0b3IuaGlnaGxpZ2h0KGNvZGUsIGxhbmd1YWdlKVxuICAgIH0gOiB7XG4gICAgICB2YWx1ZTogZGVmYXVsdENvZGVWYWx1ZVxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IGRlZmF1bHRDb2RlVmFsdWVcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChkZWZhdWx0QXN0R2VuZXJhdG9yLCBkZWZhdWx0U3R5bGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFN5bnRheEhpZ2hsaWdodGVyKF9yZWY3KSB7XG4gICAgdmFyIGxhbmd1YWdlID0gX3JlZjcubGFuZ3VhZ2UsXG4gICAgICAgIGNoaWxkcmVuID0gX3JlZjcuY2hpbGRyZW4sXG4gICAgICAgIF9yZWY3JHN0eWxlID0gX3JlZjcuc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX3JlZjckc3R5bGUgPT09IHZvaWQgMCA/IGRlZmF1bHRTdHlsZSA6IF9yZWY3JHN0eWxlLFxuICAgICAgICBfcmVmNyRjdXN0b21TdHlsZSA9IF9yZWY3LmN1c3RvbVN0eWxlLFxuICAgICAgICBjdXN0b21TdHlsZSA9IF9yZWY3JGN1c3RvbVN0eWxlID09PSB2b2lkIDAgPyB7fSA6IF9yZWY3JGN1c3RvbVN0eWxlLFxuICAgICAgICBfcmVmNyRjb2RlVGFnUHJvcHMgPSBfcmVmNy5jb2RlVGFnUHJvcHMsXG4gICAgICAgIGNvZGVUYWdQcm9wcyA9IF9yZWY3JGNvZGVUYWdQcm9wcyA9PT0gdm9pZCAwID8ge1xuICAgICAgY2xhc3NOYW1lOiBsYW5ndWFnZSA/IFwibGFuZ3VhZ2UtXCIuY29uY2F0KGxhbmd1YWdlKSA6IHVuZGVmaW5lZCxcbiAgICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHN0eWxlWydjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSddKSwgc3R5bGVbXCJjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXCIuY29uY2F0KGxhbmd1YWdlLCBcIlxcXCJdXCIpXSlcbiAgICB9IDogX3JlZjckY29kZVRhZ1Byb3BzLFxuICAgICAgICBfcmVmNyR1c2VJbmxpbmVTdHlsZXMgPSBfcmVmNy51c2VJbmxpbmVTdHlsZXMsXG4gICAgICAgIHVzZUlubGluZVN0eWxlcyA9IF9yZWY3JHVzZUlubGluZVN0eWxlcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWY3JHVzZUlubGluZVN0eWxlcyxcbiAgICAgICAgX3JlZjckc2hvd0xpbmVOdW1iZXJzID0gX3JlZjcuc2hvd0xpbmVOdW1iZXJzLFxuICAgICAgICBzaG93TGluZU51bWJlcnMgPSBfcmVmNyRzaG93TGluZU51bWJlcnMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjckc2hvd0xpbmVOdW1iZXJzLFxuICAgICAgICBfcmVmNyRzaG93SW5saW5lTGluZU4gPSBfcmVmNy5zaG93SW5saW5lTGluZU51bWJlcnMsXG4gICAgICAgIHNob3dJbmxpbmVMaW5lTnVtYmVycyA9IF9yZWY3JHNob3dJbmxpbmVMaW5lTiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWY3JHNob3dJbmxpbmVMaW5lTixcbiAgICAgICAgX3JlZjckc3RhcnRpbmdMaW5lTnVtID0gX3JlZjcuc3RhcnRpbmdMaW5lTnVtYmVyLFxuICAgICAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSBfcmVmNyRzdGFydGluZ0xpbmVOdW0gPT09IHZvaWQgMCA/IDEgOiBfcmVmNyRzdGFydGluZ0xpbmVOdW0sXG4gICAgICAgIGxpbmVOdW1iZXJDb250YWluZXJTdHlsZSA9IF9yZWY3LmxpbmVOdW1iZXJDb250YWluZXJTdHlsZSxcbiAgICAgICAgX3JlZjckbGluZU51bWJlclN0eWxlID0gX3JlZjcubGluZU51bWJlclN0eWxlLFxuICAgICAgICBsaW5lTnVtYmVyU3R5bGUgPSBfcmVmNyRsaW5lTnVtYmVyU3R5bGUgPT09IHZvaWQgMCA/IHt9IDogX3JlZjckbGluZU51bWJlclN0eWxlLFxuICAgICAgICB3cmFwTGluZXMgPSBfcmVmNy53cmFwTGluZXMsXG4gICAgICAgIF9yZWY3JHdyYXBMb25nTGluZXMgPSBfcmVmNy53cmFwTG9uZ0xpbmVzLFxuICAgICAgICB3cmFwTG9uZ0xpbmVzID0gX3JlZjckd3JhcExvbmdMaW5lcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmNyR3cmFwTG9uZ0xpbmVzLFxuICAgICAgICBfcmVmNyRsaW5lUHJvcHMgPSBfcmVmNy5saW5lUHJvcHMsXG4gICAgICAgIGxpbmVQcm9wcyA9IF9yZWY3JGxpbmVQcm9wcyA9PT0gdm9pZCAwID8ge30gOiBfcmVmNyRsaW5lUHJvcHMsXG4gICAgICAgIHJlbmRlcmVyID0gX3JlZjcucmVuZGVyZXIsXG4gICAgICAgIF9yZWY3JFByZVRhZyA9IF9yZWY3LlByZVRhZyxcbiAgICAgICAgUHJlVGFnID0gX3JlZjckUHJlVGFnID09PSB2b2lkIDAgPyAncHJlJyA6IF9yZWY3JFByZVRhZyxcbiAgICAgICAgX3JlZjckQ29kZVRhZyA9IF9yZWY3LkNvZGVUYWcsXG4gICAgICAgIENvZGVUYWcgPSBfcmVmNyRDb2RlVGFnID09PSB2b2lkIDAgPyAnY29kZScgOiBfcmVmNyRDb2RlVGFnLFxuICAgICAgICBfcmVmNyRjb2RlID0gX3JlZjcuY29kZSxcbiAgICAgICAgY29kZSA9IF9yZWY3JGNvZGUgPT09IHZvaWQgMCA/IChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuWzBdIDogY2hpbGRyZW4pIHx8ICcnIDogX3JlZjckY29kZSxcbiAgICAgICAgYXN0R2VuZXJhdG9yID0gX3JlZjcuYXN0R2VuZXJhdG9yLFxuICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWY3LCBfZXhjbHVkZWQpO1xuXG4gICAgYXN0R2VuZXJhdG9yID0gYXN0R2VuZXJhdG9yIHx8IGRlZmF1bHRBc3RHZW5lcmF0b3I7XG4gICAgdmFyIGFsbExpbmVOdW1iZXJzID0gc2hvd0xpbmVOdW1iZXJzID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQWxsTGluZU51bWJlcnMsIHtcbiAgICAgIGNvbnRhaW5lclN0eWxlOiBsaW5lTnVtYmVyQ29udGFpbmVyU3R5bGUsXG4gICAgICBjb2RlU3R5bGU6IGNvZGVUYWdQcm9wcy5zdHlsZSB8fCB7fSxcbiAgICAgIG51bWJlclN0eWxlOiBsaW5lTnVtYmVyU3R5bGUsXG4gICAgICBzdGFydGluZ0xpbmVOdW1iZXI6IHN0YXJ0aW5nTGluZU51bWJlcixcbiAgICAgIGNvZGVTdHJpbmc6IGNvZGVcbiAgICB9KSA6IG51bGw7XG4gICAgdmFyIGRlZmF1bHRQcmVTdHlsZSA9IHN0eWxlLmhsanMgfHwgc3R5bGVbJ3ByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0nXSB8fCB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJ1xuICAgIH07XG4gICAgdmFyIGdlbmVyYXRvckNsYXNzTmFtZSA9IGlzSGlnaGxpZ2h0SnMoYXN0R2VuZXJhdG9yKSA/ICdobGpzJyA6ICdwcmlzbWpzJztcbiAgICB2YXIgcHJlUHJvcHMgPSB1c2VJbmxpbmVTdHlsZXMgPyBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7XG4gICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFByZVN0eWxlLCBjdXN0b21TdHlsZSlcbiAgICB9KSA6IE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICAgIGNsYXNzTmFtZTogcmVzdC5jbGFzc05hbWUgPyBcIlwiLmNvbmNhdChnZW5lcmF0b3JDbGFzc05hbWUsIFwiIFwiKS5jb25jYXQocmVzdC5jbGFzc05hbWUpIDogZ2VuZXJhdG9yQ2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIGN1c3RvbVN0eWxlKVxuICAgIH0pO1xuXG4gICAgaWYgKHdyYXBMb25nTGluZXMpIHtcbiAgICAgIGNvZGVUYWdQcm9wcy5zdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29kZVRhZ1Byb3BzLnN0eWxlKSwge30sIHtcbiAgICAgICAgd2hpdGVTcGFjZTogJ3ByZS13cmFwJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGVUYWdQcm9wcy5zdHlsZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29kZVRhZ1Byb3BzLnN0eWxlKSwge30sIHtcbiAgICAgICAgd2hpdGVTcGFjZTogJ3ByZSdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghYXN0R2VuZXJhdG9yKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUHJlVGFnLCBwcmVQcm9wcywgYWxsTGluZU51bWJlcnMsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvZGVUYWcsIGNvZGVUYWdQcm9wcywgY29kZSkpO1xuICAgIH1cbiAgICAvKlxuICAgICAqIFNvbWUgY3VzdG9tIHJlbmRlcmVycyByZWx5IG9uIGluZGl2aWR1YWwgcm93IGVsZW1lbnRzIHNvIHdlIG5lZWQgdG8gdHVybiB3cmFwTGluZXMgb25cbiAgICAgKiBpZiByZW5kZXJlciBpcyBwcm92aWRlZCBhbmQgd3JhcExpbmVzIGlzIHVuZGVmaW5lZC5cbiAgICAgKi9cblxuXG4gICAgaWYgKHdyYXBMaW5lcyA9PT0gdW5kZWZpbmVkICYmIHJlbmRlcmVyIHx8IHdyYXBMb25nTGluZXMpIHdyYXBMaW5lcyA9IHRydWU7XG4gICAgcmVuZGVyZXIgPSByZW5kZXJlciB8fCBkZWZhdWx0UmVuZGVyZXI7XG4gICAgdmFyIGRlZmF1bHRDb2RlVmFsdWUgPSBbe1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgdmFsdWU6IGNvZGVcbiAgICB9XTtcbiAgICB2YXIgY29kZVRyZWUgPSBnZXRDb2RlVHJlZSh7XG4gICAgICBhc3RHZW5lcmF0b3I6IGFzdEdlbmVyYXRvcixcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICAgIGNvZGU6IGNvZGUsXG4gICAgICBkZWZhdWx0Q29kZVZhbHVlOiBkZWZhdWx0Q29kZVZhbHVlXG4gICAgfSk7XG5cbiAgICBpZiAoY29kZVRyZWUubGFuZ3VhZ2UgPT09IG51bGwpIHtcbiAgICAgIGNvZGVUcmVlLnZhbHVlID0gZGVmYXVsdENvZGVWYWx1ZTtcbiAgICB9IC8vIGRldGVybWluZSBsYXJnZXN0IGxpbmUgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGZvcmNlIG1pbldpZHRoIG9uIGFsbCBsaW5lbnVtYmVyIGVsZW1lbnRzXG5cblxuICAgIHZhciBsYXJnZXN0TGluZU51bWJlciA9IGNvZGVUcmVlLnZhbHVlLmxlbmd0aCArIHN0YXJ0aW5nTGluZU51bWJlcjtcbiAgICB2YXIgcm93cyA9IHByb2Nlc3NMaW5lcyhjb2RlVHJlZSwgd3JhcExpbmVzLCBsaW5lUHJvcHMsIHNob3dMaW5lTnVtYmVycywgc2hvd0lubGluZUxpbmVOdW1iZXJzLCBzdGFydGluZ0xpbmVOdW1iZXIsIGxhcmdlc3RMaW5lTnVtYmVyLCBsaW5lTnVtYmVyU3R5bGUsIHdyYXBMb25nTGluZXMpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChQcmVUYWcsIHByZVByb3BzLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb2RlVGFnLCBjb2RlVGFnUHJvcHMsICFzaG93SW5saW5lTGluZU51bWJlcnMgJiYgYWxsTGluZU51bWJlcnMsIHJlbmRlcmVyKHtcbiAgICAgIHJvd3M6IHJvd3MsXG4gICAgICBzdHlsZXNoZWV0OiBzdHlsZSxcbiAgICAgIHVzZUlubGluZVN0eWxlczogdXNlSW5saW5lU3R5bGVzXG4gICAgfSkpKTtcbiAgfTtcbn0iLCJpbXBvcnQgaGlnaGxpZ2h0IGZyb20gJy4vaGlnaGxpZ2h0JztcbmltcG9ydCBkZWZhdWx0U3R5bGUgZnJvbSAnLi9zdHlsZXMvcHJpc20vcHJpc20nO1xuaW1wb3J0IHJlZnJhY3RvciBmcm9tICdyZWZyYWN0b3InO1xuaW1wb3J0IHN1cHBvcnRlZExhbmd1YWdlcyBmcm9tICcuL2xhbmd1YWdlcy9wcmlzbS9zdXBwb3J0ZWQtbGFuZ3VhZ2VzJztcbnZhciBoaWdobGlnaHRlciA9IGhpZ2hsaWdodChyZWZyYWN0b3IsIGRlZmF1bHRTdHlsZSk7XG5oaWdobGlnaHRlci5zdXBwb3J0ZWRMYW5ndWFnZXMgPSBzdXBwb3J0ZWRMYW5ndWFnZXM7XG5leHBvcnQgZGVmYXVsdCBoaWdobGlnaHRlcjsiLCJleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiYmxhY2tcIixcbiAgICBcImJhY2tncm91bmRcIjogXCJub25lXCIsXG4gICAgXCJ0ZXh0U2hhZG93XCI6IFwiMCAxcHggd2hpdGVcIixcbiAgICBcImZvbnRGYW1pbHlcIjogXCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIixcbiAgICBcImZvbnRTaXplXCI6IFwiMWVtXCIsXG4gICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCIsXG4gICAgXCJ3aGl0ZVNwYWNlXCI6IFwicHJlXCIsXG4gICAgXCJ3b3JkU3BhY2luZ1wiOiBcIm5vcm1hbFwiLFxuICAgIFwid29yZEJyZWFrXCI6IFwibm9ybWFsXCIsXG4gICAgXCJ3b3JkV3JhcFwiOiBcIm5vcm1hbFwiLFxuICAgIFwibGluZUhlaWdodFwiOiBcIjEuNVwiLFxuICAgIFwiTW96VGFiU2l6ZVwiOiBcIjRcIixcbiAgICBcIk9UYWJTaXplXCI6IFwiNFwiLFxuICAgIFwidGFiU2l6ZVwiOiBcIjRcIixcbiAgICBcIldlYmtpdEh5cGhlbnNcIjogXCJub25lXCIsXG4gICAgXCJNb3pIeXBoZW5zXCI6IFwibm9uZVwiLFxuICAgIFwibXNIeXBoZW5zXCI6IFwibm9uZVwiLFxuICAgIFwiaHlwaGVuc1wiOiBcIm5vbmVcIlxuICB9LFxuICBcInByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiYmxhY2tcIixcbiAgICBcImJhY2tncm91bmRcIjogXCIjZjVmMmYwXCIsXG4gICAgXCJ0ZXh0U2hhZG93XCI6IFwiMCAxcHggd2hpdGVcIixcbiAgICBcImZvbnRGYW1pbHlcIjogXCJDb25zb2xhcywgTW9uYWNvLCAnQW5kYWxlIE1vbm8nLCAnVWJ1bnR1IE1vbm8nLCBtb25vc3BhY2VcIixcbiAgICBcImZvbnRTaXplXCI6IFwiMWVtXCIsXG4gICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCIsXG4gICAgXCJ3aGl0ZVNwYWNlXCI6IFwicHJlXCIsXG4gICAgXCJ3b3JkU3BhY2luZ1wiOiBcIm5vcm1hbFwiLFxuICAgIFwid29yZEJyZWFrXCI6IFwibm9ybWFsXCIsXG4gICAgXCJ3b3JkV3JhcFwiOiBcIm5vcm1hbFwiLFxuICAgIFwibGluZUhlaWdodFwiOiBcIjEuNVwiLFxuICAgIFwiTW96VGFiU2l6ZVwiOiBcIjRcIixcbiAgICBcIk9UYWJTaXplXCI6IFwiNFwiLFxuICAgIFwidGFiU2l6ZVwiOiBcIjRcIixcbiAgICBcIldlYmtpdEh5cGhlbnNcIjogXCJub25lXCIsXG4gICAgXCJNb3pIeXBoZW5zXCI6IFwibm9uZVwiLFxuICAgIFwibXNIeXBoZW5zXCI6IFwibm9uZVwiLFxuICAgIFwiaHlwaGVuc1wiOiBcIm5vbmVcIixcbiAgICBcInBhZGRpbmdcIjogXCIxZW1cIixcbiAgICBcIm1hcmdpblwiOiBcIi41ZW0gMFwiLFxuICAgIFwib3ZlcmZsb3dcIjogXCJhdXRvXCJcbiAgfSxcbiAgXCJwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXTo6LW1vei1zZWxlY3Rpb25cIjoge1xuICAgIFwidGV4dFNoYWRvd1wiOiBcIm5vbmVcIixcbiAgICBcImJhY2tncm91bmRcIjogXCIjYjNkNGZjXCJcbiAgfSxcbiAgXCJwcmVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSA6Oi1tb3otc2VsZWN0aW9uXCI6IHtcbiAgICBcInRleHRTaGFkb3dcIjogXCJub25lXCIsXG4gICAgXCJiYWNrZ3JvdW5kXCI6IFwiI2IzZDRmY1wiXG4gIH0sXG4gIFwiY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjotbW96LXNlbGVjdGlvblwiOiB7XG4gICAgXCJ0ZXh0U2hhZG93XCI6IFwibm9uZVwiLFxuICAgIFwiYmFja2dyb3VuZFwiOiBcIiNiM2Q0ZmNcIlxuICB9LFxuICBcImNvZGVbY2xhc3MqPVxcXCJsYW5ndWFnZS1cXFwiXSA6Oi1tb3otc2VsZWN0aW9uXCI6IHtcbiAgICBcInRleHRTaGFkb3dcIjogXCJub25lXCIsXG4gICAgXCJiYWNrZ3JvdW5kXCI6IFwiI2IzZDRmY1wiXG4gIH0sXG4gIFwicHJlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl06OnNlbGVjdGlvblwiOiB7XG4gICAgXCJ0ZXh0U2hhZG93XCI6IFwibm9uZVwiLFxuICAgIFwiYmFja2dyb3VuZFwiOiBcIiNiM2Q0ZmNcIlxuICB9LFxuICBcInByZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdIDo6c2VsZWN0aW9uXCI6IHtcbiAgICBcInRleHRTaGFkb3dcIjogXCJub25lXCIsXG4gICAgXCJiYWNrZ3JvdW5kXCI6IFwiI2IzZDRmY1wiXG4gIH0sXG4gIFwiY29kZVtjbGFzcyo9XFxcImxhbmd1YWdlLVxcXCJdOjpzZWxlY3Rpb25cIjoge1xuICAgIFwidGV4dFNoYWRvd1wiOiBcIm5vbmVcIixcbiAgICBcImJhY2tncm91bmRcIjogXCIjYjNkNGZjXCJcbiAgfSxcbiAgXCJjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl0gOjpzZWxlY3Rpb25cIjoge1xuICAgIFwidGV4dFNoYWRvd1wiOiBcIm5vbmVcIixcbiAgICBcImJhY2tncm91bmRcIjogXCIjYjNkNGZjXCJcbiAgfSxcbiAgXCI6bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cXFwibGFuZ3VhZ2UtXFxcIl1cIjoge1xuICAgIFwiYmFja2dyb3VuZFwiOiBcIiNmNWYyZjBcIixcbiAgICBcInBhZGRpbmdcIjogXCIuMWVtXCIsXG4gICAgXCJib3JkZXJSYWRpdXNcIjogXCIuM2VtXCIsXG4gICAgXCJ3aGl0ZVNwYWNlXCI6IFwibm9ybWFsXCJcbiAgfSxcbiAgXCJjb21tZW50XCI6IHtcbiAgICBcImNvbG9yXCI6IFwic2xhdGVncmF5XCJcbiAgfSxcbiAgXCJwcm9sb2dcIjoge1xuICAgIFwiY29sb3JcIjogXCJzbGF0ZWdyYXlcIlxuICB9LFxuICBcImRvY3R5cGVcIjoge1xuICAgIFwiY29sb3JcIjogXCJzbGF0ZWdyYXlcIlxuICB9LFxuICBcImNkYXRhXCI6IHtcbiAgICBcImNvbG9yXCI6IFwic2xhdGVncmF5XCJcbiAgfSxcbiAgXCJwdW5jdHVhdGlvblwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiM5OTlcIlxuICB9LFxuICBcIm5hbWVzcGFjZVwiOiB7XG4gICAgXCJPcGFjaXR5XCI6IFwiLjdcIlxuICB9LFxuICBcInByb3BlcnR5XCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzkwNVwiXG4gIH0sXG4gIFwidGFnXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzkwNVwiXG4gIH0sXG4gIFwiYm9vbGVhblwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiM5MDVcIlxuICB9LFxuICBcIm51bWJlclwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiM5MDVcIlxuICB9LFxuICBcImNvbnN0YW50XCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzkwNVwiXG4gIH0sXG4gIFwic3ltYm9sXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzkwNVwiXG4gIH0sXG4gIFwiZGVsZXRlZFwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiM5MDVcIlxuICB9LFxuICBcInNlbGVjdG9yXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzY5MFwiXG4gIH0sXG4gIFwiYXR0ci1uYW1lXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzY5MFwiXG4gIH0sXG4gIFwic3RyaW5nXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzY5MFwiXG4gIH0sXG4gIFwiY2hhclwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiM2OTBcIlxuICB9LFxuICBcImJ1aWx0aW5cIjoge1xuICAgIFwiY29sb3JcIjogXCIjNjkwXCJcbiAgfSxcbiAgXCJpbnNlcnRlZFwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiM2OTBcIlxuICB9LFxuICBcIm9wZXJhdG9yXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzlhNmUzYVwiLFxuICAgIFwiYmFja2dyb3VuZFwiOiBcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwiXG4gIH0sXG4gIFwiZW50aXR5XCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzlhNmUzYVwiLFxuICAgIFwiYmFja2dyb3VuZFwiOiBcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwiLFxuICAgIFwiY3Vyc29yXCI6IFwiaGVscFwiXG4gIH0sXG4gIFwidXJsXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzlhNmUzYVwiLFxuICAgIFwiYmFja2dyb3VuZFwiOiBcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwiXG4gIH0sXG4gIFwiLmxhbmd1YWdlLWNzcyAudG9rZW4uc3RyaW5nXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzlhNmUzYVwiLFxuICAgIFwiYmFja2dyb3VuZFwiOiBcImhzbGEoMCwgMCUsIDEwMCUsIC41KVwiXG4gIH0sXG4gIFwiLnN0eWxlIC50b2tlbi5zdHJpbmdcIjoge1xuICAgIFwiY29sb3JcIjogXCIjOWE2ZTNhXCIsXG4gICAgXCJiYWNrZ3JvdW5kXCI6IFwiaHNsYSgwLCAwJSwgMTAwJSwgLjUpXCJcbiAgfSxcbiAgXCJhdHJ1bGVcIjoge1xuICAgIFwiY29sb3JcIjogXCIjMDdhXCJcbiAgfSxcbiAgXCJhdHRyLXZhbHVlXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiIzA3YVwiXG4gIH0sXG4gIFwia2V5d29yZFwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiMwN2FcIlxuICB9LFxuICBcImZ1bmN0aW9uXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiI0RENEE2OFwiXG4gIH0sXG4gIFwiY2xhc3MtbmFtZVwiOiB7XG4gICAgXCJjb2xvclwiOiBcIiNERDRBNjhcIlxuICB9LFxuICBcInJlZ2V4XCI6IHtcbiAgICBcImNvbG9yXCI6IFwiI2U5MFwiXG4gIH0sXG4gIFwiaW1wb3J0YW50XCI6IHtcbiAgICBcImNvbG9yXCI6IFwiI2U5MFwiLFxuICAgIFwiZm9udFdlaWdodFwiOiBcImJvbGRcIlxuICB9LFxuICBcInZhcmlhYmxlXCI6IHtcbiAgICBcImNvbG9yXCI6IFwiI2U5MFwiXG4gIH0sXG4gIFwiYm9sZFwiOiB7XG4gICAgXCJmb250V2VpZ2h0XCI6IFwiYm9sZFwiXG4gIH0sXG4gIFwiaXRhbGljXCI6IHtcbiAgICBcImZvbnRTdHlsZVwiOiBcIml0YWxpY1wiXG4gIH1cbn07IiwiLy9cbi8vIFRoaXMgZmlsZSBoYXMgYmVlbiBhdXRvLWdlbmVyYXRlZCBieSB0aGUgYG5wbSBydW4gYnVpbGQtbGFuZ3VhZ2VzLXByaXNtYCB0YXNrXG4vL1xuZXhwb3J0IGRlZmF1bHQgWydhYmFwJywgJ2FibmYnLCAnYWN0aW9uc2NyaXB0JywgJ2FkYScsICdhZ2RhJywgJ2FsJywgJ2FudGxyNCcsICdhcGFjaGVjb25mJywgJ2FwZXgnLCAnYXBsJywgJ2FwcGxlc2NyaXB0JywgJ2FxbCcsICdhcmR1aW5vJywgJ2FyZmYnLCAnYXNjaWlkb2MnLCAnYXNtNjUwMicsICdhc21hdG1lbCcsICdhc3BuZXQnLCAnYXV0b2hvdGtleScsICdhdXRvaXQnLCAnYXZpc3ludGgnLCAnYXZyby1pZGwnLCAnYmFzaCcsICdiYXNpYycsICdiYXRjaCcsICdiYmNvZGUnLCAnYmljZXAnLCAnYmlyYicsICdiaXNvbicsICdibmYnLCAnYnJhaW5mdWNrJywgJ2JyaWdodHNjcmlwdCcsICdicm8nLCAnYnNsJywgJ2MnLCAnY2ZzY3JpcHQnLCAnY2hhaXNjcmlwdCcsICdjaWwnLCAnY2xpa2UnLCAnY2xvanVyZScsICdjbWFrZScsICdjb2JvbCcsICdjb2ZmZWVzY3JpcHQnLCAnY29uY3VybmFzJywgJ2NvcScsICdjcHAnLCAnY3J5c3RhbCcsICdjc2hhcnAnLCAnY3NodG1sJywgJ2NzcCcsICdjc3MtZXh0cmFzJywgJ2NzcycsICdjc3YnLCAnY3lwaGVyJywgJ2QnLCAnZGFydCcsICdkYXRhd2VhdmUnLCAnZGF4JywgJ2RoYWxsJywgJ2RpZmYnLCAnZGphbmdvJywgJ2Rucy16b25lLWZpbGUnLCAnZG9ja2VyJywgJ2RvdCcsICdlYm5mJywgJ2VkaXRvcmNvbmZpZycsICdlaWZmZWwnLCAnZWpzJywgJ2VsaXhpcicsICdlbG0nLCAnZXJiJywgJ2VybGFuZycsICdldGx1YScsICdleGNlbC1mb3JtdWxhJywgJ2ZhY3RvcicsICdmYWxzZScsICdmaXJlc3RvcmUtc2VjdXJpdHktcnVsZXMnLCAnZmxvdycsICdmb3J0cmFuJywgJ2ZzaGFycCcsICdmdGwnLCAnZ2FwJywgJ2djb2RlJywgJ2dkc2NyaXB0JywgJ2dlZGNvbScsICdnaGVya2luJywgJ2dpdCcsICdnbHNsJywgJ2dtbCcsICdnbicsICdnby1tb2R1bGUnLCAnZ28nLCAnZ3JhcGhxbCcsICdncm9vdnknLCAnaGFtbCcsICdoYW5kbGViYXJzJywgJ2hhc2tlbGwnLCAnaGF4ZScsICdoY2wnLCAnaGxzbCcsICdob29uJywgJ2hwa3AnLCAnaHN0cycsICdodHRwJywgJ2ljaGlnb2phbScsICdpY29uJywgJ2ljdS1tZXNzYWdlLWZvcm1hdCcsICdpZHJpcycsICdpZWNzdCcsICdpZ25vcmUnLCAnaW5mb3JtNycsICdpbmknLCAnaW8nLCAnaicsICdqYXZhJywgJ2phdmFkb2MnLCAnamF2YWRvY2xpa2UnLCAnamF2YXNjcmlwdCcsICdqYXZhc3RhY2t0cmFjZScsICdqZXhsJywgJ2pvbGllJywgJ2pxJywgJ2pzLWV4dHJhcycsICdqcy10ZW1wbGF0ZXMnLCAnanNkb2MnLCAnanNvbicsICdqc29uNScsICdqc29ucCcsICdqc3N0YWNrdHJhY2UnLCAnanN4JywgJ2p1bGlhJywgJ2tlZXBhbGl2ZWQnLCAna2V5bWFuJywgJ2tvdGxpbicsICdrdW1pcicsICdrdXN0bycsICdsYXRleCcsICdsYXR0ZScsICdsZXNzJywgJ2xpbHlwb25kJywgJ2xpcXVpZCcsICdsaXNwJywgJ2xpdmVzY3JpcHQnLCAnbGx2bScsICdsb2cnLCAnbG9sY29kZScsICdsdWEnLCAnbWFnbWEnLCAnbWFrZWZpbGUnLCAnbWFya2Rvd24nLCAnbWFya3VwLXRlbXBsYXRpbmcnLCAnbWFya3VwJywgJ21hdGxhYicsICdtYXhzY3JpcHQnLCAnbWVsJywgJ21lcm1haWQnLCAnbWl6YXInLCAnbW9uZ29kYicsICdtb25rZXknLCAnbW9vbnNjcmlwdCcsICduMXFsJywgJ240anMnLCAnbmFuZDJ0ZXRyaXMtaGRsJywgJ25hbmlzY3JpcHQnLCAnbmFzbScsICduZW9uJywgJ25ldm9kJywgJ25naW54JywgJ25pbScsICduaXgnLCAnbnNpcycsICdvYmplY3RpdmVjJywgJ29jYW1sJywgJ29wZW5jbCcsICdvcGVucWFzbScsICdveicsICdwYXJpZ3AnLCAncGFyc2VyJywgJ3Bhc2NhbCcsICdwYXNjYWxpZ28nLCAncGNheGlzJywgJ3Blb3BsZWNvZGUnLCAncGVybCcsICdwaHAtZXh0cmFzJywgJ3BocCcsICdwaHBkb2MnLCAncGxzcWwnLCAncG93ZXJxdWVyeScsICdwb3dlcnNoZWxsJywgJ3Byb2Nlc3NpbmcnLCAncHJvbG9nJywgJ3Byb21xbCcsICdwcm9wZXJ0aWVzJywgJ3Byb3RvYnVmJywgJ3BzbCcsICdwdWcnLCAncHVwcGV0JywgJ3B1cmUnLCAncHVyZWJhc2ljJywgJ3B1cmVzY3JpcHQnLCAncHl0aG9uJywgJ3EnLCAncW1sJywgJ3FvcmUnLCAncXNoYXJwJywgJ3InLCAncmFja2V0JywgJ3JlYXNvbicsICdyZWdleCcsICdyZWdvJywgJ3JlbnB5JywgJ3Jlc3QnLCAncmlwJywgJ3JvYm9jb25mJywgJ3JvYm90ZnJhbWV3b3JrJywgJ3J1YnknLCAncnVzdCcsICdzYXMnLCAnc2FzcycsICdzY2FsYScsICdzY2hlbWUnLCAnc2NzcycsICdzaGVsbC1zZXNzaW9uJywgJ3NtYWxpJywgJ3NtYWxsdGFsaycsICdzbWFydHknLCAnc21sJywgJ3NvbGlkaXR5JywgJ3NvbHV0aW9uLWZpbGUnLCAnc295JywgJ3NwYXJxbCcsICdzcGx1bmstc3BsJywgJ3NxZicsICdzcWwnLCAnc3F1aXJyZWwnLCAnc3RhbicsICdzdHlsdXMnLCAnc3dpZnQnLCAnc3lzdGVtZCcsICd0NC1jcycsICd0NC10ZW1wbGF0aW5nJywgJ3Q0LXZiJywgJ3RhcCcsICd0Y2wnLCAndGV4dGlsZScsICd0b21sJywgJ3RyZW1vcicsICd0c3gnLCAndHQyJywgJ3R1cnRsZScsICd0d2lnJywgJ3R5cGVzY3JpcHQnLCAndHlwb3NjcmlwdCcsICd1bnJlYWxzY3JpcHQnLCAndW9yYXpvcicsICd1cmknLCAndicsICd2YWxhJywgJ3ZibmV0JywgJ3ZlbG9jaXR5JywgJ3Zlcmlsb2cnLCAndmhkbCcsICd2aW0nLCAndmlzdWFsLWJhc2ljJywgJ3dhcnBzY3JpcHQnLCAnd2FzbScsICd3ZWItaWRsJywgJ3dpa2knLCAnd29sZnJhbScsICd3cmVuJywgJ3hlb3JhJywgJ3htbC1kb2MnLCAneG9qbycsICd4cXVlcnknLCAneWFtbCcsICd5YW5nJywgJ3ppZyddOyIsIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBhcmVudH0gUGFyZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdC11dGlsLWlzJykuVGVzdH0gVGVzdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2Jvb2xlYW4gfCAnc2tpcCd9IEFjdGlvblxuICogICBVbmlvbiBvZiB0aGUgYWN0aW9uIHR5cGVzLlxuICpcbiAqIEB0eXBlZGVmIHtudW1iZXJ9IEluZGV4XG4gKiAgIE1vdmUgdG8gdGhlIHNpYmxpbmcgYXQgYGluZGV4YCBuZXh0IChhZnRlciBub2RlIGl0c2VsZiBpcyBjb21wbGV0ZWx5XG4gKiAgIHRyYXZlcnNlZCkuXG4gKlxuICogICBVc2VmdWwgaWYgbXV0YXRpbmcgdGhlIHRyZWUsIHN1Y2ggYXMgcmVtb3ZpbmcgdGhlIG5vZGUgdGhlIHZpc2l0b3IgaXNcbiAqICAgY3VycmVudGx5IG9uLCBvciBhbnkgb2YgaXRzIHByZXZpb3VzIHNpYmxpbmdzLlxuICogICBSZXN1bHRzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgY2hpbGRyZW4ubGVuZ3RoYCBzdG9wXG4gKiAgIHRyYXZlcnNpbmcgdGhlIHBhcmVudC5cbiAqXG4gKiBAdHlwZWRlZiB7WyhBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHwgdm9pZCk/LCAoSW5kZXggfCBudWxsIHwgdW5kZWZpbmVkKT9dfSBBY3Rpb25UdXBsZVxuICogICBMaXN0IHdpdGggb25lIG9yIHR3byB2YWx1ZXMsIHRoZSBmaXJzdCBhbiBhY3Rpb24sIHRoZSBzZWNvbmQgYW4gaW5kZXguXG4gKlxuICogQHR5cGVkZWYge0FjdGlvbiB8IEFjdGlvblR1cGxlIHwgSW5kZXggfCBudWxsIHwgdW5kZWZpbmVkIHwgdm9pZH0gVmlzaXRvclJlc3VsdFxuICogICBBbnkgdmFsdWUgdGhhdCBjYW4gYmUgcmV0dXJuZWQgZnJvbSBhIHZpc2l0b3IuXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge05vZGV9IFtWaXNpdGVkPU5vZGVdXG4gKiAgIFZpc2l0ZWQgbm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtQYXJlbnR9IFtBbmNlc3Rvcj1QYXJlbnRdXG4gKiAgIEFuY2VzdG9yIHR5cGUuXG4gKiBAY2FsbGJhY2sgVmlzaXRvclxuICogICBIYW5kbGUgYSBub2RlIChtYXRjaGluZyBgdGVzdGAsIGlmIGdpdmVuKS5cbiAqXG4gKiAgIFZpc2l0b3JzIGFyZSBmcmVlIHRvIHRyYW5zZm9ybSBgbm9kZWAuXG4gKiAgIFRoZXkgY2FuIGFsc28gdHJhbnNmb3JtIHRoZSBwYXJlbnQgb2Ygbm9kZSAodGhlIGxhc3Qgb2YgYGFuY2VzdG9yc2ApLlxuICpcbiAqICAgUmVwbGFjaW5nIGBub2RlYCBpdHNlbGYsIGlmIGBTS0lQYCBpcyBub3QgcmV0dXJuZWQsIHN0aWxsIGNhdXNlcyBpdHNcbiAqICAgZGVzY2VuZGFudHMgdG8gYmUgd2Fsa2VkICh3aGljaCBpcyBhIGJ1ZykuXG4gKlxuICogICBXaGVuIGFkZGluZyBvciByZW1vdmluZyBwcmV2aW91cyBzaWJsaW5ncyBvZiBgbm9kZWAgKG9yIG5leHQgc2libGluZ3MsIGluXG4gKiAgIGNhc2Ugb2YgcmV2ZXJzZSksIHRoZSBgVmlzaXRvcmAgc2hvdWxkIHJldHVybiBhIG5ldyBgSW5kZXhgIHRvIHNwZWNpZnkgdGhlXG4gKiAgIHNpYmxpbmcgdG8gdHJhdmVyc2UgYWZ0ZXIgYG5vZGVgIGlzIHRyYXZlcnNlZC5cbiAqICAgQWRkaW5nIG9yIHJlbW92aW5nIG5leHQgc2libGluZ3Mgb2YgYG5vZGVgIChvciBwcmV2aW91cyBzaWJsaW5ncywgaW4gY2FzZVxuICogICBvZiByZXZlcnNlKSBpcyBoYW5kbGVkIGFzIGV4cGVjdGVkIHdpdGhvdXQgbmVlZGluZyB0byByZXR1cm4gYSBuZXcgYEluZGV4YC5cbiAqXG4gKiAgIFJlbW92aW5nIHRoZSBjaGlsZHJlbiBwcm9wZXJ0eSBvZiBhbiBhbmNlc3RvciBzdGlsbCByZXN1bHRzIGluIHRoZW0gYmVpbmdcbiAqICAgdHJhdmVyc2VkLlxuICogQHBhcmFtIHtWaXNpdGVkfSBub2RlXG4gKiAgIEZvdW5kIG5vZGUuXG4gKiBAcGFyYW0ge0FycmF5PEFuY2VzdG9yPn0gYW5jZXN0b3JzXG4gKiAgIEFuY2VzdG9ycyBvZiBgbm9kZWAuXG4gKiBAcmV0dXJucyB7VmlzaXRvclJlc3VsdH1cbiAqICAgV2hhdCB0byBkbyBuZXh0LlxuICpcbiAqICAgQW4gYEluZGV4YCBpcyB0cmVhdGVkIGFzIGEgdHVwbGUgb2YgYFtDT05USU5VRSwgSW5kZXhdYC5cbiAqICAgQW4gYEFjdGlvbmAgaXMgdHJlYXRlZCBhcyBhIHR1cGxlIG9mIGBbQWN0aW9uXWAuXG4gKlxuICogICBQYXNzaW5nIGEgdHVwbGUgYmFjayBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoZSBgQWN0aW9uYCBpcyBgU0tJUGAuXG4gKiAgIFdoZW4gdGhlIGBBY3Rpb25gIGlzIGBFWElUYCwgdGhhdCBhY3Rpb24gY2FuIGJlIHJldHVybmVkLlxuICogICBXaGVuIHRoZSBgQWN0aW9uYCBpcyBgQ09OVElOVUVgLCBgSW5kZXhgIGNhbiBiZSByZXR1cm5lZC5cbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7Tm9kZX0gW1RyZWU9Tm9kZV1cbiAqICAgVHJlZSB0eXBlLlxuICogQHRlbXBsYXRlIHtUZXN0fSBbQ2hlY2s9c3RyaW5nXVxuICogICBUZXN0IHR5cGUuXG4gKiBAdHlwZWRlZiB7VmlzaXRvcjxpbXBvcnQoJy4vY29tcGxleC10eXBlcy5qcycpLk1hdGNoZXM8aW1wb3J0KCcuL2NvbXBsZXgtdHlwZXMuanMnKS5JbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBDaGVjaz4sIEV4dHJhY3Q8aW1wb3J0KCcuL2NvbXBsZXgtdHlwZXMuanMnKS5JbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBQYXJlbnQ+Pn0gQnVpbGRWaXNpdG9yXG4gKiAgIEJ1aWxkIGEgdHlwZWQgYFZpc2l0b3JgIGZ1bmN0aW9uIGZyb20gYSB0cmVlIGFuZCBhIHRlc3QuXG4gKlxuICogICBJdCB3aWxsIGluZmVyIHdoaWNoIHZhbHVlcyBhcmUgcGFzc2VkIGFzIGBub2RlYCBhbmQgd2hpY2ggYXMgYHBhcmVudHNgLlxuICovXG5cbmltcG9ydCB7Y29udmVydH0gZnJvbSAndW5pc3QtdXRpbC1pcydcbmltcG9ydCB7Y29sb3J9IGZyb20gJy4vY29sb3IuanMnXG5cbi8qKlxuICogQ29udGludWUgdHJhdmVyc2luZyBhcyBub3JtYWwuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05USU5VRSA9IHRydWVcblxuLyoqXG4gKiBTdG9wIHRyYXZlcnNpbmcgaW1tZWRpYXRlbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBFWElUID0gZmFsc2VcblxuLyoqXG4gKiBEbyBub3QgdHJhdmVyc2UgdGhpcyBub2Rl4oCZcyBjaGlsZHJlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFNLSVAgPSAnc2tpcCdcblxuLyoqXG4gKiBWaXNpdCBub2Rlcywgd2l0aCBhbmNlc3RyYWwgaW5mb3JtYXRpb24uXG4gKlxuICogVGhpcyBhbGdvcml0aG0gcGVyZm9ybXMgKmRlcHRoLWZpcnN0KiAqdHJlZSB0cmF2ZXJzYWwqIGluICpwcmVvcmRlcipcbiAqICgqKk5MUioqKSBvciBpZiBgcmV2ZXJzZWAgaXMgZ2l2ZW4sIGluICpyZXZlcnNlIHByZW9yZGVyKiAoKipOUkwqKikuXG4gKlxuICogWW91IGNhbiBjaG9vc2UgZm9yIHdoaWNoIG5vZGVzIGB2aXNpdG9yYCBpcyBjYWxsZWQgYnkgcGFzc2luZyBhIGB0ZXN0YC5cbiAqIEZvciBjb21wbGV4IHRlc3RzLCB5b3Ugc2hvdWxkIHRlc3QgeW91cnNlbGYgaW4gYHZpc2l0b3JgLCBhcyBpdCB3aWxsIGJlXG4gKiBmYXN0ZXIgYW5kIHdpbGwgaGF2ZSBpbXByb3ZlZCB0eXBlIGluZm9ybWF0aW9uLlxuICpcbiAqIFdhbGtpbmcgdGhlIHRyZWUgaXMgYW4gaW50ZW5zaXZlIHRhc2suXG4gKiBNYWtlIHVzZSBvZiB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUgdmlzaXRvciB3aGVuIHBvc3NpYmxlLlxuICogSW5zdGVhZCBvZiB3YWxraW5nIGEgdHJlZSBtdWx0aXBsZSB0aW1lcywgd2FsayBpdCBvbmNlLCB1c2UgYHVuaXN0LXV0aWwtaXNgXG4gKiB0byBjaGVjayBpZiBhIG5vZGUgbWF0Y2hlcywgYW5kIHRoZW4gcGVyZm9ybSBkaWZmZXJlbnQgb3BlcmF0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIGNoYW5nZSB0aGUgdHJlZS5cbiAqIFNlZSBgVmlzaXRvcmAgZm9yIG1vcmUgaW5mby5cbiAqXG4gKiBAcGFyYW0gdHJlZVxuICogICBUcmVlIHRvIHRyYXZlcnNlLlxuICogQHBhcmFtIHRlc3RcbiAqICAgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdFxuICogQHBhcmFtIHZpc2l0b3JcbiAqICAgSGFuZGxlIGVhY2ggbm9kZS5cbiAqIEBwYXJhbSByZXZlcnNlXG4gKiAgIFRyYXZlcnNlIGluIHJldmVyc2UgcHJlb3JkZXIgKE5STCkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBwcmVvcmRlciAoTkxSKS5cbiAqIEByZXR1cm5zXG4gKiAgIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCB2aXNpdFBhcmVudHMgPVxuICAvKipcbiAgICogQHR5cGUgeyhcbiAgICogICAoPFRyZWUgZXh0ZW5kcyBOb2RlLCBDaGVjayBleHRlbmRzIFRlc3Q+KHRyZWU6IFRyZWUsIHRlc3Q6IENoZWNrLCB2aXNpdG9yOiBCdWlsZFZpc2l0b3I8VHJlZSwgQ2hlY2s+LCByZXZlcnNlPzogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpID0+IHZvaWQpICZcbiAgICogICAoPFRyZWUgZXh0ZW5kcyBOb2RlPih0cmVlOiBUcmVlLCB2aXNpdG9yOiBCdWlsZFZpc2l0b3I8VHJlZT4sIHJldmVyc2U/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gdm9pZClcbiAgICogKX1cbiAgICovXG4gIChcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge05vZGV9IHRyZWVcbiAgICAgKiBAcGFyYW0ge1Rlc3R9IHRlc3RcbiAgICAgKiBAcGFyYW0ge1Zpc2l0b3I8Tm9kZT59IHZpc2l0b3JcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbcmV2ZXJzZV1cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiAodHJlZSwgdGVzdCwgdmlzaXRvciwgcmV2ZXJzZSkge1xuICAgICAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2aXNpdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldmVyc2UgPSB2aXNpdG9yXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdmlzaXRvciBnaXZlbiwgc28gYHZpc2l0b3JgIGlzIHRlc3QuXG4gICAgICAgIHZpc2l0b3IgPSB0ZXN0XG4gICAgICAgIHRlc3QgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzID0gY29udmVydCh0ZXN0KVxuICAgICAgY29uc3Qgc3RlcCA9IHJldmVyc2UgPyAtMSA6IDFcblxuICAgICAgZmFjdG9yeSh0cmVlLCB1bmRlZmluZWQsIFtdKSgpXG5cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAgICAgKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gaW5kZXhcbiAgICAgICAqIEBwYXJhbSB7QXJyYXk8UGFyZW50Pn0gcGFyZW50c1xuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBmYWN0b3J5KG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGh1c2hcbiAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyA/IG5vZGUgOiB7fVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgICAgIC8vIGBoYXN0YFxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlLnRhZ05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgID8gdmFsdWUudGFnTmFtZVxuICAgICAgICAgICAgICA6IC8vIGB4YXN0YFxuICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUubmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgPyB2YWx1ZS5uYW1lXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlzaXQsICduYW1lJywge1xuICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICdub2RlICgnICsgY29sb3Iobm9kZS50eXBlICsgKG5hbWUgPyAnPCcgKyBuYW1lICsgJz4nIDogJycpKSArICcpJ1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmlzaXRcblxuICAgICAgICBmdW5jdGlvbiB2aXNpdCgpIHtcbiAgICAgICAgICAvKiogQHR5cGUge0FjdGlvblR1cGxlfSAqL1xuICAgICAgICAgIGxldCByZXN1bHQgPSBbXVxuICAgICAgICAgIC8qKiBAdHlwZSB7QWN0aW9uVHVwbGV9ICovXG4gICAgICAgICAgbGV0IHN1YnJlc3VsdFxuICAgICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgICAgICAgIGxldCBvZmZzZXRcbiAgICAgICAgICAvKiogQHR5cGUge0FycmF5PFBhcmVudD59ICovXG4gICAgICAgICAgbGV0IGdyYW5kcGFyZW50c1xuXG4gICAgICAgICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgbnVsbCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgICAgICAgIGlmIChyZXN1bHRbMF0gPT09IEVYSVQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9va3MgbGlrZSBhIHBhcmVudC5cbiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiByZXN1bHRbMF0gIT09IFNLSVApIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9va3MgbGlrZSBhIHBhcmVudC5cbiAgICAgICAgICAgIG9mZnNldCA9IChyZXZlcnNlID8gbm9kZS5jaGlsZHJlbi5sZW5ndGggOiAtMSkgKyBzdGVwXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tzIGxpa2UgYSBwYXJlbnQuXG4gICAgICAgICAgICBncmFuZHBhcmVudHMgPSBwYXJlbnRzLmNvbmNhdChub2RlKVxuXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tzIGxpa2UgYSBwYXJlbnQuXG4gICAgICAgICAgICB3aGlsZSAob2Zmc2V0ID4gLTEgJiYgb2Zmc2V0IDwgbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBsb29rcyBsaWtlIGEgcGFyZW50LlxuICAgICAgICAgICAgICBzdWJyZXN1bHQgPSBmYWN0b3J5KG5vZGUuY2hpbGRyZW5bb2Zmc2V0XSwgb2Zmc2V0LCBncmFuZHBhcmVudHMpKClcblxuICAgICAgICAgICAgICBpZiAoc3VicmVzdWx0WzBdID09PSBFWElUKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YnJlc3VsdFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgb2Zmc2V0ID1cbiAgICAgICAgICAgICAgICB0eXBlb2Ygc3VicmVzdWx0WzFdID09PSAnbnVtYmVyJyA/IHN1YnJlc3VsdFsxXSA6IG9mZnNldCArIHN0ZXBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIClcblxuLyoqXG4gKiBUdXJuIGEgcmV0dXJuIHZhbHVlIGludG8gYSBjbGVhbiByZXN1bHQuXG4gKlxuICogQHBhcmFtIHtWaXNpdG9yUmVzdWx0fSB2YWx1ZVxuICogICBWYWxpZCByZXR1cm4gdmFsdWVzIGZyb20gdmlzaXRvcnMuXG4gKiBAcmV0dXJucyB7QWN0aW9uVHVwbGV9XG4gKiAgIENsZWFuIHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gdG9SZXN1bHQodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbQ09OVElOVUUsIHZhbHVlXVxuICB9XG5cbiAgcmV0dXJuIFt2YWx1ZV1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
| 1 | IGhhdmUgYSBgLmxhbmd1YWdlLXh4eHhgIGNsYXNzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuXG5cdFx0ICogQHBhcmFtIHtib29sZWFufSBbYXN5bmM9ZmFsc2VdIFdoZXRoZXIgZWFjaCBlbGVtZW50IGlzIHRvIGJlIGhpZ2hsaWdodGVkIGFzeW5jaHJvbm91c2x5IHVzaW5nIFdlYiBXb3JrZXJzLlxuXHRcdCAqIEBwYXJhbSB7SGlnaGxpZ2h0Q2FsbGJhY2t9IFtjYWxsYmFja10gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBvbiBlYWNoIGVsZW1lbnQgYWZ0ZXIgaXRzIGhpZ2hsaWdodGluZyBpcyBkb25lLlxuXHRcdCAqIEBtZW1iZXJvZiBQcmlzbVxuXHRcdCAqIEBwdWJsaWNcblx0XHQgKi9cblx0XHRoaWdobGlnaHRBbGxVbmRlcjogZnVuY3Rpb24gKGNvbnRhaW5lciwgYXN5bmMsIGNhbGxiYWNrKSB7XG5cdFx0XHR2YXIgZW52ID0ge1xuXHRcdFx0XHRjYWxsYmFjazogY2FsbGJhY2ssXG5cdFx0XHRcdGNvbnRhaW5lcjogY29udGFpbmVyLFxuXHRcdFx0XHRzZWxlY3RvcjogJ2NvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLCBbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIGNvZGUsIGNvZGVbY2xhc3MqPVwibGFuZy1cIl0sIFtjbGFzcyo9XCJsYW5nLVwiXSBjb2RlJ1xuXHRcdFx0fTtcblxuXHRcdFx0Xy5ob29rcy5ydW4oJ2JlZm9yZS1oaWdobGlnaHRhbGwnLCBlbnYpO1xuXG5cdFx0XHRlbnYuZWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZW52LmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKGVudi5zZWxlY3RvcikpO1xuXG5cdFx0XHRfLmhvb2tzLnJ1bignYmVmb3JlLWFsbC1lbGVtZW50cy1oaWdobGlnaHQnLCBlbnYpO1xuXG5cdFx0XHRmb3IgKHZhciBpID0gMCwgZWxlbWVudDsgKGVsZW1lbnQgPSBlbnYuZWxlbWVudHNbaSsrXSk7KSB7XG5cdFx0XHRcdF8uaGlnaGxpZ2h0RWxlbWVudChlbGVtZW50LCBhc3luYyA9PT0gdHJ1ZSwgZW52LmNhbGxiYWNrKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogSGlnaGxpZ2h0cyB0aGUgY29kZSBpbnNpZGUgYSBzaW5nbGUgZWxlbWVudC5cblx0XHQgKlxuXHRcdCAqIFRoZSBmb2xsb3dpbmcgaG9va3Mgd2lsbCBiZSBydW46XG5cdFx0ICogMS4gYGJlZm9yZS1zYW5pdHktY2hlY2tgXG5cdFx0ICogMi4gYGJlZm9yZS1oaWdobGlnaHRgXG5cdFx0ICogMy4gQWxsIGhvb2tzIG9mIHtAbGluayBQcmlzbS5oaWdobGlnaHR9LiBUaGVzZSBob29rcyB3aWxsIGJlIHJ1biBieSBhbiBhc3luY2hyb25vdXMgd29ya2VyIGlmIGBhc3luY2AgaXMgYHRydWVgLlxuXHRcdCAqIDQuIGBiZWZvcmUtaW5zZXJ0YFxuXHRcdCAqIDUuIGBhZnRlci1oaWdobGlnaHRgXG5cdFx0ICogNi4gYGNvbXBsZXRlYFxuXHRcdCAqXG5cdFx0ICogU29tZSB0aGUgYWJvdmUgaG9va3Mgd2lsbCBiZSBza2lwcGVkIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgY29udGFpbiBhbnkgdGV4dCBvciB0aGVyZSBpcyBubyBncmFtbWFyIGxvYWRlZCBmb3Jcblx0XHQgKiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGNvZGUuXG5cdFx0ICogSXQgbXVzdCBoYXZlIGEgY2xhc3Mgb2YgYGxhbmd1YWdlLXh4eHhgIHRvIGJlIHByb2Nlc3NlZCwgd2hlcmUgYHh4eHhgIGlzIGEgdmFsaWQgbGFuZ3VhZ2UgaWRlbnRpZmllci5cblx0XHQgKiBAcGFyYW0ge2Jvb2xlYW59IFthc3luYz1mYWxzZV0gV2hldGhlciB0aGUgZWxlbWVudCBpcyB0byBiZSBoaWdobGlnaHRlZCBhc3luY2hyb25vdXNseSB1c2luZyBXZWIgV29ya2Vyc1xuXHRcdCAqIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIGF2b2lkIGJsb2NraW5nIHRoZSBVSSB3aGVuIGhpZ2hsaWdodGluZyB2ZXJ5IGxhcmdlIGNodW5rcyBvZiBjb2RlLiBUaGlzIG9wdGlvbiBpc1xuXHRcdCAqIFtkaXNhYmxlZCBieSBkZWZhdWx0XShodHRwczovL3ByaXNtanMuY29tL2ZhcS5odG1sI3doeS1pcy1hc3luY2hyb25vdXMtaGlnaGxpZ2h0aW5nLWRpc2FibGVkLWJ5LWRlZmF1bHQpLlxuXHRcdCAqXG5cdFx0ICogTm90ZTogQWxsIGxhbmd1YWdlIGRlZmluaXRpb25zIHJlcXVpcmVkIHRvIGhpZ2hsaWdodCB0aGUgY29kZSBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBtYWluIGBwcmlzbS5qc2AgZmlsZSBmb3Jcblx0XHQgKiBhc3luY2hyb25vdXMgaGlnaGxpZ2h0aW5nIHRvIHdvcmsuIFlvdSBjYW4gYnVpbGQgeW91ciBvd24gYnVuZGxlIG9uIHRoZVxuXHRcdCAqIFtEb3dubG9hZCBwYWdlXShodHRwczovL3ByaXNtanMuY29tL2Rvd25sb2FkLmh0bWwpLlxuXHRcdCAqIEBwYXJhbSB7SGlnaGxpZ2h0Q2FsbGJhY2t9IFtjYWxsYmFja10gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBhZnRlciB0aGUgaGlnaGxpZ2h0aW5nIGlzIGRvbmUuXG5cdFx0ICogTW9zdGx5IHVzZWZ1bCB3aGVuIGBhc3luY2AgaXMgYHRydWVgLCBzaW5jZSBpbiB0aGF0IGNhc2UsIHRoZSBoaWdobGlnaHRpbmcgaXMgZG9uZSBhc3luY2hyb25vdXNseS5cblx0XHQgKiBAbWVtYmVyb2YgUHJpc21cblx0XHQgKiBAcHVibGljXG5cdFx0ICovXG5cdFx0aGlnaGxpZ2h0RWxlbWVudDogZnVuY3Rpb24gKGVsZW1lbnQsIGFzeW5jLCBjYWxsYmFjaykge1xuXHRcdFx0Ly8gRmluZCBsYW5ndWFnZVxuXHRcdFx0dmFyIGxhbmd1YWdlID0gXy51dGlsLmdldExhbmd1YWdlKGVsZW1lbnQpO1xuXHRcdFx0dmFyIGdyYW1tYXIgPSBfLmxhbmd1YWdlc1tsYW5ndWFnZV07XG5cblx0XHRcdC8vIFNldCBsYW5ndWFnZSBvbiB0aGUgZWxlbWVudCwgaWYgbm90IHByZXNlbnRcblx0XHRcdF8udXRpbC5zZXRMYW5ndWFnZShlbGVtZW50LCBsYW5ndWFnZSk7XG5cblx0XHRcdC8vIFNldCBsYW5ndWFnZSBvbiB0aGUgcGFyZW50LCBmb3Igc3R5bGluZ1xuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcblx0XHRcdGlmIChwYXJlbnQgJiYgcGFyZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdwcmUnKSB7XG5cdFx0XHRcdF8udXRpbC5zZXRMYW5ndWFnZShwYXJlbnQsIGxhbmd1YWdlKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGNvZGUgPSBlbGVtZW50LnRleHRDb250ZW50O1xuXG5cdFx0XHR2YXIgZW52ID0ge1xuXHRcdFx0XHRlbGVtZW50OiBlbGVtZW50LFxuXHRcdFx0XHRsYW5ndWFnZTogbGFuZ3VhZ2UsXG5cdFx0XHRcdGdyYW1tYXI6IGdyYW1tYXIsXG5cdFx0XHRcdGNvZGU6IGNvZGVcblx0XHRcdH07XG5cblx0XHRcdGZ1bmN0aW9uIGluc2VydEhpZ2hsaWdodGVkQ29kZShoaWdobGlnaHRlZENvZGUpIHtcblx0XHRcdFx0ZW52LmhpZ2hsaWdodGVkQ29kZSA9IGhpZ2hsaWdodGVkQ29kZTtcblxuXHRcdFx0XHRfLmhvb2tzLnJ1bignYmVmb3JlLWluc2VydCcsIGVudik7XG5cblx0XHRcdFx0ZW52LmVsZW1lbnQuaW5uZXJIVE1MID0gZW52LmhpZ2hsaWdodGVkQ29kZTtcblxuXHRcdFx0XHRfLmhvb2tzLnJ1bignYWZ0ZXItaGlnaGxpZ2h0JywgZW52KTtcblx0XHRcdFx0Xy5ob29rcy5ydW4oJ2NvbXBsZXRlJywgZW52KTtcblx0XHRcdFx0Y2FsbGJhY2sgJiYgY2FsbGJhY2suY2FsbChlbnYuZWxlbWVudCk7XG5cdFx0XHR9XG5cblx0XHRcdF8uaG9va3MucnVuKCdiZWZvcmUtc2FuaXR5LWNoZWNrJywgZW52KTtcblxuXHRcdFx0Ly8gcGx1Z2lucyBtYXkgY2hhbmdlL2FkZCB0aGUgcGFyZW50L2VsZW1lbnRcblx0XHRcdHBhcmVudCA9IGVudi5lbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cdFx0XHRpZiAocGFyZW50ICYmIHBhcmVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAncHJlJyAmJiAhcGFyZW50Lmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSkge1xuXHRcdFx0XHRwYXJlbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghZW52LmNvZGUpIHtcblx0XHRcdFx0Xy5ob29rcy5ydW4oJ2NvbXBsZXRlJywgZW52KTtcblx0XHRcdFx0Y2FsbGJhY2sgJiYgY2FsbGJhY2suY2FsbChlbnYuZWxlbWVudCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Xy5ob29rcy5ydW4oJ2JlZm9yZS1oaWdobGlnaHQnLCBlbnYpO1xuXG5cdFx0XHRpZiAoIWVudi5ncmFtbWFyKSB7XG5cdFx0XHRcdGluc2VydEhpZ2hsaWdodGVkQ29kZShfLnV0aWwuZW5jb2RlKGVudi5jb2RlKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGFzeW5jICYmIF9zZWxmLldvcmtlcikge1xuXHRcdFx0XHR2YXIgd29ya2VyID0gbmV3IFdvcmtlcihfLmZpbGVuYW1lKTtcblxuXHRcdFx0XHR3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkge1xuXHRcdFx0XHRcdGluc2VydEhpZ2hsaWdodGVkQ29kZShldnQuZGF0YSk7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0d29ya2VyLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0XHRsYW5ndWFnZTogZW52Lmxhbmd1YWdlLFxuXHRcdFx0XHRcdGNvZGU6IGVudi5jb2RlLFxuXHRcdFx0XHRcdGltbWVkaWF0ZUNsb3NlOiB0cnVlXG5cdFx0XHRcdH0pKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGluc2VydEhpZ2hsaWdodGVkQ29kZShfLmhpZ2hsaWdodChlbnYuY29kZSwgZW52LmdyYW1tYXIsIGVudi5sYW5ndWFnZSkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBMb3ctbGV2ZWwgZnVuY3Rpb24sIG9ubHkgdXNlIGlmIHlvdSBrbm93IHdoYXQgeW914oCZcmUgZG9pbmcuIEl0IGFjY2VwdHMgYSBzdHJpbmcgb2YgdGV4dCBhcyBpbnB1dFxuXHRcdCAqIGFuZCB0aGUgbGFuZ3VhZ2UgZGVmaW5pdGlvbnMgdG8gdXNlLCBhbmQgcmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZSBIVE1MIHByb2R1Y2VkLlxuXHRcdCAqXG5cdFx0ICogVGhlIGZvbGxvd2luZyBob29rcyB3aWxsIGJlIHJ1bjpcblx0XHQgKiAxLiBgYmVmb3JlLXRva2VuaXplYFxuXHRcdCAqIDIuIGBhZnRlci10b2tlbml6ZWBcblx0XHQgKiAzLiBgd3JhcGA6IE9uIGVhY2gge0BsaW5rIFRva2VufS5cblx0XHQgKlxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IEEgc3RyaW5nIHdpdGggdGhlIGNvZGUgdG8gYmUgaGlnaGxpZ2h0ZWQuXG5cdFx0ICogQHBhcmFtIHtHcmFtbWFyfSBncmFtbWFyIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSB0b2tlbnMgdG8gdXNlLlxuXHRcdCAqXG5cdFx0ICogVXN1YWxseSBhIGxhbmd1YWdlIGRlZmluaXRpb24gbGlrZSBgUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cGAuXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlIFRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uIHBhc3NlZCB0byBgZ3JhbW1hcmAuXG5cdFx0ICogQHJldHVybnMge3N0cmluZ30gVGhlIGhpZ2hsaWdodGVkIEhUTUwuXG5cdFx0ICogQG1lbWJlcm9mIFByaXNtXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqIEBleGFtcGxlXG5cdFx0ICogUHJpc20uaGlnaGxpZ2h0KCd2YXIgZm9vID0gdHJ1ZTsnLCBQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdCwgJ2phdmFzY3JpcHQnKTtcblx0XHQgKi9cblx0XHRoaWdobGlnaHQ6IGZ1bmN0aW9uICh0ZXh0LCBncmFtbWFyLCBsYW5ndWFnZSkge1xuXHRcdFx0dmFyIGVudiA9IHtcblx0XHRcdFx0Y29kZTogdGV4dCxcblx0XHRcdFx0Z3JhbW1hcjogZ3JhbW1hcixcblx0XHRcdFx0bGFuZ3VhZ2U6IGxhbmd1YWdlXG5cdFx0XHR9O1xuXHRcdFx0Xy5ob29rcy5ydW4oJ2JlZm9yZS10b2tlbml6ZScsIGVudik7XG5cdFx0XHRpZiAoIWVudi5ncmFtbWFyKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignVGhlIGxhbmd1YWdlIFwiJyArIGVudi5sYW5ndWFnZSArICdcIiBoYXMgbm8gZ3JhbW1hci4nKTtcblx0XHRcdH1cblx0XHRcdGVudi50b2tlbnMgPSBfLnRva2VuaXplKGVudi5jb2RlLCBlbnYuZ3JhbW1hcik7XG5cdFx0XHRfLmhvb2tzLnJ1bignYWZ0ZXItdG9rZW5pemUnLCBlbnYpO1xuXHRcdFx0cmV0dXJuIFRva2VuLnN0cmluZ2lmeShfLnV0aWwuZW5jb2RlKGVudi50b2tlbnMpLCBlbnYubGFuZ3VhZ2UpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBUaGlzIGlzIHRoZSBoZWFydCBvZiBQcmlzbSwgYW5kIHRoZSBtb3N0IGxvdy1sZXZlbCBmdW5jdGlvbiB5b3UgY2FuIHVzZS4gSXQgYWNjZXB0cyBhIHN0cmluZyBvZiB0ZXh0IGFzIGlucHV0XG5cdFx0ICogYW5kIHRoZSBsYW5ndWFnZSBkZWZpbml0aW9ucyB0byB1c2UsIGFuZCByZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIHRva2VuaXplZCBjb2RlLlxuXHRcdCAqXG5cdFx0ICogV2hlbiB0aGUgbGFuZ3VhZ2UgZGVmaW5pdGlvbiBpbmNsdWRlcyBuZXN0ZWQgdG9rZW5zLCB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5IG9uIGVhY2ggb2YgdGhlc2UgdG9rZW5zLlxuXHRcdCAqXG5cdFx0ICogVGhpcyBtZXRob2QgY291bGQgYmUgdXNlZnVsIGluIG90aGVyIGNvbnRleHRzIGFzIHdlbGwsIGFzIGEgdmVyeSBjcnVkZSBwYXJzZXIuXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBBIHN0cmluZyB3aXRoIHRoZSBjb2RlIHRvIGJlIGhpZ2hsaWdodGVkLlxuXHRcdCAqIEBwYXJhbSB7R3JhbW1hcn0gZ3JhbW1hciBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgdG9rZW5zIHRvIHVzZS5cblx0XHQgKlxuXHRcdCAqIFVzdWFsbHkgYSBsYW5ndWFnZSBkZWZpbml0aW9uIGxpa2UgYFByaXNtLmxhbmd1YWdlcy5tYXJrdXBgLlxuXHRcdCAqIEByZXR1cm5zIHtUb2tlblN0cmVhbX0gQW4gYXJyYXkgb2Ygc3RyaW5ncyBhbmQgdG9rZW5zLCBhIHRva2VuIHN0cmVhbS5cblx0XHQgKiBAbWVtYmVyb2YgUHJpc21cblx0XHQgKiBAcHVibGljXG5cdFx0ICogQGV4YW1wbGVcblx0XHQgKiBsZXQgY29kZSA9IGB2YXIgZm9vID0gMDtgO1xuXHRcdCAqIGxldCB0b2tlbnMgPSBQcmlzbS50b2tlbml6ZShjb2RlLCBQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdCk7XG5cdFx0ICogdG9rZW5zLmZvckVhY2godG9rZW4gPT4ge1xuXHRcdCAqICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBQcmlzbS5Ub2tlbiAmJiB0b2tlbi50eXBlID09PSAnbnVtYmVyJykge1xuXHRcdCAqICAgICAgICAgY29uc29sZS5sb2coYEZvdW5kIG51bWVyaWMgbGl0ZXJhbDogJHt0b2tlbi5jb250ZW50fWApO1xuXHRcdCAqICAgICB9XG5cdFx0ICogfSk7XG5cdFx0ICovXG5cdFx0dG9rZW5pemU6IGZ1bmN0aW9uICh0ZXh0LCBncmFtbWFyKSB7XG5cdFx0XHR2YXIgcmVzdCA9IGdyYW1tYXIucmVzdDtcblx0XHRcdGlmIChyZXN0KSB7XG5cdFx0XHRcdGZvciAodmFyIHRva2VuIGluIHJlc3QpIHtcblx0XHRcdFx0XHRncmFtbWFyW3Rva2VuXSA9IHJlc3RbdG9rZW5dO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0ZGVsZXRlIGdyYW1tYXIucmVzdDtcblx0XHRcdH1cblxuXHRcdFx0dmFyIHRva2VuTGlzdCA9IG5ldyBMaW5rZWRMaXN0KCk7XG5cdFx0XHRhZGRBZnRlcih0b2tlbkxpc3QsIHRva2VuTGlzdC5oZWFkLCB0ZXh0KTtcblxuXHRcdFx0bWF0Y2hHcmFtbWFyKHRleHQsIHRva2VuTGlzdCwgZ3JhbW1hciwgdG9rZW5MaXN0LmhlYWQsIDApO1xuXG5cdFx0XHRyZXR1cm4gdG9BcnJheSh0b2tlbkxpc3QpO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBAbmFtZXNwYWNlXG5cdFx0ICogQG1lbWJlcm9mIFByaXNtXG5cdFx0ICogQHB1YmxpY1xuXHRcdCAqL1xuXHRcdGhvb2tzOiB7XG5cdFx0XHRhbGw6IHt9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIEFkZHMgdGhlIGdpdmVuIGNhbGxiYWNrIHRvIHRoZSBsaXN0IG9mIGNhbGxiYWNrcyBmb3IgdGhlIGdpdmVuIGhvb2suXG5cdFx0XHQgKlxuXHRcdFx0ICogVGhlIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSBob29rIGl0IGlzIHJlZ2lzdGVyZWQgZm9yIGlzIHJ1bi5cblx0XHRcdCAqIEhvb2tzIGFyZSB1c3VhbGx5IGRpcmVjdGx5IHJ1biBieSBhIGhpZ2hsaWdodCBmdW5jdGlvbiBidXQgeW91IGNhbiBhbHNvIHJ1biBob29rcyB5b3Vyc2VsZi5cblx0XHRcdCAqXG5cdFx0XHQgKiBPbmUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIGJlIHJlZ2lzdGVyZWQgdG8gbXVsdGlwbGUgaG9va3MgYW5kIHRoZSBzYW1lIGhvb2sgbXVsdGlwbGUgdGltZXMuXG5cdFx0XHQgKlxuXHRcdFx0ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGhvb2suXG5cdFx0XHQgKiBAcGFyYW0ge0hvb2tDYWxsYmFja30gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGlzIGdpdmVuIGVudmlyb25tZW50IHZhcmlhYmxlcy5cblx0XHRcdCAqIEBwdWJsaWNcblx0XHRcdCAqL1xuXHRcdFx0YWRkOiBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcblx0XHRcdFx0dmFyIGhvb2tzID0gXy5ob29rcy5hbGw7XG5cblx0XHRcdFx0aG9va3NbbmFtZV0gPSBob29rc1tuYW1lXSB8fCBbXTtcblxuXHRcdFx0XHRob29rc1tuYW1lXS5wdXNoKGNhbGxiYWNrKTtcblx0XHRcdH0sXG5cblx0XHRcdC8qKlxuXHRcdFx0ICogUnVucyBhIGhvb2sgaW52b2tpbmcgYWxsIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGVudmlyb25tZW50IHZhcmlhYmxlcy5cblx0XHRcdCAqXG5cdFx0XHQgKiBDYWxsYmFja3Mgd2lsbCBiZSBpbnZva2VkIHN5bmNocm9ub3VzbHkgYW5kIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZC5cblx0XHRcdCAqXG5cdFx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaG9vay5cblx0XHRcdCAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gZW52IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb2YgdGhlIGhvb2sgcGFzc2VkIHRvIGFsbCBjYWxsYmFja3MgcmVnaXN0ZXJlZC5cblx0XHRcdCAqIEBwdWJsaWNcblx0XHRcdCAqL1xuXHRcdFx0cnVuOiBmdW5jdGlvbiAobmFtZSwgZW52KSB7XG5cdFx0XHRcdHZhciBjYWxsYmFja3MgPSBfLmhvb2tzLmFsbFtuYW1lXTtcblxuXHRcdFx0XHRpZiAoIWNhbGxiYWNrcyB8fCAhY2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwLCBjYWxsYmFjazsgKGNhbGxiYWNrID0gY2FsbGJhY2tzW2krK10pOykge1xuXHRcdFx0XHRcdGNhbGxiYWNrKGVudik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0VG9rZW46IFRva2VuXG5cdH07XG5cdF9zZWxmLlByaXNtID0gXztcblxuXG5cdC8vIFR5cGVzY3JpcHQgbm90ZTpcblx0Ly8gVGhlIGZvbGxvd2luZyBjYW4gYmUgdXNlZCB0byBpbXBvcnQgdGhlIFRva2VuIHR5cGUgaW4gSlNEb2M6XG5cdC8vXG5cdC8vICAgQHR5cGVkZWYge0luc3RhbmNlVHlwZTxpbXBvcnQoXCIuL3ByaXNtLWNvcmVcIilbXCJUb2tlblwiXT59IFRva2VuXG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgdG9rZW4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFNlZSB7QGxpbmsgVG9rZW4jdHlwZSB0eXBlfVxuXHQgKiBAcGFyYW0ge3N0cmluZyB8IFRva2VuU3RyZWFtfSBjb250ZW50IFNlZSB7QGxpbmsgVG9rZW4jY29udGVudCBjb250ZW50fVxuXHQgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW2FsaWFzXSBUaGUgYWxpYXMoZXMpIG9mIHRoZSB0b2tlbi5cblx0ICogQHBhcmFtIHtzdHJpbmd9IFttYXRjaGVkU3RyPVwiXCJdIEEgY29weSBvZiB0aGUgZnVsbCBzdHJpbmcgdGhpcyB0b2tlbiB3YXMgY3JlYXRlZCBmcm9tLlxuXHQgKiBAY2xhc3Ncblx0ICogQGdsb2JhbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRmdW5jdGlvbiBUb2tlbih0eXBlLCBjb250ZW50LCBhbGlhcywgbWF0Y2hlZFN0cikge1xuXHRcdC8qKlxuXHRcdCAqIFRoZSB0eXBlIG9mIHRoZSB0b2tlbi5cblx0XHQgKlxuXHRcdCAqIFRoaXMgaXMgdXN1YWxseSB0aGUga2V5IG9mIGEgcGF0dGVybiBpbiBhIHtAbGluayBHcmFtbWFyfS5cblx0XHQgKlxuXHRcdCAqIEB0eXBlIHtzdHJpbmd9XG5cdFx0ICogQHNlZSBHcmFtbWFyVG9rZW5cblx0XHQgKiBAcHVibGljXG5cdFx0ICovXG5cdFx0dGhpcy50eXBlID0gdHlwZTtcblx0XHQvKipcblx0XHQgKiBUaGUgc3RyaW5ncyBvciB0b2tlbnMgY29udGFpbmVkIGJ5IHRoaXMgdG9rZW4uXG5cdFx0ICpcblx0XHQgKiBUaGlzIHdpbGwgYmUgYSB0b2tlbiBzdHJlYW0gaWYgdGhlIHBhdHRlcm4gbWF0Y2hlZCBhbHNvIGRlZmluZWQgYW4gYGluc2lkZWAgZ3JhbW1hci5cblx0XHQgKlxuXHRcdCAqIEB0eXBlIHtzdHJpbmcgfCBUb2tlblN0cmVhbX1cblx0XHQgKiBAcHVibGljXG5cdFx0ICovXG5cdFx0dGhpcy5jb250ZW50ID0gY29udGVudDtcblx0XHQvKipcblx0XHQgKiBUaGUgYWxpYXMoZXMpIG9mIHRoZSB0b2tlbi5cblx0XHQgKlxuXHRcdCAqIEB0eXBlIHtzdHJpbmd8c3RyaW5nW119XG5cdFx0ICogQHNlZSBHcmFtbWFyVG9rZW5cblx0XHQgKiBAcHVibGljXG5cdFx0ICovXG5cdFx0dGhpcy5hbGlhcyA9IGFsaWFzO1xuXHRcdC8vIENvcHkgb2YgdGhlIGZ1bGwgc3RyaW5nIHRoaXMgdG9rZW4gd2FzIGNyZWF0ZWQgZnJvbVxuXHRcdHRoaXMubGVuZ3RoID0gKG1hdGNoZWRTdHIgfHwgJycpLmxlbmd0aCB8IDA7XG5cdH1cblxuXHQvKipcblx0ICogQSB0b2tlbiBzdHJlYW0gaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhbmQge0BsaW5rIFRva2VuIFRva2VufSBvYmplY3RzLlxuXHQgKlxuXHQgKiBUb2tlbiBzdHJlYW1zIGhhdmUgdG8gZnVsZmlsbCBhIGZldyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFzc3VtZWQgYnkgbW9zdCBmdW5jdGlvbnMgKG1vc3RseSBpbnRlcm5hbCBvbmVzKSB0aGF0IHByb2Nlc3Ncblx0ICogdGhlbS5cblx0ICpcblx0ICogMS4gTm8gYWRqYWNlbnQgc3RyaW5ncy5cblx0ICogMi4gTm8gZW1wdHkgc3RyaW5ncy5cblx0ICpcblx0ICogICAgVGhlIG9ubHkgZXhjZXB0aW9uIGhlcmUgaXMgdGhlIHRva2VuIHN0cmVhbSB0aGF0IG9ubHkgY29udGFpbnMgdGhlIGVtcHR5IHN0cmluZyBhbmQgbm90aGluZyBlbHNlLlxuXHQgKlxuXHQgKiBAdHlwZWRlZiB7QXJyYXk8c3RyaW5nIHwgVG9rZW4+fSBUb2tlblN0cmVhbVxuXHQgKiBAZ2xvYmFsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIHRoZSBnaXZlbiB0b2tlbiBvciB0b2tlbiBzdHJlYW0gdG8gYW4gSFRNTCByZXByZXNlbnRhdGlvbi5cblx0ICpcblx0ICogVGhlIGZvbGxvd2luZyBob29rcyB3aWxsIGJlIHJ1bjpcblx0ICogMS4gYHdyYXBgOiBPbiBlYWNoIHtAbGluayBUb2tlbn0uXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nIHwgVG9rZW4gfCBUb2tlblN0cmVhbX0gbyBUaGUgdG9rZW4gb3IgdG9rZW4gc3RyZWFtIHRvIGJlIGNvbnZlcnRlZC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlIFRoZSBuYW1lIG9mIGN1cnJlbnQgbGFuZ3VhZ2UuXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBIVE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0b2tlbiBvciB0b2tlbiBzdHJlYW0uXG5cdCAqIEBtZW1iZXJvZiBUb2tlblxuXHQgKiBAc3RhdGljXG5cdCAqL1xuXHRUb2tlbi5zdHJpbmdpZnkgPSBmdW5jdGlvbiBzdHJpbmdpZnkobywgbGFuZ3VhZ2UpIHtcblx0XHRpZiAodHlwZW9mIG8gPT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0XHRpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuXHRcdFx0dmFyIHMgPSAnJztcblx0XHRcdG8uZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuXHRcdFx0XHRzICs9IHN0cmluZ2lmeShlLCBsYW5ndWFnZSk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBzO1xuXHRcdH1cblxuXHRcdHZhciBlbnYgPSB7XG5cdFx0XHR0eXBlOiBvLnR5cGUsXG5cdFx0XHRjb250ZW50OiBzdHJpbmdpZnkoby5jb250ZW50LCBsYW5ndWFnZSksXG5cdFx0XHR0YWc6ICdzcGFuJyxcblx0XHRcdGNsYXNzZXM6IFsndG9rZW4nLCBvLnR5cGVdLFxuXHRcdFx0YXR0cmlidXRlczoge30sXG5cdFx0XHRsYW5ndWFnZTogbGFuZ3VhZ2Vcblx0XHR9O1xuXG5cdFx0dmFyIGFsaWFzZXMgPSBvLmFsaWFzO1xuXHRcdGlmIChhbGlhc2VzKSB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhbGlhc2VzKSkge1xuXHRcdFx0XHRBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlbnYuY2xhc3NlcywgYWxpYXNlcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbnYuY2xhc3Nlcy5wdXNoKGFsaWFzZXMpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdF8uaG9va3MucnVuKCd3cmFwJywgZW52KTtcblxuXHRcdHZhciBhdHRyaWJ1dGVzID0gJyc7XG5cdFx0Zm9yICh2YXIgbmFtZSBpbiBlbnYuYXR0cmlidXRlcykge1xuXHRcdFx0YXR0cmlidXRlcyArPSAnICcgKyBuYW1lICsgJz1cIicgKyAoZW52LmF0dHJpYnV0ZXNbbmFtZV0gfHwgJycpLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKSArICdcIic7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICc8JyArIGVudi50YWcgKyAnIGNsYXNzPVwiJyArIGVudi5jbGFzc2VzLmpvaW4oJyAnKSArICdcIicgKyBhdHRyaWJ1dGVzICsgJz4nICsgZW52LmNvbnRlbnQgKyAnPC8nICsgZW52LnRhZyArICc+Jztcblx0fTtcblxuXHQvKipcblx0ICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cblx0ICogQHBhcmFtIHtudW1iZXJ9IHBvc1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGxvb2tiZWhpbmRcblx0ICogQHJldHVybnMge1JlZ0V4cEV4ZWNBcnJheSB8IG51bGx9XG5cdCAqL1xuXHRmdW5jdGlvbiBtYXRjaFBhdHRlcm4ocGF0dGVybiwgcG9zLCB0ZXh0LCBsb29rYmVoaW5kKSB7XG5cdFx0cGF0dGVybi5sYXN0SW5kZXggPSBwb3M7XG5cdFx0dmFyIG1hdGNoID0gcGF0dGVybi5leGVjKHRleHQpO1xuXHRcdGlmIChtYXRjaCAmJiBsb29rYmVoaW5kICYmIG1hdGNoWzFdKSB7XG5cdFx0XHQvLyBjaGFuZ2UgdGhlIG1hdGNoIHRvIHJlbW92ZSB0aGUgdGV4dCBtYXRjaGVkIGJ5IHRoZSBQcmlzbSBsb29rYmVoaW5kIGdyb3VwXG5cdFx0XHR2YXIgbG9va2JlaGluZExlbmd0aCA9IG1hdGNoWzFdLmxlbmd0aDtcblx0XHRcdG1hdGNoLmluZGV4ICs9IGxvb2tiZWhpbmRMZW5ndGg7XG5cdFx0XHRtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKGxvb2tiZWhpbmRMZW5ndGgpO1xuXHRcdH1cblx0XHRyZXR1cm4gbWF0Y2g7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRcblx0ICogQHBhcmFtIHtMaW5rZWRMaXN0PHN0cmluZyB8IFRva2VuPn0gdG9rZW5MaXN0XG5cdCAqIEBwYXJhbSB7YW55fSBncmFtbWFyXG5cdCAqIEBwYXJhbSB7TGlua2VkTGlzdE5vZGU8c3RyaW5nIHwgVG9rZW4+fSBzdGFydE5vZGVcblx0ICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0UG9zXG5cdCAqIEBwYXJhbSB7UmVtYXRjaE9wdGlvbnN9IFtyZW1hdGNoXVxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICogQHByaXZhdGVcblx0ICpcblx0ICogQHR5cGVkZWYgUmVtYXRjaE9wdGlvbnNcblx0ICogQHByb3BlcnR5IHtzdHJpbmd9IGNhdXNlXG5cdCAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZWFjaFxuXHQgKi9cblx0ZnVuY3Rpb24gbWF0Y2hHcmFtbWFyKHRleHQsIHRva2VuTGlzdCwgZ3JhbW1hciwgc3RhcnROb2RlLCBzdGFydFBvcywgcmVtYXRjaCkge1xuXHRcdGZvciAodmFyIHRva2VuIGluIGdyYW1tYXIpIHtcblx0XHRcdGlmICghZ3JhbW1hci5oYXNPd25Qcm9wZXJ0eSh0b2tlbikgfHwgIWdyYW1tYXJbdG9rZW5dKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgcGF0dGVybnMgPSBncmFtbWFyW3Rva2VuXTtcblx0XHRcdHBhdHRlcm5zID0gQXJyYXkuaXNBcnJheShwYXR0ZXJucykgPyBwYXR0ZXJucyA6IFtwYXR0ZXJuc107XG5cblx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgcGF0dGVybnMubGVuZ3RoOyArK2opIHtcblx0XHRcdFx0aWYgKHJlbWF0Y2ggJiYgcmVtYXRjaC5jYXVzZSA9PSB0b2tlbiArICcsJyArIGopIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YXIgcGF0dGVybk9iaiA9IHBhdHRlcm5zW2pdO1xuXHRcdFx0XHR2YXIgaW5zaWRlID0gcGF0dGVybk9iai5pbnNpZGU7XG5cdFx0XHRcdHZhciBsb29rYmVoaW5kID0gISFwYXR0ZXJuT2JqLmxvb2tiZWhpbmQ7XG5cdFx0XHRcdHZhciBncmVlZHkgPSAhIXBhdHRlcm5PYmouZ3JlZWR5O1xuXHRcdFx0XHR2YXIgYWxpYXMgPSBwYXR0ZXJuT2JqLmFsaWFzO1xuXG5cdFx0XHRcdGlmIChncmVlZHkgJiYgIXBhdHRlcm5PYmoucGF0dGVybi5nbG9iYWwpIHtcblx0XHRcdFx0XHQvLyBXaXRob3V0IHRoZSBnbG9iYWwgZmxhZywgbGFzdEluZGV4IHdvbid0IHdvcmtcblx0XHRcdFx0XHR2YXIgZmxhZ3MgPSBwYXR0ZXJuT2JqLnBhdHRlcm4udG9TdHJpbmcoKS5tYXRjaCgvW2ltc3V5XSokLylbMF07XG5cdFx0XHRcdFx0cGF0dGVybk9iai5wYXR0ZXJuID0gUmVnRXhwKHBhdHRlcm5PYmoucGF0dGVybi5zb3VyY2UsIGZsYWdzICsgJ2cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8qKiBAdHlwZSB7UmVnRXhwfSAqL1xuXHRcdFx0XHR2YXIgcGF0dGVybiA9IHBhdHRlcm5PYmoucGF0dGVybiB8fCBwYXR0ZXJuT2JqO1xuXG5cdFx0XHRcdGZvciAoIC8vIGl0ZXJhdGUgdGhlIHRva2VuIGxpc3QgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdG9rZW4vc3RyaW5nIHBvc2l0aW9uXG5cdFx0XHRcdFx0dmFyIGN1cnJlbnROb2RlID0gc3RhcnROb2RlLm5leHQsIHBvcyA9IHN0YXJ0UG9zO1xuXHRcdFx0XHRcdGN1cnJlbnROb2RlICE9PSB0b2tlbkxpc3QudGFpbDtcblx0XHRcdFx0XHRwb3MgKz0gY3VycmVudE5vZGUudmFsdWUubGVuZ3RoLCBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHRcblx0XHRcdFx0KSB7XG5cblx0XHRcdFx0XHRpZiAocmVtYXRjaCAmJiBwb3MgPj0gcmVtYXRjaC5yZWFjaCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dmFyIHN0ciA9IGN1cnJlbnROb2RlLnZhbHVlO1xuXG5cdFx0XHRcdFx0aWYgKHRva2VuTGlzdC5sZW5ndGggPiB0ZXh0Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0Ly8gU29tZXRoaW5nIHdlbnQgdGVycmlibHkgd3JvbmcsIEFCT1JULCBBQk9SVCFcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoc3RyIGluc3RhbmNlb2YgVG9rZW4pIHtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciByZW1vdmVDb3VudCA9IDE7IC8vIHRoaXMgaXMgdGhlIHRvIHBhcmFtZXRlciBvZiByZW1vdmVCZXR3ZWVuXG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xuXG5cdFx0XHRcdFx0aWYgKGdyZWVkeSkge1xuXHRcdFx0XHRcdFx0bWF0Y2ggPSBtYXRjaFBhdHRlcm4ocGF0dGVybiwgcG9zLCB0ZXh0LCBsb29rYmVoaW5kKTtcblx0XHRcdFx0XHRcdGlmICghbWF0Y2ggfHwgbWF0Y2guaW5kZXggPj0gdGV4dC5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHZhciBmcm9tID0gbWF0Y2guaW5kZXg7XG5cdFx0XHRcdFx0XHR2YXIgdG8gPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcblx0XHRcdFx0XHRcdHZhciBwID0gcG9zO1xuXG5cdFx0XHRcdFx0XHQvLyBmaW5kIHRoZSBub2RlIHRoYXQgY29udGFpbnMgdGhlIG1hdGNoXG5cdFx0XHRcdFx0XHRwICs9IGN1cnJlbnROb2RlLnZhbHVlLmxlbmd0aDtcblx0XHRcdFx0XHRcdHdoaWxlIChmcm9tID49IHApIHtcblx0XHRcdFx0XHRcdFx0Y3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuXHRcdFx0XHRcdFx0XHRwICs9IGN1cnJlbnROb2RlLnZhbHVlLmxlbmd0aDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdC8vIGFkanVzdCBwb3MgKGFuZCBwKVxuXHRcdFx0XHRcdFx0cCAtPSBjdXJyZW50Tm9kZS52YWx1ZS5sZW5ndGg7XG5cdFx0XHRcdFx0XHRwb3MgPSBwO1xuXG5cdFx0XHRcdFx0XHQvLyB0aGUgY3VycmVudCBub2RlIGlzIGEgVG9rZW4sIHRoZW4gdGhlIG1hdGNoIHN0YXJ0cyBpbnNpZGUgYW5vdGhlciBUb2tlbiwgd2hpY2ggaXMgaW52YWxpZFxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnROb2RlLnZhbHVlIGluc3RhbmNlb2YgVG9rZW4pIHtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIGZpbmQgdGhlIGxhc3Qgbm9kZSB3aGljaCBpcyBhZmZlY3RlZCBieSB0aGlzIG1hdGNoXG5cdFx0XHRcdFx0XHRmb3IgKFxuXHRcdFx0XHRcdFx0XHR2YXIgayA9IGN1cnJlbnROb2RlO1xuXHRcdFx0XHRcdFx0XHRrICE9PSB0b2tlbkxpc3QudGFpbCAmJiAocCA8IHRvIHx8IHR5cGVvZiBrLnZhbHVlID09PSAnc3RyaW5nJyk7XG5cdFx0XHRcdFx0XHRcdGsgPSBrLm5leHRcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRyZW1vdmVDb3VudCsrO1xuXHRcdFx0XHRcdFx0XHRwICs9IGsudmFsdWUubGVuZ3RoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmVtb3ZlQ291bnQtLTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVwbGFjZSB3aXRoIHRoZSBuZXcgbWF0Y2hcblx0XHRcdFx0XHRcdHN0ciA9IHRleHQuc2xpY2UocG9zLCBwKTtcblx0XHRcdFx0XHRcdG1hdGNoLmluZGV4IC09IHBvcztcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bWF0Y2ggPSBtYXRjaFBhdHRlcm4ocGF0dGVybiwgMCwgc3RyLCBsb29rYmVoaW5kKTtcblx0XHRcdFx0XHRcdGlmICghbWF0Y2gpIHtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuXHRcdFx0XHRcdHZhciBmcm9tID0gbWF0Y2guaW5kZXg7XG5cdFx0XHRcdFx0dmFyIG1hdGNoU3RyID0gbWF0Y2hbMF07XG5cdFx0XHRcdFx0dmFyIGJlZm9yZSA9IHN0ci5zbGljZSgwLCBmcm9tKTtcblx0XHRcdFx0XHR2YXIgYWZ0ZXIgPSBzdHIuc2xpY2UoZnJvbSArIG1hdGNoU3RyLmxlbmd0aCk7XG5cblx0XHRcdFx0XHR2YXIgcmVhY2ggPSBwb3MgKyBzdHIubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChyZW1hdGNoICYmIHJlYWNoID4gcmVtYXRjaC5yZWFjaCkge1xuXHRcdFx0XHRcdFx0cmVtYXRjaC5yZWFjaCA9IHJlYWNoO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciByZW1vdmVGcm9tID0gY3VycmVudE5vZGUucHJldjtcblxuXHRcdFx0XHRcdGlmIChiZWZvcmUpIHtcblx0XHRcdFx0XHRcdHJlbW92ZUZyb20gPSBhZGRBZnRlcih0b2tlbkxpc3QsIHJlbW92ZUZyb20sIGJlZm9yZSk7XG5cdFx0XHRcdFx0XHRwb3MgKz0gYmVmb3JlLmxlbmd0aDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZW1vdmVSYW5nZSh0b2tlbkxpc3QsIHJlbW92ZUZyb20sIHJlbW92ZUNvdW50KTtcblxuXHRcdFx0XHRcdHZhciB3cmFwcGVkID0gbmV3IFRva2VuKHRva2VuLCBpbnNpZGUgPyBfLnRva2VuaXplKG1hdGNoU3RyLCBpbnNpZGUpIDogbWF0Y2hTdHIsIGFsaWFzLCBtYXRjaFN0cik7XG5cdFx0XHRcdFx0Y3VycmVudE5vZGUgPSBhZGRBZnRlcih0b2tlbkxpc3QsIHJlbW92ZUZyb20sIHdyYXBwZWQpO1xuXG5cdFx0XHRcdFx0aWYgKGFmdGVyKSB7XG5cdFx0XHRcdFx0XHRhZGRBZnRlcih0b2tlbkxpc3QsIGN1cnJlbnROb2RlLCBhZnRlcik7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKHJlbW92ZUNvdW50ID4gMSkge1xuXHRcdFx0XHRcdFx0Ly8gYXQgbGVhc3Qgb25lIFRva2VuIG9iamVjdCB3YXMgcmVtb3ZlZCwgc28gd2UgaGF2ZSB0byBkbyBzb21lIHJlbWF0Y2hpbmdcblx0XHRcdFx0XHRcdC8vIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHRoZSBjdXJyZW50IHBhdHRlcm4gaXMgZ3JlZWR5XG5cblx0XHRcdFx0XHRcdC8qKiBAdHlwZSB7UmVtYXRjaE9wdGlvbnN9ICovXG5cdFx0XHRcdFx0XHR2YXIgbmVzdGVkUmVtYXRjaCA9IHtcblx0XHRcdFx0XHRcdFx0Y2F1c2U6IHRva2VuICsgJywnICsgaixcblx0XHRcdFx0XHRcdFx0cmVhY2g6IHJlYWNoXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0bWF0Y2hHcmFtbWFyKHRleHQsIHRva2VuTGlzdCwgZ3JhbW1hciwgY3VycmVudE5vZGUucHJldiwgcG9zLCBuZXN0ZWRSZW1hdGNoKTtcblxuXHRcdFx0XHRcdFx0Ly8gdGhlIHJlYWNoIG1pZ2h0IGhhdmUgYmVlbiBleHRlbmRlZCBiZWNhdXNlIG9mIHRoZSByZW1hdGNoaW5nXG5cdFx0XHRcdFx0XHRpZiAocmVtYXRjaCAmJiBuZXN0ZWRSZW1hdGNoLnJlYWNoID4gcmVtYXRjaC5yZWFjaCkge1xuXHRcdFx0XHRcdFx0XHRyZW1hdGNoLnJlYWNoID0gbmVzdGVkUmVtYXRjaC5yZWFjaDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHR5cGVkZWYgTGlua2VkTGlzdE5vZGVcblx0ICogQHByb3BlcnR5IHtUfSB2YWx1ZVxuXHQgKiBAcHJvcGVydHkge0xpbmtlZExpc3ROb2RlPFQ+IHwgbnVsbH0gcHJldiBUaGUgcHJldmlvdXMgbm9kZS5cblx0ICogQHByb3BlcnR5IHtMaW5rZWRMaXN0Tm9kZTxUPiB8IG51bGx9IG5leHQgVGhlIG5leHQgbm9kZS5cblx0ICogQHRlbXBsYXRlIFRcblx0ICogQHByaXZhdGVcblx0ICovXG5cblx0LyoqXG5cdCAqIEB0ZW1wbGF0ZSBUXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBMaW5rZWRMaXN0KCkge1xuXHRcdC8qKiBAdHlwZSB7TGlua2VkTGlzdE5vZGU8VD59ICovXG5cdFx0dmFyIGhlYWQgPSB7IHZhbHVlOiBudWxsLCBwcmV2OiBudWxsLCBuZXh0OiBudWxsIH07XG5cdFx0LyoqIEB0eXBlIHtMaW5rZWRMaXN0Tm9kZTxUPn0gKi9cblx0XHR2YXIgdGFpbCA9IHsgdmFsdWU6IG51bGwsIHByZXY6IGhlYWQsIG5leHQ6IG51bGwgfTtcblx0XHRoZWFkLm5leHQgPSB0YWlsO1xuXG5cdFx0LyoqIEB0eXBlIHtMaW5rZWRMaXN0Tm9kZTxUPn0gKi9cblx0XHR0aGlzLmhlYWQgPSBoZWFkO1xuXHRcdC8qKiBAdHlwZSB7TGlua2VkTGlzdE5vZGU8VD59ICovXG5cdFx0dGhpcy50YWlsID0gdGFpbDtcblx0XHR0aGlzLmxlbmd0aCA9IDA7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIG5ldyBub2RlIHdpdGggdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBsaXN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0xpbmtlZExpc3Q8VD59IGxpc3Rcblx0ICogQHBhcmFtIHtMaW5rZWRMaXN0Tm9kZTxUPn0gbm9kZVxuXHQgKiBAcGFyYW0ge1R9IHZhbHVlXG5cdCAqIEByZXR1cm5zIHtMaW5rZWRMaXN0Tm9kZTxUPn0gVGhlIGFkZGVkIG5vZGUuXG5cdCAqIEB0ZW1wbGF0ZSBUXG5cdCAqL1xuXHRmdW5jdGlvbiBhZGRBZnRlcihsaXN0LCBub2RlLCB2YWx1ZSkge1xuXHRcdC8vIGFzc3VtZXMgdGhhdCBub2RlICE9IGxpc3QudGFpbCAmJiB2YWx1ZXMubGVuZ3RoID49IDBcblx0XHR2YXIgbmV4dCA9IG5vZGUubmV4dDtcblxuXHRcdHZhciBuZXdOb2RlID0geyB2YWx1ZTogdmFsdWUsIHByZXY6IG5vZGUsIG5leHQ6IG5leHQgfTtcblx0XHRub2RlLm5leHQgPSBuZXdOb2RlO1xuXHRcdG5leHQucHJldiA9IG5ld05vZGU7XG5cdFx0bGlzdC5sZW5ndGgrKztcblxuXHRcdHJldHVybiBuZXdOb2RlO1xuXHR9XG5cdC8qKlxuXHQgKiBSZW1vdmVzIGBjb3VudGAgbm9kZXMgYWZ0ZXIgdGhlIGdpdmVuIG5vZGUuIFRoZSBnaXZlbiBub2RlIHdpbGwgbm90IGJlIHJlbW92ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7TGlua2VkTGlzdDxUPn0gbGlzdFxuXHQgKiBAcGFyYW0ge0xpbmtlZExpc3ROb2RlPFQ+fSBub2RlXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudFxuXHQgKiBAdGVtcGxhdGUgVFxuXHQgKi9cblx0ZnVuY3Rpb24gcmVtb3ZlUmFuZ2UobGlzdCwgbm9kZSwgY291bnQpIHtcblx0XHR2YXIgbmV4dCA9IG5vZGUubmV4dDtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50ICYmIG5leHQgIT09IGxpc3QudGFpbDsgaSsrKSB7XG5cdFx0XHRuZXh0ID0gbmV4dC5uZXh0O1xuXHRcdH1cblx0XHRub2RlLm5leHQgPSBuZXh0O1xuXHRcdG5leHQucHJldiA9IG5vZGU7XG5cdFx0bGlzdC5sZW5ndGggLT0gaTtcblx0fVxuXHQvKipcblx0ICogQHBhcmFtIHtMaW5rZWRMaXN0PFQ+fSBsaXN0XG5cdCAqIEByZXR1cm5zIHtUW119XG5cdCAqIEB0ZW1wbGF0ZSBUXG5cdCAqL1xuXHRmdW5jdGlvbiB0b0FycmF5KGxpc3QpIHtcblx0XHR2YXIgYXJyYXkgPSBbXTtcblx0XHR2YXIgbm9kZSA9IGxpc3QuaGVhZC5uZXh0O1xuXHRcdHdoaWxlIChub2RlICE9PSBsaXN0LnRhaWwpIHtcblx0XHRcdGFycmF5LnB1c2gobm9kZS52YWx1ZSk7XG5cdFx0XHRub2RlID0gbm9kZS5uZXh0O1xuXHRcdH1cblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblxuXG5cdGlmICghX3NlbGYuZG9jdW1lbnQpIHtcblx0XHRpZiAoIV9zZWxmLmFkZEV2ZW50TGlzdGVuZXIpIHtcblx0XHRcdC8vIGluIE5vZGUuanNcblx0XHRcdHJldHVybiBfO1xuXHRcdH1cblxuXHRcdGlmICghXy5kaXNhYmxlV29ya2VyTWVzc2FnZUhhbmRsZXIpIHtcblx0XHRcdC8vIEluIHdvcmtlclxuXHRcdFx0X3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uIChldnQpIHtcblx0XHRcdFx0dmFyIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGV2dC5kYXRhKTtcblx0XHRcdFx0dmFyIGxhbmcgPSBtZXNzYWdlLmxhbmd1YWdlO1xuXHRcdFx0XHR2YXIgY29kZSA9IG1lc3NhZ2UuY29kZTtcblx0XHRcdFx0dmFyIGltbWVkaWF0ZUNsb3NlID0gbWVzc2FnZS5pbW1lZGlhdGVDbG9zZTtcblxuXHRcdFx0XHRfc2VsZi5wb3N0TWVzc2FnZShfLmhpZ2hsaWdodChjb2RlLCBfLmxhbmd1YWdlc1tsYW5nXSwgbGFuZykpO1xuXHRcdFx0XHRpZiAoaW1tZWRpYXRlQ2xvc2UpIHtcblx0XHRcdFx0XHRfc2VsZi5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCBmYWxzZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIF87XG5cdH1cblxuXHQvLyBHZXQgY3VycmVudCBzY3JpcHQgYW5kIGhpZ2hsaWdodFxuXHR2YXIgc2NyaXB0ID0gXy51dGlsLmN1cnJlbnRTY3JpcHQoKTtcblxuXHRpZiAoc2NyaXB0KSB7XG5cdFx0Xy5maWxlbmFtZSA9IHNjcmlwdC5zcmM7XG5cblx0XHRpZiAoc2NyaXB0Lmhhc0F0dHJpYnV0ZSgnZGF0YS1tYW51YWwnKSkge1xuXHRcdFx0Xy5tYW51YWwgPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGhpZ2hsaWdodEF1dG9tYXRpY2FsbHlDYWxsYmFjaygpIHtcblx0XHRpZiAoIV8ubWFudWFsKSB7XG5cdFx0XHRfLmhpZ2hsaWdodEFsbCgpO1xuXHRcdH1cblx0fVxuXG5cdGlmICghXy5tYW51YWwpIHtcblx0XHQvLyBJZiB0aGUgZG9jdW1lbnQgc3RhdGUgaXMgXCJsb2FkaW5nXCIsIHRoZW4gd2UnbGwgdXNlIERPTUNvbnRlbnRMb2FkZWQuXG5cdFx0Ly8gSWYgdGhlIGRvY3VtZW50IHN0YXRlIGlzIFwiaW50ZXJhY3RpdmVcIiBhbmQgdGhlIHByaXNtLmpzIHNjcmlwdCBpcyBkZWZlcnJlZCwgdGhlbiB3ZSdsbCBhbHNvIHVzZSB0aGVcblx0XHQvLyBET01Db250ZW50TG9hZGVkIGV2ZW50IGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgc29tZSBwbHVnaW5zIG9yIGxhbmd1YWdlcyB3aGljaCBoYXZlIGFsc28gYmVlbiBkZWZlcnJlZCBhbmQgdGhleVxuXHRcdC8vIG1pZ2h0IHRha2UgbG9uZ2VyIG9uZSBhbmltYXRpb24gZnJhbWUgdG8gZXhlY3V0ZSB3aGljaCBjYW4gY3JlYXRlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgb25seSBzb21lIHBsdWdpbnMgaGF2ZVxuXHRcdC8vIGJlZW4gbG9hZGVkIHdoZW4gUHJpc20uaGlnaGxpZ2h0QWxsKCkgaXMgZXhlY3V0ZWQsIGRlcGVuZGluZyBvbiBob3cgZmFzdCByZXNvdXJjZXMgYXJlIGxvYWRlZC5cblx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL1ByaXNtSlMvcHJpc20vaXNzdWVzLzIxMDJcblx0XHR2YXIgcmVhZHlTdGF0ZSA9IGRvY3VtZW50LnJlYWR5U3RhdGU7XG5cdFx0aWYgKHJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJyB8fCByZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnICYmIHNjcmlwdCAmJiBzY3JpcHQuZGVmZXIpIHtcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBoaWdobGlnaHRBdXRvbWF0aWNhbGx5Q2FsbGJhY2spO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSkge1xuXHRcdFx0XHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGhpZ2hsaWdodEF1dG9tYXRpY2FsbHlDYWxsYmFjayk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dChoaWdobGlnaHRBdXRvbWF0aWNhbGx5Q2FsbGJhY2ssIDE2KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gXztcblxufShfc2VsZikpO1xuXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0bW9kdWxlLmV4cG9ydHMgPSBQcmlzbTtcbn1cblxuLy8gaGFjayBmb3IgY29tcG9uZW50cyB0byB3b3JrIGNvcnJlY3RseSBpbiBub2RlLmpzXG5pZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Z2xvYmFsLlByaXNtID0gUHJpc207XG59XG5cbi8vIHNvbWUgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uL3R5cGVzXG5cbi8qKlxuICogVGhlIGV4cGFuc2lvbiBvZiBhIHNpbXBsZSBgUmVnRXhwYCBsaXRlcmFsIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEB0eXBlZGVmIEdyYW1tYXJUb2tlblxuICogQHByb3BlcnR5IHtSZWdFeHB9IHBhdHRlcm4gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBvZiB0aGUgdG9rZW4uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtsb29rYmVoaW5kPWZhbHNlXSBJZiBgdHJ1ZWAsIHRoZW4gdGhlIGZpcnN0IGNhcHR1cmluZyBncm91cCBvZiBgcGF0dGVybmAgd2lsbCAoZWZmZWN0aXZlbHkpXG4gKiBiZWhhdmUgYXMgYSBsb29rYmVoaW5kIGdyb3VwIG1lYW5pbmcgdGhhdCB0aGUgY2FwdHVyZWQgdGV4dCB3aWxsIG5vdCBiZSBwYXJ0IG9mIHRoZSBtYXRjaGVkIHRleHQgb2YgdGhlIG5ldyB0b2tlbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2dyZWVkeT1mYWxzZV0gV2hldGhlciB0aGUgdG9rZW4gaXMgZ3JlZWR5LlxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IFthbGlhc10gQW4gb3B0aW9uYWwgYWxpYXMgb3IgbGlzdCBvZiBhbGlhc2VzLlxuICogQHByb3BlcnR5IHtHcmFtbWFyfSBbaW5zaWRlXSBUaGUgbmVzdGVkIGdyYW1tYXIgb2YgdGhpcyB0b2tlbi5cbiAqXG4gKiBUaGUgYGluc2lkZWAgZ3JhbW1hciB3aWxsIGJlIHVzZWQgdG8gdG9rZW5pemUgdGhlIHRleHQgdmFsdWUgb2YgZWFjaCB0b2tlbiBvZiB0aGlzIGtpbmQuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBtYWtlIG5lc3RlZCBhbmQgZXZlbiByZWN1cnNpdmUgbGFuZ3VhZ2UgZGVmaW5pdGlvbnMuXG4gKlxuICogTm90ZTogVGhpcyBjYW4gY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBCZSBjYXJlZnVsIHdoZW4geW91IGVtYmVkIGRpZmZlcmVudCBsYW5ndWFnZXMgb3IgZXZlbiB0aGUgc2FtZSBsYW5ndWFnZSBpbnRvXG4gKiBlYWNoIGFub3RoZXIuXG4gKiBAZ2xvYmFsXG4gKiBAcHVibGljXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBHcmFtbWFyXG4gKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgUmVnRXhwIHwgR3JhbW1hclRva2VuIHwgQXJyYXk8UmVnRXhwIHwgR3JhbW1hclRva2VuPj59XG4gKiBAcHJvcGVydHkge0dyYW1tYXJ9IFtyZXN0XSBBbiBvcHRpb25hbCBncmFtbWFyIG9iamVjdCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhpcyBncmFtbWFyLlxuICogQGdsb2JhbFxuICogQHB1YmxpY1xuICovXG5cbi8qKlxuICogQSBmdW5jdGlvbiB3aGljaCB3aWxsIGludm9rZWQgYWZ0ZXIgYW4gZWxlbWVudCB3YXMgc3VjY2Vzc2Z1bGx5IGhpZ2hsaWdodGVkLlxuICpcbiAqIEBjYWxsYmFjayBIaWdobGlnaHRDYWxsYmFja1xuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHN1Y2Nlc3NmdWxseSBoaWdobGlnaHRlZC5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogQGdsb2JhbFxuICogQHB1YmxpY1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIEhvb2tDYWxsYmFja1xuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBlbnYgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBvZiB0aGUgaG9vay5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogQGdsb2JhbFxuICogQHB1YmxpY1xuICovXG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBtYXJrdXBcbm1hcmt1cC5kaXNwbGF5TmFtZSA9ICdtYXJrdXAnXG5tYXJrdXAuYWxpYXNlcyA9IFsnaHRtbCcsICdtYXRobWwnLCAnc3ZnJywgJ3htbCcsICdzc21sJywgJ2F0b20nLCAncnNzJ11cbmZ1bmN0aW9uIG1hcmt1cChQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMubWFya3VwID0ge1xuICAgIGNvbW1lbnQ6IHtcbiAgICAgIHBhdHRlcm46IC88IS0tKD86KD8hPCEtLSlbXFxzXFxTXSkqPy0tPi8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHByb2xvZzoge1xuICAgICAgcGF0dGVybjogLzxcXD9bXFxzXFxTXSs/XFw/Pi8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIGRvY3R5cGU6IHtcbiAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi94bWwvI05ULWRvY3R5cGVkZWNsXG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvPCFET0NUWVBFKD86W14+XCInW1xcXV18XCJbXlwiXSpcInwnW14nXSonKSsoPzpcXFsoPzpbXjxcIidcXF1dfFwiW15cIl0qXCJ8J1teJ10qJ3w8KD8hIS0tKXw8IS0tKD86W14tXXwtKD8hLT4pKSotLT4pKlxcXVxccyopPz4vaSxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICAnaW50ZXJuYWwtc3Vic2V0Jzoge1xuICAgICAgICAgIHBhdHRlcm46IC8oXlteXFxbXSpcXFspW1xcc1xcU10rKD89XFxdPiQpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgICBpbnNpZGU6IG51bGwgLy8gc2VlIGJlbG93XG4gICAgICAgIH0sXG4gICAgICAgIHN0cmluZzoge1xuICAgICAgICAgIHBhdHRlcm46IC9cIlteXCJdKlwifCdbXiddKicvLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwdW5jdHVhdGlvbjogL148IXw+JHxbW1xcXV0vLFxuICAgICAgICAnZG9jdHlwZS10YWcnOiAvXkRPQ1RZUEUvaSxcbiAgICAgICAgbmFtZTogL1teXFxzPD4nXCJdKy9cbiAgICAgIH1cbiAgICB9LFxuICAgIGNkYXRhOiB7XG4gICAgICBwYXR0ZXJuOiAvPCFcXFtDREFUQVxcW1tcXHNcXFNdKj9cXF1cXF0+L2ksXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHRhZzoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLzxcXC8/KD8hXFxkKVteXFxzPlxcLz0kPCVdKyg/Olxccyg/OlxccypbXlxccz5cXC89XSsoPzpcXHMqPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W15cXHMnXCI+PV0rKD89W1xccz5dKSl8KD89W1xccy8+XSkpKSspP1xccypcXC8/Pi8sXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgdGFnOiB7XG4gICAgICAgICAgcGF0dGVybjogL148XFwvP1teXFxzPlxcL10rLyxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvXjxcXC8/LyxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogL15bXlxccz5cXC86XSs6L1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3NwZWNpYWwtYXR0cic6IFtdLFxuICAgICAgICAnYXR0ci12YWx1ZSc6IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W15cXHMnXCI+PV0rKS8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGF0dGVybjogL149LyxcbiAgICAgICAgICAgICAgICBhbGlhczogJ2F0dHItZXF1YWxzJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvXCJ8Jy9cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHB1bmN0dWF0aW9uOiAvXFwvPz4vLFxuICAgICAgICAnYXR0ci1uYW1lJzoge1xuICAgICAgICAgIHBhdHRlcm46IC9bXlxccz5cXC9dKy8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBuYW1lc3BhY2U6IC9eW15cXHM+XFwvOl0rOi9cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGVudGl0eTogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvJltcXGRhLXpdezEsOH07L2ksXG4gICAgICAgIGFsaWFzOiAnbmFtZWQtZW50aXR5J1xuICAgICAgfSxcbiAgICAgIC8mI3g/W1xcZGEtZl17MSw4fTsvaVxuICAgIF1cbiAgfVxuICBQcmlzbS5sYW5ndWFnZXMubWFya3VwWyd0YWcnXS5pbnNpZGVbJ2F0dHItdmFsdWUnXS5pbnNpZGVbJ2VudGl0eSddID1cbiAgICBQcmlzbS5sYW5ndWFnZXMubWFya3VwWydlbnRpdHknXVxuICBQcmlzbS5sYW5ndWFnZXMubWFya3VwWydkb2N0eXBlJ10uaW5zaWRlWydpbnRlcm5hbC1zdWJzZXQnXS5pbnNpZGUgPVxuICAgIFByaXNtLmxhbmd1YWdlcy5tYXJrdXAgLy8gUGx1Z2luIHRvIG1ha2UgZW50aXR5IHRpdGxlIHNob3cgdGhlIHJlYWwgZW50aXR5LCBpZGVhIGJ5IFJvbWFuIEtvbWFyb3ZcbiAgUHJpc20uaG9va3MuYWRkKCd3cmFwJywgZnVuY3Rpb24gKGVudikge1xuICAgIGlmIChlbnYudHlwZSA9PT0gJ2VudGl0eScpIHtcbiAgICAgIGVudi5hdHRyaWJ1dGVzWyd0aXRsZSddID0gZW52LmNvbnRlbnQudmFsdWUucmVwbGFjZSgvJmFtcDsvLCAnJicpXG4gICAgfVxuICB9KVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cC50YWcsICdhZGRJbmxpbmVkJywge1xuICAgIC8qKlxuICAgICAqIEFkZHMgYW4gaW5saW5lZCBsYW5ndWFnZSB0byBtYXJrdXAuXG4gICAgICpcbiAgICAgKiBBbiBleGFtcGxlIG9mIGFuIGlubGluZWQgbGFuZ3VhZ2UgaXMgQ1NTIHdpdGggYDxzdHlsZT5gIHRhZ3MuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFnIHRoYXQgY29udGFpbnMgdGhlIGlubGluZWQgbGFuZ3VhZ2UuIFRoaXMgbmFtZSB3aWxsIGJlIHRyZWF0ZWQgYXNcbiAgICAgKiBjYXNlIGluc2Vuc2l0aXZlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nIFRoZSBsYW5ndWFnZSBrZXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhZGRJbmxpbmVkKCdzdHlsZScsICdjc3MnKTtcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkSW5saW5lZCh0YWdOYW1lLCBsYW5nKSB7XG4gICAgICB2YXIgaW5jbHVkZWRDZGF0YUluc2lkZSA9IHt9XG4gICAgICBpbmNsdWRlZENkYXRhSW5zaWRlWydsYW5ndWFnZS0nICsgbGFuZ10gPSB7XG4gICAgICAgIHBhdHRlcm46IC8oXjwhXFxbQ0RBVEFcXFspW1xcc1xcU10rPyg/PVxcXVxcXT4kKS9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlc1tsYW5nXVxuICAgICAgfVxuICAgICAgaW5jbHVkZWRDZGF0YUluc2lkZVsnY2RhdGEnXSA9IC9ePCFcXFtDREFUQVxcW3xcXF1cXF0+JC9pXG4gICAgICB2YXIgaW5zaWRlID0ge1xuICAgICAgICAnaW5jbHVkZWQtY2RhdGEnOiB7XG4gICAgICAgICAgcGF0dGVybjogLzwhXFxbQ0RBVEFcXFtbXFxzXFxTXSo/XFxdXFxdPi9pLFxuICAgICAgICAgIGluc2lkZTogaW5jbHVkZWRDZGF0YUluc2lkZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpbnNpZGVbJ2xhbmd1YWdlLScgKyBsYW5nXSA9IHtcbiAgICAgICAgcGF0dGVybjogL1tcXHNcXFNdKy8sXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzW2xhbmddXG4gICAgICB9XG4gICAgICB2YXIgZGVmID0ge31cbiAgICAgIGRlZlt0YWdOYW1lXSA9IHtcbiAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgIC8oPF9fW14+XSo+KSg/OjwhXFxbQ0RBVEFcXFsoPzpbXlxcXV18XFxdKD8hXFxdPikpKlxcXVxcXT58KD8hPCFcXFtDREFUQVxcWylbXFxzXFxTXSkqPyg/PTxcXC9fXz4pLy5zb3VyY2UucmVwbGFjZShcbiAgICAgICAgICAgIC9fXy9nLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gdGFnTmFtZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICksXG4gICAgICAgICAgJ2knXG4gICAgICAgICksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiBpbnNpZGVcbiAgICAgIH1cbiAgICAgIFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoJ21hcmt1cCcsICdjZGF0YScsIGRlZilcbiAgICB9XG4gIH0pXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcmlzbS5sYW5ndWFnZXMubWFya3VwLnRhZywgJ2FkZEF0dHJpYnV0ZScsIHtcbiAgICAvKipcbiAgICAgKiBBZGRzIGFuIHBhdHRlcm4gdG8gaGlnaGxpZ2h0IGxhbmd1YWdlcyBlbWJlZGRlZCBpbiBIVE1MIGF0dHJpYnV0ZXMuXG4gICAgICpcbiAgICAgKiBBbiBleGFtcGxlIG9mIGFuIGlubGluZWQgbGFuZ3VhZ2UgaXMgQ1NTIHdpdGggYHN0eWxlYCBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWcgdGhhdCBjb250YWlucyB0aGUgaW5saW5lZCBsYW5ndWFnZS4gVGhpcyBuYW1lIHdpbGwgYmUgdHJlYXRlZCBhc1xuICAgICAqIGNhc2UgaW5zZW5zaXRpdmUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmcgVGhlIGxhbmd1YWdlIGtleS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGFkZEF0dHJpYnV0ZSgnc3R5bGUnLCAnY3NzJyk7XG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIChhdHRyTmFtZSwgbGFuZykge1xuICAgICAgUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cC50YWcuaW5zaWRlWydzcGVjaWFsLWF0dHInXS5wdXNoKHtcbiAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgIC8oXnxbXCInXFxzXSkvLnNvdXJjZSArXG4gICAgICAgICAgICAnKD86JyArXG4gICAgICAgICAgICBhdHRyTmFtZSArXG4gICAgICAgICAgICAnKScgK1xuICAgICAgICAgICAgL1xccyo9XFxzKig/OlwiW15cIl0qXCJ8J1teJ10qJ3xbXlxccydcIj49XSsoPz1bXFxzPl0pKS8uc291cmNlLFxuICAgICAgICAgICdpJ1xuICAgICAgICApLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAnYXR0ci1uYW1lJzogL15bXlxccz1dKy8sXG4gICAgICAgICAgJ2F0dHItdmFsdWUnOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvPVtcXHNcXFNdKy8sXG4gICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF49XFxzKihbXCInXXwoPyFbXCInXSkpKVxcU1tcXHNcXFNdKig/PVxcMiQpLyxcbiAgICAgICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFsaWFzOiBbbGFuZywgJ2xhbmd1YWdlLScgKyBsYW5nXSxcbiAgICAgICAgICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlc1tsYW5nXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwdW5jdHVhdGlvbjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHBhdHRlcm46IC9ePS8sXG4gICAgICAgICAgICAgICAgICBhbGlhczogJ2F0dHItZXF1YWxzJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgL1wifCcvXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICBQcmlzbS5sYW5ndWFnZXMuaHRtbCA9IFByaXNtLmxhbmd1YWdlcy5tYXJrdXBcbiAgUHJpc20ubGFuZ3VhZ2VzLm1hdGhtbCA9IFByaXNtLmxhbmd1YWdlcy5tYXJrdXBcbiAgUHJpc20ubGFuZ3VhZ2VzLnN2ZyA9IFByaXNtLmxhbmd1YWdlcy5tYXJrdXBcbiAgUHJpc20ubGFuZ3VhZ2VzLnhtbCA9IFByaXNtLmxhbmd1YWdlcy5leHRlbmQoJ21hcmt1cCcsIHt9KVxuICBQcmlzbS5sYW5ndWFnZXMuc3NtbCA9IFByaXNtLmxhbmd1YWdlcy54bWxcbiAgUHJpc20ubGFuZ3VhZ2VzLmF0b20gPSBQcmlzbS5sYW5ndWFnZXMueG1sXG4gIFByaXNtLmxhbmd1YWdlcy5yc3MgPSBQcmlzbS5sYW5ndWFnZXMueG1sXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjc3NcbmNzcy5kaXNwbGF5TmFtZSA9ICdjc3MnXG5jc3MuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBjc3MoUHJpc20pIHtcbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICB2YXIgc3RyaW5nID1cbiAgICAgIC8oPzpcIig/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteXCJcXFxcXFxyXFxuXSkqXCJ8Jyg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfFteJ1xcXFxcXHJcXG5dKSonKS9cbiAgICBQcmlzbS5sYW5ndWFnZXMuY3NzID0ge1xuICAgICAgY29tbWVudDogL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vLFxuICAgICAgYXRydWxlOiB7XG4gICAgICAgIHBhdHRlcm46IC9AW1xcdy1dKD86W147e1xcc118XFxzKyg/IVtcXHN7XSkpKig/Ojt8KD89XFxzKlxceykpLyxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgcnVsZTogL15AW1xcdy1dKy8sXG4gICAgICAgICAgJ3NlbGVjdG9yLWZ1bmN0aW9uLWFyZ3VtZW50Jzoge1xuICAgICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgICAgLyhcXGJzZWxlY3RvclxccypcXChcXHMqKD8hW1xccyldKSkoPzpbXigpXFxzXXxcXHMrKD8hW1xccyldKXxcXCgoPzpbXigpXXxcXChbXigpXSpcXCkpKlxcKSkrKD89XFxzKlxcKSkvLFxuICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICAgIGFsaWFzOiAnc2VsZWN0b3InXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXl3b3JkOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvKF58W15cXHctXSkoPzphbmR8bm90fG9ubHl8b3IpKD8hW1xcdy1dKS8sXG4gICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgICAgfSAvLyBTZWUgcmVzdCBiZWxvd1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXJsOiB7XG4gICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcbiAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgICdcXFxcYnVybFxcXFwoKD86JyArXG4gICAgICAgICAgICBzdHJpbmcuc291cmNlICtcbiAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAvKD86W15cXFxcXFxyXFxuKClcIiddfFxcXFxbXFxzXFxTXSkqLy5zb3VyY2UgK1xuICAgICAgICAgICAgJylcXFxcKScsXG4gICAgICAgICAgJ2knXG4gICAgICAgICksXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgZnVuY3Rpb246IC9edXJsL2ksXG4gICAgICAgICAgcHVuY3R1YXRpb246IC9eXFwofFxcKSQvLFxuICAgICAgICAgIHN0cmluZzoge1xuICAgICAgICAgICAgcGF0dGVybjogUmVnRXhwKCdeJyArIHN0cmluZy5zb3VyY2UgKyAnJCcpLFxuICAgICAgICAgICAgYWxpYXM6ICd1cmwnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2VsZWN0b3I6IHtcbiAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgICcoXnxbe31cXFxcc10pW157fVxcXFxzXSg/Oltee307XCJcXCdcXFxcc118XFxcXHMrKD8hW1xcXFxze10pfCcgK1xuICAgICAgICAgICAgc3RyaW5nLnNvdXJjZSArXG4gICAgICAgICAgICAnKSooPz1cXFxccypcXFxceyknXG4gICAgICAgICksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICBzdHJpbmc6IHtcbiAgICAgICAgcGF0dGVybjogc3RyaW5nLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH0sXG4gICAgICBwcm9wZXJ0eToge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC8oXnxbXi1cXHdcXHhBMC1cXHVGRkZGXSkoPyFcXHMpWy1fYS16XFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWy1cXHdcXHhBMC1cXHVGRkZGXSkqKD89XFxzKjopL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICBpbXBvcnRhbnQ6IC8haW1wb3J0YW50XFxiL2ksXG4gICAgICBmdW5jdGlvbjoge1xuICAgICAgICBwYXR0ZXJuOiAvKF58W14tYS16MC05XSlbLWEtejAtOV0rKD89XFwoKS9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgcHVuY3R1YXRpb246IC9bKCl7fTs6LF0vXG4gICAgfVxuICAgIFByaXNtLmxhbmd1YWdlcy5jc3NbJ2F0cnVsZSddLmluc2lkZS5yZXN0ID0gUHJpc20ubGFuZ3VhZ2VzLmNzc1xuICAgIHZhciBtYXJrdXAgPSBQcmlzbS5sYW5ndWFnZXMubWFya3VwXG4gICAgaWYgKG1hcmt1cCkge1xuICAgICAgbWFya3VwLnRhZy5hZGRJbmxpbmVkKCdzdHlsZScsICdjc3MnKVxuICAgICAgbWFya3VwLnRhZy5hZGRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NzcycpXG4gICAgfVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsaWtlXG5jbGlrZS5kaXNwbGF5TmFtZSA9ICdjbGlrZSdcbmNsaWtlLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gY2xpa2UoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmNsaWtlID0ge1xuICAgIGNvbW1lbnQ6IFtcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qPyg/OlxcKlxcL3wkKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLyhefFteXFxcXDpdKVxcL1xcLy4qLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9XG4gICAgXSxcbiAgICBzdHJpbmc6IHtcbiAgICAgIHBhdHRlcm46IC8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgICdjbGFzcy1uYW1lJzoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyhcXGIoPzpjbGFzc3xleHRlbmRzfGltcGxlbWVudHN8aW5zdGFuY2VvZnxpbnRlcmZhY2V8bmV3fHRyYWl0KVxccyt8XFxiY2F0Y2hcXHMrXFwoKVtcXHcuXFxcXF0rL2ksXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIHB1bmN0dWF0aW9uOiAvWy5cXFxcXS9cbiAgICAgIH1cbiAgICB9LFxuICAgIGtleXdvcmQ6XG4gICAgICAvXFxiKD86YnJlYWt8Y2F0Y2h8Y29udGludWV8ZG98ZWxzZXxmaW5hbGx5fGZvcnxmdW5jdGlvbnxpZnxpbnxpbnN0YW5jZW9mfG5ld3xudWxsfHJldHVybnx0aHJvd3x0cnl8d2hpbGUpXFxiLyxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvLFxuICAgIGZ1bmN0aW9uOiAvXFxiXFx3Kyg/PVxcKCkvLFxuICAgIG51bWJlcjogL1xcYjB4W1xcZGEtZl0rXFxifCg/OlxcYlxcZCsoPzpcXC5cXGQqKT98XFxCXFwuXFxkKykoPzplWystXT9cXGQrKT8vaSxcbiAgICBvcGVyYXRvcjogL1s8Pl09P3xbIT1dPT89P3wtLT98XFwrXFwrP3wmJj98XFx8XFx8P3xbPyovfl4lXS8sXG4gICAgcHVuY3R1YXRpb246IC9be31bXFxdOygpLC46XS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gamF2YXNjcmlwdFxuamF2YXNjcmlwdC5kaXNwbGF5TmFtZSA9ICdqYXZhc2NyaXB0J1xuamF2YXNjcmlwdC5hbGlhc2VzID0gWydqcyddXG5mdW5jdGlvbiBqYXZhc2NyaXB0KFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0ID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnY2xpa2UnLCB7XG4gICAgJ2NsYXNzLW5hbWUnOiBbXG4gICAgICBQcmlzbS5sYW5ndWFnZXMuY2xpa2VbJ2NsYXNzLW5hbWUnXSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvKF58W14kXFx3XFx4QTAtXFx1RkZGRl0pKD8hXFxzKVtfJEEtWlxceEEwLVxcdUZGRkZdKD86KD8hXFxzKVskXFx3XFx4QTAtXFx1RkZGRl0pKig/PVxcLig/OmNvbnN0cnVjdG9yfHByb3RvdHlwZSkpLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAga2V5d29yZDogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKCg/Ol58XFx9KVxccyopY2F0Y2hcXGIvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC8oXnxbXi5dfFxcLlxcLlxcLlxccyopXFxiKD86YXN8YXNzZXJ0KD89XFxzKlxceyl8YXN5bmMoPz1cXHMqKD86ZnVuY3Rpb25cXGJ8XFwofFskXFx3XFx4QTAtXFx1RkZGRl18JCkpfGF3YWl0fGJyZWFrfGNhc2V8Y2xhc3N8Y29uc3R8Y29udGludWV8ZGVidWdnZXJ8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxlbnVtfGV4cG9ydHxleHRlbmRzfGZpbmFsbHkoPz1cXHMqKD86XFx7fCQpKXxmb3J8ZnJvbSg/PVxccyooPzpbJ1wiXXwkKSl8ZnVuY3Rpb258KD86Z2V0fHNldCkoPz1cXHMqKD86WyNcXFskXFx3XFx4QTAtXFx1RkZGRl18JCkpfGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGluc3RhbmNlb2Z8aW50ZXJmYWNlfGxldHxuZXd8bnVsbHxvZnxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c3RhdGljfHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyeXx0eXBlb2Z8dW5kZWZpbmVkfHZhcnx2b2lkfHdoaWxlfHdpdGh8eWllbGQpXFxiLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgLy8gQWxsb3cgZm9yIGFsbCBub24tQVNDSUkgY2hhcmFjdGVycyAoU2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIwMDg0NDQpXG4gICAgZnVuY3Rpb246XG4gICAgICAvIz8oPyFcXHMpW18kYS16QS1aXFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWyRcXHdcXHhBMC1cXHVGRkZGXSkqKD89XFxzKig/OlxcLlxccyooPzphcHBseXxiaW5kfGNhbGwpXFxzKik/XFwoKS8sXG4gICAgbnVtYmVyOiB7XG4gICAgICBwYXR0ZXJuOiBSZWdFeHAoXG4gICAgICAgIC8oXnxbXlxcdyRdKS8uc291cmNlICtcbiAgICAgICAgICAnKD86JyArIC8vIGNvbnN0YW50XG4gICAgICAgICAgKC9OYU58SW5maW5pdHkvLnNvdXJjZSArXG4gICAgICAgICAgICAnfCcgKyAvLyBiaW5hcnkgaW50ZWdlclxuICAgICAgICAgICAgLzBbYkJdWzAxXSsoPzpfWzAxXSspKm4/Ly5zb3VyY2UgK1xuICAgICAgICAgICAgJ3wnICsgLy8gb2N0YWwgaW50ZWdlclxuICAgICAgICAgICAgLzBbb09dWzAtN10rKD86X1swLTddKykqbj8vLnNvdXJjZSArXG4gICAgICAgICAgICAnfCcgKyAvLyBoZXhhZGVjaW1hbCBpbnRlZ2VyXG4gICAgICAgICAgICAvMFt4WF1bXFxkQS1GYS1mXSsoPzpfW1xcZEEtRmEtZl0rKSpuPy8uc291cmNlICtcbiAgICAgICAgICAgICd8JyArIC8vIGRlY2ltYWwgYmlnaW50XG4gICAgICAgICAgICAvXFxkKyg/Ol9cXGQrKSpuLy5zb3VyY2UgK1xuICAgICAgICAgICAgJ3wnICsgLy8gZGVjaW1hbCBudW1iZXIgKGludGVnZXIgb3IgZmxvYXQpIGJ1dCBubyBiaWdpbnRcbiAgICAgICAgICAgIC8oPzpcXGQrKD86X1xcZCspKig/OlxcLig/OlxcZCsoPzpfXFxkKykqKT8pP3xcXC5cXGQrKD86X1xcZCspKikoPzpbRWVdWystXT9cXGQrKD86X1xcZCspKik/L1xuICAgICAgICAgICAgICAuc291cmNlKSArXG4gICAgICAgICAgJyknICtcbiAgICAgICAgICAvKD8hW1xcdyRdKS8uc291cmNlXG4gICAgICApLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH0sXG4gICAgb3BlcmF0b3I6XG4gICAgICAvLS18XFwrXFwrfFxcKlxcKj0/fD0+fCYmPT98XFx8XFx8PT98WyE9XT09fDw8PT98Pj4+Pz0/fFstKyovJSZ8XiE9PD5dPT98XFwuezN9fFxcP1xcPz0/fFxcP1xcLj98W346XS9cbiAgfSlcbiAgUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRbJ2NsYXNzLW5hbWUnXVswXS5wYXR0ZXJuID1cbiAgICAvKFxcYig/OmNsYXNzfGV4dGVuZHN8aW1wbGVtZW50c3xpbnN0YW5jZW9mfGludGVyZmFjZXxuZXcpXFxzKylbXFx3LlxcXFxdKy9cbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnamF2YXNjcmlwdCcsICdrZXl3b3JkJywge1xuICAgIHJlZ2V4OiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWR1cGUtY2hhcmFjdGVycy1jaGFyYWN0ZXItY2xhc3NcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oKD86XnxbXiRcXHdcXHhBMC1cXHVGRkZGLlwiJ1xcXSlcXHNdfFxcYig/OnJldHVybnx5aWVsZCkpXFxzKilcXC8oPzpcXFsoPzpbXlxcXVxcXFxcXHJcXG5dfFxcXFwuKSpcXF18XFxcXC58W14vXFxcXFxcW1xcclxcbl0pK1xcL1tkZ2lteXVzXXswLDd9KD89KD86XFxzfFxcL1xcKig/OlteKl18XFwqKD8hXFwvKSkqXFwqXFwvKSooPzokfFtcXHJcXG4sLjs6fSlcXF1dfFxcL1xcLykpLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgJ3JlZ2V4LXNvdXJjZSc6IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvXihcXC8pW1xcc1xcU10rKD89XFwvW2Etel0qJCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICdsYW5ndWFnZS1yZWdleCcsXG4gICAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMucmVnZXhcbiAgICAgICAgfSxcbiAgICAgICAgJ3JlZ2V4LWRlbGltaXRlcic6IC9eXFwvfFxcLyQvLFxuICAgICAgICAncmVnZXgtZmxhZ3MnOiAvXlthLXpdKyQvXG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIGtleXdvcmQgYmVjYXVzZSB3ZSB1c2UgXCJmdW5jdGlvblwiIGluc2lkZSB0aGUgbG9vay1mb3J3YXJkXG4gICAgJ2Z1bmN0aW9uLXZhcmlhYmxlJzoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyM/KD8hXFxzKVtfJGEtekEtWlxceEEwLVxcdUZGRkZdKD86KD8hXFxzKVskXFx3XFx4QTAtXFx1RkZGRl0pKig/PVxccypbPTpdXFxzKig/OmFzeW5jXFxzKik/KD86XFxiZnVuY3Rpb25cXGJ8KD86XFwoKD86W14oKV18XFwoW14oKV0qXFwpKSpcXCl8KD8hXFxzKVtfJGEtekEtWlxceEEwLVxcdUZGRkZdKD86KD8hXFxzKVskXFx3XFx4QTAtXFx1RkZGRl0pKilcXHMqPT4pKS8sXG4gICAgICBhbGlhczogJ2Z1bmN0aW9uJ1xuICAgIH0sXG4gICAgcGFyYW1ldGVyOiBbXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhmdW5jdGlvbig/OlxccysoPyFcXHMpW18kYS16QS1aXFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWyRcXHdcXHhBMC1cXHVGRkZGXSkqKT9cXHMqXFwoXFxzKikoPyFcXHMpKD86W14oKVxcc118XFxzKyg/IVtcXHMpXSl8XFwoW14oKV0qXFwpKSsoPz1cXHMqXFwpKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFteJFxcd1xceEEwLVxcdUZGRkZdKSg/IVxccylbXyRhLXpcXHhBMC1cXHVGRkZGXSg/Oig/IVxccylbJFxcd1xceEEwLVxcdUZGRkZdKSooPz1cXHMqPT4pL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhcXChcXHMqKSg/IVxccykoPzpbXigpXFxzXXxcXHMrKD8hW1xccyldKXxcXChbXigpXSpcXCkpKyg/PVxccypcXClcXHMqPT4pLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvKCg/OlxcYnxcXHN8XikoPyEoPzphc3xhc3luY3xhd2FpdHxicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZW5kc3xmaW5hbGx5fGZvcnxmcm9tfGZ1bmN0aW9ufGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbnN0YW5jZW9mfGludGVyZmFjZXxsZXR8bmV3fG51bGx8b2Z8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHNldHxzdGF0aWN8c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ5fHR5cGVvZnx1bmRlZmluZWR8dmFyfHZvaWR8d2hpbGV8d2l0aHx5aWVsZCkoPyFbJFxcd1xceEEwLVxcdUZGRkZdKSkoPzooPyFcXHMpW18kYS16QS1aXFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWyRcXHdcXHhBMC1cXHVGRkZGXSkqXFxzKilcXChcXHMqfFxcXVxccypcXChcXHMqKSg/IVxccykoPzpbXigpXFxzXXxcXHMrKD8hW1xccyldKXxcXChbXigpXSpcXCkpKyg/PVxccypcXClcXHMqXFx7KS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRcbiAgICAgIH1cbiAgICBdLFxuICAgIGNvbnN0YW50OiAvXFxiW0EtWl0oPzpbQS1aX118XFxkeD8pKlxcYi9cbiAgfSlcbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnamF2YXNjcmlwdCcsICdzdHJpbmcnLCB7XG4gICAgaGFzaGJhbmc6IHtcbiAgICAgIHBhdHRlcm46IC9eIyEuKi8sXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBhbGlhczogJ2NvbW1lbnQnXG4gICAgfSxcbiAgICAndGVtcGxhdGUtc3RyaW5nJzoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgL2AoPzpcXFxcW1xcc1xcU118XFwkXFx7KD86W157fV18XFx7KD86W157fV18XFx7W159XSpcXH0pKlxcfSkrXFx9fCg/IVxcJFxceylbXlxcXFxgXSkqYC8sXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgJ3RlbXBsYXRlLXB1bmN0dWF0aW9uJzoge1xuICAgICAgICAgIHBhdHRlcm46IC9eYHxgJC8sXG4gICAgICAgICAgYWxpYXM6ICdzdHJpbmcnXG4gICAgICAgIH0sXG4gICAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgICAgLygoPzpefFteXFxcXF0pKD86XFxcXHsyfSkqKVxcJFxceyg/Oltee31dfFxceyg/Oltee31dfFxce1tefV0qXFx9KSpcXH0pK1xcfS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICdpbnRlcnBvbGF0aW9uLXB1bmN0dWF0aW9uJzoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvXlxcJFxce3xcXH0kLyxcbiAgICAgICAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXN0OiBQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3RyaW5nOiAvW1xcc1xcU10rL1xuICAgICAgfVxuICAgIH0sXG4gICAgJ3N0cmluZy1wcm9wZXJ0eSc6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oKD86XnxbLHtdKVsgXFx0XSopKFtcIiddKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMilbXlxcXFxcXHJcXG5dKSpcXDIoPz1cXHMqOikvbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBhbGlhczogJ3Byb3BlcnR5J1xuICAgIH1cbiAgfSlcbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnamF2YXNjcmlwdCcsICdvcGVyYXRvcicsIHtcbiAgICAnbGl0ZXJhbC1wcm9wZXJ0eSc6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oKD86XnxbLHtdKVsgXFx0XSopKD8hXFxzKVtfJGEtekEtWlxceEEwLVxcdUZGRkZdKD86KD8hXFxzKVskXFx3XFx4QTAtXFx1RkZGRl0pKig/PVxccyo6KS9tLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAncHJvcGVydHknXG4gICAgfVxuICB9KVxuICBpZiAoUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cCkge1xuICAgIFByaXNtLmxhbmd1YWdlcy5tYXJrdXAudGFnLmFkZElubGluZWQoJ3NjcmlwdCcsICdqYXZhc2NyaXB0JykgLy8gYWRkIGF0dHJpYnV0ZSBzdXBwb3J0IGZvciBhbGwgRE9NIGV2ZW50cy5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMjU3RhbmRhcmRfZXZlbnRzXG4gICAgUHJpc20ubGFuZ3VhZ2VzLm1hcmt1cC50YWcuYWRkQXR0cmlidXRlKFxuICAgICAgL29uKD86YWJvcnR8Ymx1cnxjaGFuZ2V8Y2xpY2t8Y29tcG9zaXRpb24oPzplbmR8c3RhcnR8dXBkYXRlKXxkYmxjbGlja3xlcnJvcnxmb2N1cyg/OmlufG91dCk/fGtleSg/OmRvd258dXApfGxvYWR8bW91c2UoPzpkb3dufGVudGVyfGxlYXZlfG1vdmV8b3V0fG92ZXJ8dXApfHJlc2V0fHJlc2l6ZXxzY3JvbGx8c2VsZWN0fHNsb3RjaGFuZ2V8c3VibWl0fHVubG9hZHx3aGVlbCkvXG4gICAgICAgIC5zb3VyY2UsXG4gICAgICAnamF2YXNjcmlwdCdcbiAgICApXG4gIH1cbiAgUHJpc20ubGFuZ3VhZ2VzLmpzID0gUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFiYXBcbmFiYXAuZGlzcGxheU5hbWUgPSAnYWJhcCdcbmFiYXAuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBhYmFwKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5hYmFwID0ge1xuICAgIGNvbW1lbnQ6IC9eXFwqLiovbSxcbiAgICBzdHJpbmc6IC8oYHwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLFxuICAgICdzdHJpbmctdGVtcGxhdGUnOiB7XG4gICAgICBwYXR0ZXJuOiAvKFt8fV0pKD86XFxcXC58W15cXFxcfHtcXHJcXG5dKSooPz1bfHtdKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgYWxpYXM6ICdzdHJpbmcnXG4gICAgfSxcbiAgICAvKiBFbmQgT2YgTGluZSBjb21tZW50cyBzaG91bGQgbm90IGludGVyZmVyZSB3aXRoIHN0cmluZ3Mgd2hlbiB0aGVcbnF1b3RlIGNoYXJhY3RlciBvY2N1cnMgd2l0aGluIHRoZW0uIFdlIGFzc3VtZSBhIHN0cmluZyBiZWluZyBoaWdobGlnaHRlZFxuaW5zaWRlIGFuIEVPTCBjb21tZW50IGlzIG1vcmUgYWNjZXB0YWJsZSB0aGFuIHRoZSBvcHBvc2l0ZS5cbiovXG4gICAgJ2VvbC1jb21tZW50Jzoge1xuICAgICAgcGF0dGVybjogLyhefFxccylcIi4qL20sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgYWxpYXM6ICdjb21tZW50J1xuICAgIH0sXG4gICAga2V5d29yZDoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyhcXHN8XFwufF4pKD86U0NJRU5USUZJQ19XSVRIX0xFQURJTkdfWkVST3xTQ0FMRV9QUkVTRVJWSU5HX1NDSUVOVElGSUN8Uk1DX0NPTU1VTklDQVRJT05fRkFJTFVSRXxFTkQtRU5IQU5DRU1FTlQtU0VDVElPTnxNVUxUSVBMWS1DT1JSRVNQT05ESU5HfFNVQlRSQUNULUNPUlJFU1BPTkRJTkd8VkVSSUZJQ0FUSU9OLU1FU1NBR0V8RElWSURFLUNPUlJFU1BPTkRJTkd8RU5IQU5DRU1FTlQtU0VDVElPTnxDVVJSRU5DWV9DT05WRVJTSU9OfFJNQ19TWVNURU1fRkFJTFVSRXxTVEFSVC1PRi1TRUxFQ1RJT058TU9WRS1DT1JSRVNQT05ESU5HfFJNQ19JTlZBTElEX1NUQVRVU3xDVVNUT01FUi1GVU5DVElPTnxFTkQtT0YtREVGSU5JVElPTnxFTkhBTkNFTUVOVC1QT0lOVHxTWVNURU0tRVhDRVBUSU9OU3xBREQtQ09SUkVTUE9ORElOR3xTQ0FMRV9QUkVTRVJWSU5HfFNFTEVDVElPTi1TQ1JFRU58Q1VSU09SLVNFTEVDVElPTnxFTkQtT0YtU0VMRUNUSU9OfExPQUQtT0YtUFJPR1JBTXxTQ1JPTEwtQk9VTkRBUll8U0VMRUNUSU9OLVRBQkxFfEVYQ0VQVElPTi1UQUJMRXxJTVBMRU1FTlRBVElPTlN8UEFSQU1FVEVSLVRBQkxFfFJJR0hULUpVU1RJRklFRHxVTklUX0NPTlZFUlNJT058QVVUSE9SSVRZLUNIRUNLfExJU1QtUFJPQ0VTU0lOR3xTSUdOX0FTX1BPU1RGSVh8Q09MX0JBQ0tHUk9VTkR8SU1QTEVNRU5UQVRJT058SU5URVJGQUNFLVBPT0x8VFJBTlNGT1JNQVRJT058SURFTlRJRklDQVRJT058RU5ERU5IQU5DRU1FTlR8TElORS1TRUxFQ1RJT058SU5JVElBTElaQVRJT058TEVGVC1KVVNUSUZJRUR8U0VMRUNULU9QVElPTlN8U0VMRUNUSU9OLVNFVFN8Q09NTVVOSUNBVElPTnxDT1JSRVNQT05ESU5HfERFQ0lNQUxfU0hJRlR8UFJJTlQtQ09OVFJPTHxWQUxVRS1SRVFVRVNUfENIQUlOLVJFUVVFU1R8RlVOQ1RJT04tUE9PTHxGSUVMRC1TWU1CT0xTfEZVTkNUSU9OQUxJVFl8SU5WRVJURUQtREFURXxTRUxFQ1RJT04tU0VUfENMQVNTLU1FVEhPRFN8T1VUUFVULUxFTkdUSHxDTEFTUy1DT0RJTkd8Q09MX05FR0FUSVZFfEVSUk9STUVTU0FHRXxGSUVMRC1HUk9VUFN8SEVMUC1SRVFVRVNUfE5PLUVYVEVOU0lPTnxOTy1UT1BPRlBBR0V8UkVERUZJTklUSU9OfERJU1BMQVktTU9ERXxFTkRJTlRFUkZBQ0V8RVhJVC1DT01NQU5EfEZJRUxELVNZTUJPTHxOTy1TQ1JPTExJTkd8U0hPUlREVU1QLUlEfEFDQ0VTU1BPTElDWXxDTEFTUy1FVkVOVFN8Q09MX1BPU0lUSVZFfERFQ0xBUkFUSU9OU3xFTkhBTkNFTUVOVFN8RklMVEVSLVRBQkxFfFNXSVRDSFNUQVRFU3xTWU5UQVgtQ0hFQ0t8VFJBTlNQT1JUSU5HfEFTWU5DSFJPTk9VU3xTWU5UQVgtVFJBQ0V8VE9LRU5JWkFUSU9OfFVTRVItQ09NTUFORHxXSVRILUhFQURJTkd8QUJBUC1TT1VSQ0V8QlJFQUstUE9JTlR8Q0hBSU4tSU5QVVR8Q09NUFJFU1NJT058RklYRUQtUE9JTlR8TkVXLVNFQ1RJT058Tk9OLVVOSUNPREV8T0NDVVJSRU5DRVN8UkVTUE9OU0lCTEV8U1lTVEVNLUNBTEx8VFJBQ0UtVEFCTEV8QUJCUkVWSUFURUR8Q0hBUi1UTy1IRVh8RU5ELU9GLUZJTEV8RU5ERlVOQ1RJT058RU5WSVJPTk1FTlR8QVNTT0NJQVRJT058Q09MX0hFQURJTkd8RURJVE9SLUNBTEx8RU5ELU9GLVBBR0V8RU5HSU5FRVJJTkd8SU1QTEVNRU5URUR8SU5URU5TSUZJRUR8UkFESU9CVVRUT058U1lTVEVNLUVYSVR8VE9QLU9GLVBBR0V8VFJBTlNBQ1RJT058QVBQTElDQVRJT058Q09OQ0FURU5BVEV8REVTVElOQVRJT058RU5IQU5DRU1FTlR8SU1NRURJQVRFTFl8Tk8tR1JPVVBJTkd8UFJFQ09NUElMRUR8UkVQTEFDRU1FTlR8VElUTEUtTElORVN8QUNUSVZBVElPTnxCWVRFLU9SREVSfENMQVNTLVBPT0x8Q09OTkVDVElPTnxDT05WRVJTSU9OfERFRklOSVRJT058REVQQVJUTUVOVHxFWFBJUkFUSU9OfElOSEVSSVRJTkd8TUVTU0FHRS1JRHxOTy1IRUFESU5HfFBFUkZPUk1JTkd8UVVFVUUtT05MWXxSSUdIVFNQQUNFfFNDSUVOVElGSUN8U1RBVFVTSU5GT3xTVFJVQ1RVUkVTfFNZTkNQT0lOVFN8V0lUSC1USVRMRXxBVFRSSUJVVEVTfEJPVU5EQVJJRVN8Q0xBU1MtREFUQXxDT0xfTk9STUFMfEREXFwvTU1cXC9ZWVlZfERFU0NFTkRJTkd8SU5URVJGQUNFU3xMSU5FLUNPVU5UfE1NXFwvRERcXC9ZWVlZfE5PTi1VTklRVUV8UFJFU0VSVklOR3xTRUxFQ1RJT05TfFNUQVRFTUVOVFN8U1VCUk9VVElORXxUUlVOQ0FUSU9OfFRZUEUtUE9PTFN8QVJJVEhNRVRJQ3xCQUNLR1JPVU5EfEVORFBST1ZJREV8RVhDRVBUSU9OU3xJREVOVElGSUVSfElOREVYLUxJTkV8T0JMSUdBVE9SWXxQQVJBTUVURVJTfFBFUkNFTlRBR0V8UFVTSEJVVFRPTnxSRVNPTFVUSU9OfENPTVBPTkVOVFN8REVBTExPQ0FURXxESVNDT05ORUNUfERVUExJQ0FURVN8RklSU1QtTElORXxIRUFELUxJTkVTfE5PLURJU1BMQVl8T0NDVVJSRU5DRXxSRVNQRUNUSU5HfFJFVFVSTkNPREV8U1VCTUFUQ0hFU3xUUkFDRS1GSUxFfEFTQ0VORElOR3xCWVBBU1NJTkd8RU5ETU9EVUxFfEVYQ0VQVElPTnxFWENMVURJTkd8RVhQT1JUSU5HfElOQ1JFTUVOVHxNQVRDSENPREV8UEFSQU1FVEVSfFBBUlRJQUxMWXxQUkVGRVJSRUR8UkVGRVJFTkNFfFJFUExBQ0lOR3xSRVRVUk5JTkd8U0VMRUNUSU9OfFNFUEFSQVRFRHxTUEVDSUZJRUR8U1RBVEVNRU5UfFRJTUVTVEFNUHxUWVBFLVBPT0x8QUNDRVBUSU5HfEFQUEVOREFHRXxBU1NJR05JTkd8Q09MX0dST1VQfENPTVBBUklOR3xDT05TVEFOVFN8REFOR0VST1VTfElNUE9SVElOR3xJTlNUQU5DRVN8TEVGVFNQQUNFfExPRy1QT0lOVHxRVUlDS0lORk98UkVBRC1PTkxZfFNDUk9MTElOR3xTUUxTQ1JJUFR8U1RFUC1MT09QfFRPUC1MSU5FU3xUUkFOU0xBVEV8QVBQRU5ESU5HfEFVVEhPUklUWXxDSEFSQUNURVJ8Q09NUE9ORU5UfENPTkRJVElPTnxESVJFQ1RPUll8RFVQTElDQVRFfE1FU1NBR0lOR3xSRUNFSVZJTkd8U1VCU0NSRUVOfEFDQ09SRElOR3xDT0xfVE9UQUx8RU5ELUxJTkVTfEVORE1FVEhPRHxFTkRTRUxFQ1R8RVhQQU5ESU5HfEVYVEVOU0lPTnxJTkNMVURJTkd8SU5GT1RZUEVTfElOVEVSRkFDRXxJTlRFUlZBTFN8TElORS1TSVpFfFBGLVNUQVRVU3xQUk9DRURVUkV8UFJPVEVDVEVEfFJFUVVFU1RFRHxSRVNVTUFCTEV8UklHSFRQTFVTfFNBUC1TUE9PTHxTRUNPTkRBUll8U1RSVUNUVVJFfFNVQlNUUklOR3xUQUJMRVZJRVd8TlVNT0ZDSEFSfEFESkFDRU5UfEFOQUxZU0lTfEFTU0lHTkVEfEJBQ0tXQVJEfENIQU5ORUxTfENIRUNLQk9YfENPTlRJTlVFfENSSVRJQ0FMfERBVEFJTkZPfEREXFwvTU1cXC9ZWXxEVVJBVElPTnxFTkNPRElOR3xFTkRDTEFTU3xGVU5DVElPTnxMRUZUUExVU3xMSU5FRkVFRHxNTVxcL0REXFwvWVl8T1ZFUkZMT1d8UkVDRUlWRUR8U0tJUFBJTkd8U09SVEFCTEV8U1RBTkRBUkR8U1VCVFJBQ1R8U1VQUFJFU1N8VEFCU1RSSVB8VElUTEVCQVJ8VFJVTkNBVEV8VU5BU1NJR058V0hFTkVWRVJ8QU5BTFlaRVJ8Q09BTEVTQ0V8Q09NTUVOVFN8Q09OREVOU0V8REVDSU1BTFN8REVGRVJSRUR8RU5EV0hJTEV8RVhQTElDSVR8S0VZV09SRFN8TUVTU0FHRVN8UE9TSVRJT058UFJJT1JJVFl8UkVDRUlWRVJ8UkVOQU1JTkd8VElNRVpPTkV8VFJBSUxJTkd8QUxMT0NBVEV8Q0VOVEVSRUR8Q0lSQ1VMQVJ8Q09OVFJPTFN8Q1VSUkVOQ1l8REVMRVRJTkd8REVTQ1JJQkV8RElTVEFOQ0V8RU5EQ0FUQ0h8RVhQT05FTlR8RVhURU5ERUR8R0VORVJBVEV8SUdOT1JJTkd8SU5DTFVERVN8SU5URVJOQUx8TUFKT1ItSUR8TU9ESUZJRVJ8TkVXLUxJTkV8T1BUSU9OQUx8UFJPUEVSVFl8Uk9MTEJBQ0t8U1RBUlRJTkd8U1VQUExJRUR8QUJTVFJBQ1R8Q0hBTkdJTkd8Q09OVEVYVFN8Q1JFQVRJTkd8Q1VTVE9NRVJ8REFUQUJBU0V8REFZTElHSFR8REVGSU5JTkd8RElTVElOQ1R8RElWSVNJT058RU5BQkxJTkd8RU5EQ0hBSU58RVNDQVBJTkd8SEFSTUxFU1N8SU1QTElDSVR8SU5BQ1RJVkV8TEFOR1VBR0V8TUlOT1ItSUR8TVVMVElQTFl8TkVXLVBBR0V8Tk8tVElUTEV8UE9TX0hJR0h8U0VQQVJBVEV8VEVYVFBPT0x8VFJBTlNGRVJ8U0VMRUNUT1J8REJNQVhMRU58SVRFUkFUT1J8QVJDSElWRXxCSVQtWE9SfEJZVEUtQ098Q09MTEVDVHxDT01NRU5UfENVUlJFTlR8REVGQVVMVHxESVNQTEFZfEVOREZPUk18RVhUUkFDVHxMRUFESU5HfExJU1RCT1h8TE9DQVRPUnxNRU1CRVJTfE1FVEhPRFN8TkVTVElOR3xQT1NfTE9XfFBST0NFU1N8UFJPVklERXxSQUlTSU5HfFJFU0VSVkV8U0VDT05EU3xTVU1NQVJZfFZJU0lCTEV8QkVUV0VFTnxCSVQtQU5EfEJZVEUtQ1N8Q0xFQU5VUHxDT01QVVRFfENPTlRST0x8Q09OVkVSVHxEQVRBU0VUfEVORENBU0V8Rk9SV0FSRHxIRUFERVJTfEhPVFNQT1R8SU5DTFVERXxJTlZFUlNFfEtFRVBJTkd8Tk8tWkVST3xPQkpFQ1RTfE9WRVJMQVl8UEFERElOR3xQQVRURVJOfFBST0dSQU18UkVGUkVTSHxTRUNUSU9OfFNVTU1JTkd8VEVTVElOR3xWRVJTSU9OfFdJTkRPV1N8V0lUSE9VVHxCSVQtTk9UfEJZVEUtQ0F8QllURS1OQXxDQVNUSU5HfENPTlRFWFR8Q09VTlRSWXxEWU5BTUlDfEVOQUJMRUR8RU5ETE9PUHxFWEVDVVRFfEZSSUVORFN8SEFORExFUnxIRUFESU5HfElOSVRJQUx8XFwqLUlOUFVUfExPR0ZJTEV8TUFYSU1VTXxNSU5JTVVNfE5PLUdBUFN8Tk8tU0lHTnxQUkFHTUFTfFBSSU1BUll8UFJJVkFURXxSRURVQ0VEfFJFUExBQ0V8UkVRVUVTVHxSRVNVTFRTfFVOSUNPREV8V0FSTklOR3xBTElBU0VTfEJZVEUtQ058QllURS1OU3xDQUxMSU5HfENPTF9LRVl8Q09MVU1OU3xDT05ORUNUfEVOREVYRUN8RU5UUklFU3xFWENMVURFfEZJTFRFUlN8RlVSVEhFUnxIRUxQLUlEfExPR0lDQUx8TUFQUElOR3xNRVNTQUdFfE5BTUVUQUJ8T1BUSU9OU3xQQUNLQUdFfFBFUkZPUk18UkVDRUlWRXxTVEFUSUNTfFZBUllJTkd8QklORElOR3xDSEFSTEVOfEdSRUFURVJ8WFNUUkxFTnxBQ0NFUFR8QVBQRU5EfERFVEFJTHxFTFNFSUZ8RU5ESU5HfEVORFRSWXxGT1JNQVR8RlJBTUVTfEdJVklOR3xIQVNIRUR8SEVBREVSfElNUE9SVHxJTlNFUlR8TUFSR0lOfE1PRFVMRXxOQVRJVkV8T0JKRUNUfE9GRlNFVHxSRU1PVEV8UkVTVU1FfFNBVklOR3xTSU1QTEV8U1VCTUlUfFRBQkJFRHxUT0tFTlN8VU5JUVVFfFVOUEFDS3xVUERBVEV8V0lORE9XfFlFTExPV3xBQ1RVQUx8QVNQRUNUfENFTlRFUnxDVVJTT1J8REVMRVRFfERJQUxPR3xESVZJREV8RFVSSU5HfEVSUk9SU3xFVkVOVFN8RVhURU5EfEZJTFRFUnxIQU5ETEV8SEFWSU5HfElHTk9SRXxMSVRUTEV8TUVNT1JZfE5PLUdBUHxPQ0NVUlN8T1BUSU9OfFBFUlNPTnxQTEFDRVN8UFVCTElDfFJFRFVDRXxSRVBPUlR8UkVTVUxUfFNJTkdMRXxTT1JURUR8U1dJVENIfFNZTlRBWHxUQVJHRVR8VkFMVUVTfFdSSVRFUnxBU1NFUlR8QkxPQ0tTfEJPVU5EU3xCVUZGRVJ8Q0hBTkdFfENPTFVNTnxDT01NSVR8Q09OQ0FUfENPUElFU3xDUkVBVEV8RERNTVlZfERFRklORXxFTkRJQU58RVNDQVBFfEVYUEFORHxLRVJORUx8TEFZT1VUfExFR0FDWXxMRVZFTFN8TU1ERFlZfE5VTUJFUnxPVVRQVVR8UkFOR0VTfFJFQURFUnxSRVRVUk58U0NSRUVOfFNFQVJDSHxTRUxFQ1R8U0hBUkVEfFNPVVJDRXxTVEFCTEV8U1RBVElDfFNVQktFWXxTVUZGSVh8VEFCTEVTfFVOV0lORHxZWU1NRER8QVNTSUdOfEJBQ0tVUHxCRUZPUkV8QklOQVJZfEJJVC1PUnxCTEFOS1N8Q0xJRU5UfENPRElOR3xDT01NT058REVNQU5EfERZTlBST3xFWENFUFR8RVhJU1RTfEVYUE9SVHxGSUVMRFN8R0xPQkFMfEdST1VQU3xMRU5HVEh8TE9DQUxFfE1FRElVTXxNRVRIT0R8TU9ESUZZfE5FU1RFRHxPVEhFUlN8UkVKRUNUfFNDUk9MTHxTVVBQTFl8U1lNQk9MfEVOREZPUnxTVFJMRU58QUxJR058QkVHSU58Qk9VTkR8RU5EQVR8RU5UUll8RVZFTlR8RklOQUx8RkxVU0h8R1JBTlR8SU5ORVJ8U0hPUlR8VVNJTkd8V1JJVEV8QUZURVJ8QkxBQ0t8QkxPQ0t8Q0xPQ0t8Q09MT1J8Q09VTlR8RFVNTVl8RU1QVFl8RU5ERE98RU5ET058R1JFRU58SU5ERVh8SU5PVVR8TEVBVkV8TEVWRUx8TElORVN8TU9ESUZ8T1JERVJ8T1VURVJ8UkFOR0V8UkVTRVR8UkVUUll8UklHSFR8U01BUlR8U1BMSVR8U1RZTEV8VEFCTEV8VEhST1d8VU5ERVJ8VU5USUx8VVBQRVJ8VVRGLTh8V0hFUkV8QUxJQVN8QkxBTkt8Q0xFQVJ8Q0xPU0V8RVhBQ1R8RkVUQ0h8RklSU1R8Rk9VTkR8R1JPVVB8TExBTkd8TE9DQUx8T1RIRVJ8UkVHRVh8U1BPT0x8VElUTEV8VFlQRVN8VkFMSUR8V0hJTEV8QUxQSEF8Qk9YRUR8Q0FUQ0h8Q0hBSU58Q0hFQ0t8Q0xBU1N8Q09WRVJ8RU5ESUZ8RVFVSVZ8RklFTER8RkxPT1J8RlJBTUV8SU5QVVR8TE9XRVJ8TUFUQ0h8Tk9ERVN8UEFHRVN8UFJJTlR8UkFJU0V8Uk9VTkR8U0hJRlR8U1BBQ0V8U1BPVFN8U1RBTVB8U1RBVEV8VEFTS1N8VElNRVN8VFJNQUN8VUxJTkV8VU5JT058VkFMVUV8V0lEVEh8RVFVQUx8TE9HMTB8VFJVTkN8QkxPQnxDQVNFfENFSUx8Q0xPQnxDT05EfEVYSVR8RklMRXxHQVBTfEhPTER8SU5DTHxJTlRPfEtFRVB8S0VZU3xMQVNUfExJTkV8TE9OR3xMUEFEfE1BSUx8TU9ERXxPUEVOfFBJTkt8UkVBRHxST1dTfFRFU1R8VEhFTnxaRVJPfEFSRUF8QkFDS3xCQURJfEJZVEV8Q0FTVHxFRElUfEVYRUN8RkFJTHxGSU5EfEZLRVF8Rk9OVHxGUkVFfEdLRVF8SElERXxJTklUfElUTk98TEFURXxMT09QfE1BSU58TUFSS3xNT1ZFfE5FWFR8TlVMTHxSSVNLfFJPTEV8VU5JVHxXQUlUfFpPTkV8QkFTRXxDQUxMfENPREV8REFUQXxEQVRFfEZLR0V8R0tHRXxISUdIfEtJTkR8TEVGVHxMSVNUfE1BU0t8TUVTSHxOQU1FfE5PREV8UEFDS3xQQUdFfFBPT0x8U0VORHxTSUdOfFNJWkV8U09NRXxTVE9QfFRBU0t8VEVYVHxUSU1FfFVTRVJ8VkFSWXxXSVRIfFdPUkR8QkxVRXxDT05WfENPUFl8REVFUHxFTFNFfEZPUk18RlJPTXxISU5UfElDT058Sk9JTnxMSUtFfExPQUR8T05MWXxQQVJUfFNDQU58U0tJUHxTT1JUfFRZUEV8VU5JWHxWSUVXfFdIRU58V09SS3xBQ09TfEFTSU58QVRBTnxDT1NIfEVBQ0h8RlJBQ3xMRVNTfFJUVEl8U0lOSHxTUVJUfFRBTkh8QVZHfEJJVHxESVZ8SVNPfExFVHxPVVR8UEFEfFNRTHxBTEx8Q0lffENQSXxFTkR8TE9CfExQSXxNQVh8TUlOfE5FV3xPTEV8UlVOfFNFVHxcXD9UT3xZRVN8QUJTfEFERHxBTkR8QklHfEZPUnxIREJ8Sk9CfExPV3xOT1R8U0FQfFRSWXxWSUF8WE1MfEFOWXxHRVR8SURTfEtFWXxNT0R8T0ZGfFBVVHxSQVd8UkVEfFJFRnxTVU18VEFCfFhTRHxDTlR8Q09TfEVYUHxMT0d8U0lOfFRBTnxYT1J8QVR8Q098Q1B8RE98R1R8SUR8SUZ8TlN8T1J8QlR8Q0F8Q1N8R0V8TkF8TkJ8RVF8SU58TFR8TkV8Tk98T0Z8T058UEZ8VE98QVN8Qll8Q058SVN8TEV8TlB8VVB8RXxJfE18T3xafEN8WClcXGIvaSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIC8qIE51bWJlcnMgY2FuIGJlIG9ubHkgaW50ZWdlcnMuIERlY2ltYWwgb3IgSGV4IGFwcGVhciBvbmx5IGFzIHN0cmluZ3MgKi9cbiAgICBudW1iZXI6IC9cXGJcXGQrXFxiLyxcbiAgICAvKiBPcGVyYXRvcnMgbXVzdCBhbHdheXMgYmUgc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlLCB0aGV5IGNhbm5vdCBiZSBwdXRcbmFkamFjZW50IHRvIG9wZXJhbmRzLlxuKi9cbiAgICBvcGVyYXRvcjoge1xuICAgICAgcGF0dGVybjogLyhcXHMpKD86XFwqXFwqP3w8Wz0+XT98Pj0/fFxcPz18Wy0rXFwvPV0pKD89XFxzKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICAnc3RyaW5nLW9wZXJhdG9yJzoge1xuICAgICAgcGF0dGVybjogLyhcXHMpJiY/KD89XFxzKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgLyogVGhlIG9mZmljaWFsIGVkaXRvciBoaWdobGlnaHRzICovXG4gICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgfSxcbiAgICAndG9rZW4tb3BlcmF0b3InOiBbXG4gICAgICB7XG4gICAgICAgIC8qIFNwZWNpYWwgb3BlcmF0b3JzIHVzZWQgdG8gYWNjZXNzIHN0cnVjdHVyZSBjb21wb25lbnRzLCBjbGFzcyBtZXRob2RzL2F0dHJpYnV0ZXMsIGV0Yy4gKi9cbiAgICAgICAgcGF0dGVybjogLyhcXHcpKD86LT4/fD0+fFt+fHt9XSkoPz1cXHcpLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8qIFNwZWNpYWwgdG9rZW5zIHVzZWQgZG8gZGVsaW1pdCBzdHJpbmcgdGVtcGxhdGVzICovXG4gICAgICAgIHBhdHRlcm46IC9bfHt9XS8sXG4gICAgICAgIGFsaWFzOiAncHVuY3R1YXRpb24nXG4gICAgICB9XG4gICAgXSxcbiAgICBwdW5jdHVhdGlvbjogL1ssLjooKV0vXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFibmZcbmFibmYuZGlzcGxheU5hbWUgPSAnYWJuZidcbmFibmYuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBhYm5mKFByaXNtKSB7XG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgdmFyIGNvcmVSdWxlcyA9XG4gICAgICAnKD86QUxQSEF8QklUfENIQVJ8Q1J8Q1JMRnxDVEx8RElHSVR8RFFVT1RFfEhFWERJR3xIVEFCfExGfExXU1B8T0NURVR8U1B8VkNIQVJ8V1NQKSdcbiAgICBQcmlzbS5sYW5ndWFnZXMuYWJuZiA9IHtcbiAgICAgIGNvbW1lbnQ6IC87LiovLFxuICAgICAgc3RyaW5nOiB7XG4gICAgICAgIHBhdHRlcm46IC8oPzolW2lzXSk/XCJbXlwiXFxuXFxyXSpcIi8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgcHVuY3R1YXRpb246IC9eJVtpc10vXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByYW5nZToge1xuICAgICAgICBwYXR0ZXJuOiAvJSg/OmJbMDFdKy1bMDFdK3xkXFxkKy1cXGQrfHhbQS1GXFxkXSstW0EtRlxcZF0rKS9pLFxuICAgICAgICBhbGlhczogJ251bWJlcidcbiAgICAgIH0sXG4gICAgICB0ZXJtaW5hbDoge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC8lKD86YlswMV0rKD86XFwuWzAxXSspKnxkXFxkKyg/OlxcLlxcZCspKnx4W0EtRlxcZF0rKD86XFwuW0EtRlxcZF0rKSopL2ksXG4gICAgICAgIGFsaWFzOiAnbnVtYmVyJ1xuICAgICAgfSxcbiAgICAgIHJlcGV0aXRpb246IHtcbiAgICAgICAgcGF0dGVybjogLyhefFteXFx3LV0pKD86XFxkKlxcKlxcZCp8XFxkKykvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ29wZXJhdG9yJ1xuICAgICAgfSxcbiAgICAgIGRlZmluaXRpb246IHtcbiAgICAgICAgcGF0dGVybjogLyheWyBcXHRdKikoPzpbYS16XVtcXHctXSp8PFtePD5cXHJcXG5dKj4pKD89XFxzKj0pL20sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAna2V5d29yZCcsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIHB1bmN0dWF0aW9uOiAvPHw+L1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ2NvcmUtcnVsZSc6IHtcbiAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgICcoPzooXnxbXjxcXFxcdy1dKScgKyBjb3JlUnVsZXMgKyAnfDwnICsgY29yZVJ1bGVzICsgJz4pKD8hW1xcXFx3LV0pJyxcbiAgICAgICAgICAnaSdcbiAgICAgICAgKSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6IFsncnVsZScsICdjb25zdGFudCddLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBwdW5jdHVhdGlvbjogLzx8Pi9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGU6IHtcbiAgICAgICAgcGF0dGVybjogLyhefFtePFxcdy1dKVthLXpdW1xcdy1dKnw8W148Plxcclxcbl0qPi9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBwdW5jdHVhdGlvbjogLzx8Pi9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9wZXJhdG9yOiAvPVxcLz98XFwvLyxcbiAgICAgIHB1bmN0dWF0aW9uOiAvWygpXFxbXFxdXS9cbiAgICB9XG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWN0aW9uc2NyaXB0XG5hY3Rpb25zY3JpcHQuZGlzcGxheU5hbWUgPSAnYWN0aW9uc2NyaXB0J1xuYWN0aW9uc2NyaXB0LmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYWN0aW9uc2NyaXB0KFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5hY3Rpb25zY3JpcHQgPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdqYXZhc2NyaXB0Jywge1xuICAgIGtleXdvcmQ6XG4gICAgICAvXFxiKD86YXN8YnJlYWt8Y2FzZXxjYXRjaHxjbGFzc3xjb25zdHxkZWZhdWx0fGRlbGV0ZXxkb3xkeW5hbWljfGVhY2h8ZWxzZXxleHRlbmRzfGZpbmFsfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGdldHxpZnxpbXBsZW1lbnRzfGltcG9ydHxpbnxpbmNsdWRlfGluc3RhbmNlb2Z8aW50ZXJmYWNlfGludGVybmFsfGlzfG5hbWVzcGFjZXxuYXRpdmV8bmV3fG51bGx8b3ZlcnJpZGV8cGFja2FnZXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0dXJufHNldHxzdGF0aWN8c3VwZXJ8c3dpdGNofHRoaXN8dGhyb3d8dHJ5fHR5cGVvZnx1c2V8dmFyfHZvaWR8d2hpbGV8d2l0aClcXGIvLFxuICAgIG9wZXJhdG9yOiAvXFwrXFwrfC0tfCg/OlsrXFwtKlxcLyVeXXwmJj98XFx8XFx8P3w8PD98Pj4/Pj98WyE9XT0/KT0/fFt+P0BdL1xuICB9KVxuICBQcmlzbS5sYW5ndWFnZXMuYWN0aW9uc2NyaXB0WydjbGFzcy1uYW1lJ10uYWxpYXMgPSAnZnVuY3Rpb24nIC8vIGRvZXNuJ3Qgd29yayB3aXRoIEFTIGJlY2F1c2UgQVMgaXMgdG9vIGNvbXBsZXhcbiAgZGVsZXRlIFByaXNtLmxhbmd1YWdlcy5hY3Rpb25zY3JpcHRbJ3BhcmFtZXRlciddXG4gIGRlbGV0ZSBQcmlzbS5sYW5ndWFnZXMuYWN0aW9uc2NyaXB0WydsaXRlcmFsLXByb3BlcnR5J11cbiAgaWYgKFByaXNtLmxhbmd1YWdlcy5tYXJrdXApIHtcbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdhY3Rpb25zY3JpcHQnLCAnc3RyaW5nJywge1xuICAgICAgeG1sOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFteLl0pPFxcLz9cXHcrKD86XFxzK1teXFxzPlxcLz1dKz0oXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwyKVteXFxcXF0pKlxcMikqXFxzKlxcLz8+LyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMubWFya3VwXG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWRhXG5hZGEuZGlzcGxheU5hbWUgPSAnYWRhJ1xuYWRhLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYWRhKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5hZGEgPSB7XG4gICAgY29tbWVudDogLy0tLiovLFxuICAgIHN0cmluZzogL1wiKD86XCJcInxbXlwiXFxyXFxmXFxuXSkqXCIvLFxuICAgIG51bWJlcjogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC9cXGJcXGQoPzpfP1xcZCkqI1tcXGRBLUZdKD86Xz9bXFxkQS1GXSkqKD86XFwuW1xcZEEtRl0oPzpfP1tcXGRBLUZdKSopPyMoPzpFWystXT9cXGQoPzpfP1xcZCkqKT8vaVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogL1xcYlxcZCg/Ol8/XFxkKSooPzpcXC5cXGQoPzpfP1xcZCkqKT8oPzpFWystXT9cXGQoPzpfP1xcZCkqKT9cXGIvaVxuICAgICAgfVxuICAgIF0sXG4gICAgJ2F0dHItbmFtZSc6IC9cXGInXFx3Ky8sXG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzphYm9ydHxhYnN8YWJzdHJhY3R8YWNjZXB0fGFjY2Vzc3xhbGlhc2VkfGFsbHxhbmR8YXJyYXl8YXR8YmVnaW58Ym9keXxjYXNlfGNvbnN0YW50fGRlY2xhcmV8ZGVsYXl8ZGVsdGF8ZGlnaXRzfGRvfGVsc2V8ZWxzaWZ8ZW5kfGVudHJ5fGV4Y2VwdGlvbnxleGl0fGZvcnxmdW5jdGlvbnxnZW5lcmljfGdvdG98aWZ8aW58aW50ZXJmYWNlfGlzfGxpbWl0ZWR8bG9vcHxtb2R8bmV3fG5vdHxudWxsfG9mfG90aGVyc3xvdXR8b3ZlcnJpZGluZ3xwYWNrYWdlfHByYWdtYXxwcml2YXRlfHByb2NlZHVyZXxwcm90ZWN0ZWR8cmFpc2V8cmFuZ2V8cmVjb3JkfHJlbXxyZW5hbWVzfHJlcXVldWV8cmV0dXJufHJldmVyc2V8c2VsZWN0fHNlcGFyYXRlfHNvbWV8c3VidHlwZXxzeW5jaHJvbml6ZWR8dGFnZ2VkfHRhc2t8dGVybWluYXRlfHRoZW58dHlwZXx1bnRpbHx1c2V8d2hlbnx3aGlsZXx3aXRofHhvcilcXGIvaSxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvaSxcbiAgICBvcGVyYXRvcjogLzxbPT5dP3w+PT98PT4/fDo9fFxcLz0/fFxcKlxcKj98WyYrLV0vLFxuICAgIHB1bmN0dWF0aW9uOiAvXFwuXFwuP3xbLDsoKTpdLyxcbiAgICBjaGFyOiAvJy4nLyxcbiAgICB2YXJpYWJsZTogL1xcYlthLXpdKD86XFx3KSpcXGIvaVxuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhZ2RhXG5hZ2RhLmRpc3BsYXlOYW1lID0gJ2FnZGEnXG5hZ2RhLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYWdkYShQcmlzbSkge1xuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIFByaXNtLmxhbmd1YWdlcy5hZ2RhID0ge1xuICAgICAgY29tbWVudDogL1xcey1bXFxzXFxTXSo/KD86LVxcfXwkKXwtLS4qLyxcbiAgICAgIHN0cmluZzoge1xuICAgICAgICBwYXR0ZXJuOiAvXCIoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXxbXlxcXFxcXHJcXG5cIl0pKlwiLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9LFxuICAgICAgcHVuY3R1YXRpb246IC9bKCl7feKmg+KmhC47QF0vLFxuICAgICAgJ2NsYXNzLW5hbWUnOiB7XG4gICAgICAgIHBhdHRlcm46IC8oKD86ZGF0YXxyZWNvcmQpICspXFxTKy8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbjoge1xuICAgICAgICBwYXR0ZXJuOiAvKF5bIFxcdF0qKSg/IVxccylbXjpcXHJcXG5dKyg/PTopL20sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICBvcGVyYXRvcjoge1xuICAgICAgICBwYXR0ZXJuOiAvKF5cXHMqfFxccykoPzpbPXw64oiA4oaSzrtcXFxcP19dfC0+KSg/PVxccykvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAga2V5d29yZDpcbiAgICAgICAgL1xcYig/OlNldHxhYnN0cmFjdHxjb25zdHJ1Y3RvcnxkYXRhfGV0YS1lcXVhbGl0eXxmaWVsZHxmb3JhbGx8aGlkaW5nfGltcG9ydHxpbnxpbmR1Y3RpdmV8aW5maXh8aW5maXhsfGluZml4cnxpbnN0YW5jZXxsZXR8bWFjcm98bW9kdWxlfG11dHVhbHxuby1ldGEtZXF1YWxpdHl8b3BlbnxvdmVybGFwfHBhdHRlcm58cG9zdHVsYXRlfHByaW1pdGl2ZXxwcml2YXRlfHB1YmxpY3xxdW90ZXxxdW90ZUNvbnRleHR8cXVvdGVHb2FsfHF1b3RlVGVybXxyZWNvcmR8cmVuYW1pbmd8cmV3cml0ZXxzeW50YXh8dGFjdGljfHVucXVvdGV8dW5xdW90ZURlY2x8dW5xdW90ZURlZnx1c2luZ3x2YXJpYWJsZXx3aGVyZXx3aXRoKVxcYi9cbiAgICB9XG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYWxcbmFsLmRpc3BsYXlOYW1lID0gJ2FsJ1xuYWwuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBhbChQcmlzbSkge1xuICAvLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L0FML2Jsb2IvbWFzdGVyL2dyYW1tYXIvYWxzeW50YXgudG1sYW5ndWFnZVxuICBQcmlzbS5sYW5ndWFnZXMuYWwgPSB7XG4gICAgY29tbWVudDogL1xcL1xcLy4qfFxcL1xcKltcXHNcXFNdKj9cXCpcXC8vLFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLycoPzonJ3xbXidcXHJcXG5dKSonKD8hJyl8XCIoPzpcIlwifFteXCJcXHJcXG5dKSpcIig/IVwiKS8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIGZ1bmN0aW9uOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvKFxcYig/OmV2ZW50fHByb2NlZHVyZXx0cmlnZ2VyKVxccyt8KD86XnxbXi5dKVxcLlxccyopW2Etel9dXFx3Kig/PVxccypcXCgpL2ksXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBrZXl3b3JkOiBbXG4gICAgICAvLyBrZXl3b3Jkc1xuICAgICAgL1xcYig/OmFycmF5fGFzc2VydGVycm9yfGJlZ2lufGJyZWFrfGNhc2V8ZG98ZG93bnRvfGVsc2V8ZW5kfGV2ZW50fGV4aXR8Zm9yfGZvcmVhY2h8ZnVuY3Rpb258aWZ8aW1wbGVtZW50c3xpbnxpbmRhdGFzZXR8aW50ZXJmYWNlfGludGVybmFsfGxvY2FsfG9mfHByb2NlZHVyZXxwcm9ncmFtfHByb3RlY3RlZHxyZXBlYXR8cnVub25jbGllbnR8c2VjdXJpdHlmaWx0ZXJpbmd8c3VwcHJlc3NkaXNwb3NlfHRlbXBvcmFyeXx0aGVufHRvfHRyaWdnZXJ8dW50aWx8dmFyfHdoaWxlfHdpdGh8d2l0aGV2ZW50cylcXGIvaSwgLy8gb2JqZWN0cyBhbmQgbWV0YWRhdGEgdGhhdCBhcmUgdXNlZCBsaWtlIGtleXdvcmRzXG4gICAgICAvXFxiKD86YWN0aW9ufGFjdGlvbnN8YWRkYWZ0ZXJ8YWRkYmVmb3JlfGFkZGZpcnN0fGFkZGxhc3R8YXJlYXxhc3NlbWJseXxjaGFydHBhcnR8Y29kZXVuaXR8Y29sdW1ufGNvbnRyb2xhZGRpbnxjdWVncm91cHxjdXN0b21pemVzfGRhdGFpdGVtfGRhdGFzZXR8ZG90bmV0fGVsZW1lbnRzfGVudW18ZW51bWV4dGVuc2lvbnxleHRlbmRzfGZpZWxkfGZpZWxkYXR0cmlidXRlfGZpZWxkZWxlbWVudHxmaWVsZGdyb3VwfGZpZWxkZ3JvdXBzfGZpZWxkc3xmaWx0ZXJ8Zml4ZWR8Z3JpZHxncm91cHxrZXl8a2V5c3xsYWJlbHxsYWJlbHN8bGF5b3V0fG1vZGlmeXxtb3ZlYWZ0ZXJ8bW92ZWJlZm9yZXxtb3ZlZmlyc3R8bW92ZWxhc3R8cGFnZXxwYWdlY3VzdG9taXphdGlvbnxwYWdlZXh0ZW5zaW9ufHBhcnR8cHJvZmlsZXxxdWVyeXxyZXBlYXRlcnxyZXBvcnR8cmVxdWVzdHBhZ2V8c2NoZW1hfHNlcGFyYXRvcnxzeXN0ZW1wYXJ0fHRhYmxlfHRhYmxlZWxlbWVudHx0YWJsZWV4dGVuc2lvbnx0ZXh0YXR0cmlidXRlfHRleHRlbGVtZW50fHR5cGV8dXNlcmNvbnRyb2x8dmFsdWV8eG1scG9ydClcXGIvaVxuICAgIF0sXG4gICAgbnVtYmVyOlxuICAgICAgL1xcYig/OjB4W1xcZGEtZl0rfCg/OlxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykoPzplWystXT9cXGQrKT8pKD86RnxMTD98VSg/OkxMPyk/KT9cXGIvaSxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvaSxcbiAgICB2YXJpYWJsZTogL1xcYig/OkN1cnIoPzpGaWVsZE5vfFBhZ2V8UmVwb3J0KXx4P1JlY3xSZXF1ZXN0T3B0aW9uc1BhZ2UpXFxiLyxcbiAgICAnY2xhc3MtbmFtZSc6XG4gICAgICAvXFxiKD86YXV0b21hdGlvbnxiaWdpbnRlZ2VyfGJpZ3RleHR8YmxvYnxib29sZWFufGJ5dGV8Y2hhcnxjbGllbnR0eXBlfGNvZGV8Y29tcGxldGlvbnRyaWdnZXJlcnJvcmxldmVsfGNvbm5lY3Rpb250eXBlfGRhdGFiYXNlfGRhdGFjbGFzc2lmaWNhdGlvbnxkYXRhc2NvcGV8ZGF0ZXxkYXRlZm9ybXVsYXxkYXRldGltZXxkZWNpbWFsfGRlZmF1bHRsYXlvdXR8ZGlhbG9nfGRpY3Rpb25hcnl8ZG90bmV0YXNzZW1ibHl8ZG90bmV0dHlwZWRlY2xhcmF0aW9ufGR1cmF0aW9ufGVycm9yaW5mb3xlcnJvcnR5cGV8ZXhlY3V0aW9uY29udGV4dHxleGVjdXRpb25tb2RlfGZpZWxkY2xhc3N8ZmllbGRyZWZ8ZmllbGR0eXBlfGZpbGV8ZmlsdGVycGFnZWJ1aWxkZXJ8Z3VpZHxodHRwY2xpZW50fGh0dHBjb250ZW50fGh0dHBoZWFkZXJzfGh0dHByZXF1ZXN0bWVzc2FnZXxodHRwcmVzcG9uc2VtZXNzYWdlfGluc3RyZWFtfGludGVnZXJ8am9rZXJ8anNvbmFycmF5fGpzb25vYmplY3R8anNvbnRva2VufGpzb252YWx1ZXxrZXlyZWZ8bGlzdHxtb2R1bGVkZXBlbmRlbmN5aW5mb3xtb2R1bGVpbmZvfG5vbmV8bm90aWZpY2F0aW9ufG5vdGlmaWNhdGlvbnNjb3BlfG9iamVjdHR5cGV8b3B0aW9ufG91dHN0cmVhbXxwYWdlcmVzdWx0fHJlY29yZHxyZWNvcmRpZHxyZWNvcmRyZWZ8cmVwb3J0Zm9ybWF0fHNlY3VyaXR5ZmlsdGVyfHNlc3Npb25zZXR0aW5nc3x0YWJsZWNvbm5lY3Rpb250eXBlfHRhYmxlZmlsdGVyfHRlc3RhY3Rpb258dGVzdGZpZWxkfHRlc3RmaWx0ZXJmaWVsZHx0ZXN0cGFnZXx0ZXN0cGVybWlzc2lvbnN8dGVzdHJlcXVlc3RwYWdlfHRleHR8dGV4dGJ1aWxkZXJ8dGV4dGNvbnN0fHRleHRlbmNvZGluZ3x0aW1lfHRyYW5zYWN0aW9ubW9kZWx8dHJhbnNhY3Rpb250eXBlfHZhcmlhbnR8dmVyYm9zaXR5fHZlcnNpb258dmlld3x2aWV3c3x3ZWJzZXJ2aWNlYWN0aW9uY29udGV4dHx3ZWJzZXJ2aWNlYWN0aW9ucmVzdWx0Y29kZXx4bWxhdHRyaWJ1dGV8eG1sYXR0cmlidXRlY29sbGVjdGlvbnx4bWxjZGF0YXx4bWxjb21tZW50fHhtbGRlY2xhcmF0aW9ufHhtbGRvY3VtZW50fHhtbGRvY3VtZW50dHlwZXx4bWxlbGVtZW50fHhtbG5hbWVzcGFjZW1hbmFnZXJ8eG1sbmFtZXRhYmxlfHhtbG5vZGV8eG1sbm9kZWxpc3R8eG1scHJvY2Vzc2luZ2luc3RydWN0aW9ufHhtbHJlYWRvcHRpb25zfHhtbHRleHR8eG1sd3JpdGVvcHRpb25zKVxcYi9pLFxuICAgIG9wZXJhdG9yOiAvXFwuXFwufDpbPTpdfFstKyovXT0/fDw+fFs8Pl09P3w9fFxcYig/OmFuZHxkaXZ8bW9kfG5vdHxvcnx4b3IpXFxiL2ksXG4gICAgcHVuY3R1YXRpb246IC9bKClcXFtcXF17fTouOyxdL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhbnRscjRcbmFudGxyNC5kaXNwbGF5TmFtZSA9ICdhbnRscjQnXG5hbnRscjQuYWxpYXNlcyA9IFsnZzQnXVxuZnVuY3Rpb24gYW50bHI0KFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5hbnRscjQgPSB7XG4gICAgY29tbWVudDogL1xcL1xcLy4qfFxcL1xcKltcXHNcXFNdKj8oPzpcXCpcXC98JCkvLFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLycoPzpcXFxcLnxbXlxcXFwnXFxyXFxuXSkqJy8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgICdjaGFyYWN0ZXItY2xhc3MnOiB7XG4gICAgICBwYXR0ZXJuOiAvXFxbKD86XFxcXC58W15cXFxcXFxdXFxyXFxuXSkqXFxdLyxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGFsaWFzOiAncmVnZXgnLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgcGF0dGVybjogLyhbXltdfCg/Ol58W15cXFxcXSkoPzpcXFxcXFxcXCkqXFxcXFxcWyktKD8hXFxdKS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICBhbGlhczogJ3B1bmN0dWF0aW9uJ1xuICAgICAgICB9LFxuICAgICAgICBlc2NhcGU6XG4gICAgICAgICAgL1xcXFwoPzp1KD86W2EtZkEtRlxcZF17NH18XFx7W2EtZkEtRlxcZF0rXFx9KXxbcFBdXFx7Wz1cXHctXStcXH18W15cXHJcXG51cFBdKS8sXG4gICAgICAgIHB1bmN0dWF0aW9uOiAvW1xcW1xcXV0vXG4gICAgICB9XG4gICAgfSxcbiAgICBhY3Rpb246IHtcbiAgICAgIHBhdHRlcm46IC9cXHsoPzpbXnt9XXxcXHsoPzpbXnt9XXxcXHsoPzpbXnt9XXxcXHtbXnt9XSpcXH0pKlxcfSkqXFx9KSpcXH0vLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAvLyB0aGlzIG1pZ2h0IGJlIEMsIEMrKywgUHl0aG9uLCBKYXZhLCBDIywgb3IgYW55IG90aGVyIGxhbmd1YWdlIEFOVExSNCBjb21waWxlcyB0b1xuICAgICAgICAgIHBhdHRlcm46IC8oXFx7KVtcXHNcXFNdKyg/PVxcfSkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHVuY3R1YXRpb246IC9be31dL1xuICAgICAgfVxuICAgIH0sXG4gICAgY29tbWFuZDoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLygtPlxccyooPyFcXHMpKSg/OlxccyooPzosXFxzKik/XFxiW2Etel1cXHcqKD86XFxzKlxcKFteKClcXHJcXG5dKlxcKSk/KSsoPz1cXHMqOykvaSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgZnVuY3Rpb246IC9cXGJcXHcrKD89XFxzKig/OlssKF18JCkpLyxcbiAgICAgICAgcHVuY3R1YXRpb246IC9bLCgpXS9cbiAgICAgIH1cbiAgICB9LFxuICAgIGFubm90YXRpb246IHtcbiAgICAgIHBhdHRlcm46IC9AXFx3Kyg/Ojo6XFx3KykqLyxcbiAgICAgIGFsaWFzOiAna2V5d29yZCdcbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICBwYXR0ZXJuOiAvI1sgXFx0XSpcXHcrLyxcbiAgICAgIGFsaWFzOiAncHVuY3R1YXRpb24nXG4gICAgfSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmNhdGNofGNoYW5uZWxzfGZpbmFsbHl8ZnJhZ21lbnR8Z3JhbW1hcnxpbXBvcnR8bGV4ZXJ8bG9jYWxzfG1vZGV8b3B0aW9uc3xwYXJzZXJ8cmV0dXJuc3x0aHJvd3N8dG9rZW5zKVxcYi8sXG4gICAgZGVmaW5pdGlvbjogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvXFxiW2Etel1cXHcqKD89XFxzKjopLyxcbiAgICAgICAgYWxpYXM6IFsncnVsZScsICdjbGFzcy1uYW1lJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC9cXGJbQS1aXVxcdyooPz1cXHMqOikvLFxuICAgICAgICBhbGlhczogWyd0b2tlbicsICdjb25zdGFudCddXG4gICAgICB9XG4gICAgXSxcbiAgICBjb25zdGFudDogL1xcYltBLVpdW0EtWl9dKlxcYi8sXG4gICAgb3BlcmF0b3I6IC9cXC5cXC58LT58W3x+XXxbKis/XVxcPz8vLFxuICAgIHB1bmN0dWF0aW9uOiAvWzs6KCk9XS9cbiAgfVxuICBQcmlzbS5sYW5ndWFnZXMuZzQgPSBQcmlzbS5sYW5ndWFnZXMuYW50bHI0XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhcGFjaGVjb25mXG5hcGFjaGVjb25mLmRpc3BsYXlOYW1lID0gJ2FwYWNoZWNvbmYnXG5hcGFjaGVjb25mLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYXBhY2hlY29uZihQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuYXBhY2hlY29uZiA9IHtcbiAgICBjb21tZW50OiAvIy4qLyxcbiAgICAnZGlyZWN0aXZlLWlubGluZSc6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oXltcXHQgXSopXFxiKD86QWNjZXB0RmlsdGVyfEFjY2VwdFBhdGhJbmZvfEFjY2Vzc0ZpbGVOYW1lfEFjdGlvbnxBZGQoPzpBbHR8QWx0QnlFbmNvZGluZ3xBbHRCeVR5cGV8Q2hhcnNldHxEZWZhdWx0Q2hhcnNldHxEZXNjcmlwdGlvbnxFbmNvZGluZ3xIYW5kbGVyfEljb258SWNvbkJ5RW5jb2Rpbmd8SWNvbkJ5VHlwZXxJbnB1dEZpbHRlcnxMYW5ndWFnZXxNb2R1bGVJbmZvfE91dHB1dEZpbHRlcnxPdXRwdXRGaWx0ZXJCeVR5cGV8VHlwZSl8QWxpYXN8QWxpYXNNYXRjaHxBbGxvdyg/OkNPTk5FQ1R8RW5jb2RlZFNsYXNoZXN8TWV0aG9kc3xPdmVycmlkZXxPdmVycmlkZUxpc3QpP3xBbm9ueW1vdXMoPzpfTG9nRW1haWx8X011c3RHaXZlRW1haWx8X05vVXNlcklEfF9WZXJpZnlFbWFpbCk/fEFzeW5jUmVxdWVzdFdvcmtlckZhY3RvcnxBdXRoKD86QmFzaWNBdXRob3JpdGF0aXZlfEJhc2ljRmFrZXxCYXNpY1Byb3ZpZGVyfEJhc2ljVXNlRGlnZXN0QWxnb3JpdGhtfERCRFVzZXJQV1F1ZXJ5fERCRFVzZXJSZWFsbVF1ZXJ5fERCTUdyb3VwRmlsZXxEQk1UeXBlfERCTVVzZXJGaWxlfERpZ2VzdCg/OkFsZ29yaXRobXxEb21haW58Tm9uY2VMaWZldGltZXxQcm92aWRlcnxRb3B8U2htZW1TaXplKXxGb3JtKD86QXV0aG9yaXRhdGl2ZXxCb2R5fERpc2FibGVOb1N0b3JlfEZha2VCYXNpY0F1dGh8TG9jYXRpb258TG9naW5SZXF1aXJlZExvY2F0aW9ufExvZ2luU3VjY2Vzc0xvY2F0aW9ufExvZ291dExvY2F0aW9ufE1ldGhvZHxNaW1ldHlwZXxQYXNzd29yZHxQcm92aWRlcnxTaXRlUGFzc3BocmFzZXxTaXplfFVzZXJuYW1lKXxHcm91cEZpbGV8TERBUCg/OkF1dGhvcml6ZVByZWZpeHxCaW5kQXV0aG9yaXRhdGl2ZXxCaW5kRE58QmluZFBhc3N3b3JkfENoYXJzZXRDb25maWd8Q29tcGFyZUFzVXNlcnxDb21wYXJlRE5PblNlcnZlcnxEZXJlZmVyZW5jZUFsaWFzZXN8R3JvdXBBdHRyaWJ1dGV8R3JvdXBBdHRyaWJ1dGVJc0ROfEluaXRpYWxCaW5kQXNVc2VyfEluaXRpYWxCaW5kUGF0dGVybnxNYXhTdWJHcm91cERlcHRofFJlbW90ZVVzZXJBdHRyaWJ1dGV8UmVtb3RlVXNlcklzRE58U2VhcmNoQXNVc2VyfFN1Ykdyb3VwQXR0cmlidXRlfFN1Ykdyb3VwQ2xhc3N8VXJsKXxNZXJnaW5nfE5hbWV8bkNhY2hlKD86Q29udGV4dHxFbmFibGV8UHJvdmlkZUZvcnxTT0NhY2hlfFRpbWVvdXQpfG56RmNnaUNoZWNrQXV0aG5Qcm92aWRlcnxuekZjZ2lEZWZpbmVQcm92aWRlcnxUeXBlfFVzZXJGaWxlfHpEQkRMb2dpblRvUmVmZXJlcnx6REJEUXVlcnl8ekRCRFJlZGlyZWN0UXVlcnl8ekRCTVR5cGV8elNlbmRGb3JiaWRkZW5PbkZhaWx1cmUpfEJhbGFuY2VyR3Jvd3RofEJhbGFuY2VySW5oZXJpdHxCYWxhbmNlck1lbWJlcnxCYWxhbmNlclBlcnNpc3R8QnJvd3Nlck1hdGNofEJyb3dzZXJNYXRjaE5vQ2FzZXxCdWZmZXJlZExvZ3N8QnVmZmVyU2l6ZXxDYWNoZSg/OkRlZmF1bHRFeHBpcmV8RGV0YWlsSGVhZGVyfERpckxlbmd0aHxEaXJMZXZlbHN8RGlzYWJsZXxFbmFibGV8RmlsZXxIZWFkZXJ8SWdub3JlQ2FjaGVDb250cm9sfElnbm9yZUhlYWRlcnN8SWdub3JlTm9MYXN0TW9kfElnbm9yZVF1ZXJ5U3RyaW5nfElnbm9yZVVSTFNlc3Npb25JZGVudGlmaWVyc3xLZXlCYXNlVVJMfExhc3RNb2RpZmllZEZhY3RvcnxMb2NrfExvY2tNYXhBZ2V8TG9ja1BhdGh8TWF4RXhwaXJlfE1heEZpbGVTaXplfE1pbkV4cGlyZXxNaW5GaWxlU2l6ZXxOZWdvdGlhdGVkRG9jc3xRdWlja0hhbmRsZXJ8UmVhZFNpemV8UmVhZFRpbWV8Um9vdHxTb2NhY2hlKD86TWF4U2l6ZXxNYXhUaW1lfE1pblRpbWV8UmVhZFNpemV8UmVhZFRpbWUpP3xTdGFsZU9uRXJyb3J8U3RvcmVFeHBpcmVkfFN0b3JlTm9TdG9yZXxTdG9yZVByaXZhdGUpfENHSURTY3JpcHRUaW1lb3V0fENHSU1hcEV4dGVuc2lvbnxDaGFyc2V0RGVmYXVsdHxDaGFyc2V0T3B0aW9uc3xDaGFyc2V0U291cmNlRW5jfENoZWNrQ2FzZU9ubHl8Q2hlY2tTcGVsbGluZ3xDaHJvb3REaXJ8Q29udGVudERpZ2VzdHxDb29raWVEb21haW58Q29va2llRXhwaXJlc3xDb29raWVOYW1lfENvb2tpZVN0eWxlfENvb2tpZVRyYWNraW5nfENvcmVEdW1wRGlyZWN0b3J5fEN1c3RvbUxvZ3xEYXZ8RGF2RGVwdGhJbmZpbml0eXxEYXZHZW5lcmljTG9ja0RCfERhdkxvY2tEQnxEYXZNaW5UaW1lb3V0fERCREV4cHRpbWV8REJESW5pdFNRTHxEQkRLZWVwfERCRE1heHxEQkRNaW58REJEUGFyYW1zfERCRFBlcnNpc3R8REJEUHJlcGFyZVNRTHxEQkRyaXZlcnxEZWZhdWx0SWNvbnxEZWZhdWx0TGFuZ3VhZ2V8RGVmYXVsdFJ1bnRpbWVEaXJ8RGVmYXVsdFR5cGV8RGVmaW5lfERlZmxhdGUoPzpCdWZmZXJTaXplfENvbXByZXNzaW9uTGV2ZWx8RmlsdGVyTm90ZXxJbmZsYXRlTGltaXRSZXF1ZXN0Qm9keXxJbmZsYXRlUmF0aW8oPzpCdXJzdHxMaW1pdCl8TWVtTGV2ZWx8V2luZG93U2l6ZSl8RGVueXxEaXJlY3RvcnlDaGVja0hhbmRsZXJ8RGlyZWN0b3J5SW5kZXh8RGlyZWN0b3J5SW5kZXhSZWRpcmVjdHxEaXJlY3RvcnlTbGFzaHxEb2N1bWVudFJvb3R8RFRyYWNlUHJpdmlsZWdlc3xEdW1wSU9JbnB1dHxEdW1wSU9PdXRwdXR8RW5hYmxlRXhjZXB0aW9uSG9va3xFbmFibGVNTUFQfEVuYWJsZVNlbmRmaWxlfEVycm9yfEVycm9yRG9jdW1lbnR8RXJyb3JMb2d8RXJyb3JMb2dGb3JtYXR8RXhhbXBsZXxFeHBpcmVzQWN0aXZlfEV4cGlyZXNCeVR5cGV8RXhwaXJlc0RlZmF1bHR8RXh0ZW5kZWRTdGF0dXN8RXh0RmlsdGVyRGVmaW5lfEV4dEZpbHRlck9wdGlvbnN8RmFsbGJhY2tSZXNvdXJjZXxGaWxlRVRhZ3xGaWx0ZXJDaGFpbnxGaWx0ZXJEZWNsYXJlfEZpbHRlclByb3RvY29sfEZpbHRlclByb3ZpZGVyfEZpbHRlclRyYWNlfEZvcmNlTGFuZ3VhZ2VQcmlvcml0eXxGb3JjZVR5cGV8Rm9yZW5zaWNMb2d8R3Byb2ZEaXJ8R3JhY2VmdWxTaHV0ZG93blRpbWVvdXR8R3JvdXB8SGVhZGVyfEhlYWRlck5hbWV8SGVhcnRiZWF0KD86QWRkcmVzc3xMaXN0ZW58TWF4U2VydmVyc3xTdG9yYWdlKXxIb3N0bmFtZUxvb2t1cHN8SWRlbnRpdHlDaGVja3xJZGVudGl0eUNoZWNrVGltZW91dHxJbWFwQmFzZXxJbWFwRGVmYXVsdHxJbWFwTWVudXxJbmNsdWRlfEluY2x1ZGVPcHRpb25hbHxJbmRleCg/OkhlYWRJbnNlcnR8SWdub3JlfElnbm9yZVJlc2V0fE9wdGlvbnN8T3JkZXJEZWZhdWx0fFN0eWxlU2hlZXQpfElucHV0U2VkfElTQVBJKD86QXBwZW5kTG9nVG9FcnJvcnN8QXBwZW5kTG9nVG9RdWVyeXxDYWNoZUZpbGV8RmFrZUFzeW5jfExvZ05vdFN1cHBvcnRlZHxSZWFkQWhlYWRCdWZmZXIpfEtlZXBBbGl2ZXxLZWVwQWxpdmVUaW1lb3V0fEtlcHRCb2R5U2l6ZXxMYW5ndWFnZVByaW9yaXR5fExEQVAoPzpDYWNoZUVudHJpZXN8Q2FjaGVUVEx8Q29ubmVjdGlvblBvb2xUVEx8Q29ubmVjdGlvblRpbWVvdXR8TGlicmFyeURlYnVnfE9wQ2FjaGVFbnRyaWVzfE9wQ2FjaGVUVEx8UmVmZXJyYWxIb3BMaW1pdHxSZWZlcnJhbHN8UmV0cmllc3xSZXRyeURlbGF5fFNoYXJlZENhY2hlRmlsZXxTaGFyZWRDYWNoZVNpemV8VGltZW91dHxUcnVzdGVkQ2xpZW50Q2VydHxUcnVzdGVkR2xvYmFsQ2VydHxUcnVzdGVkTW9kZXxWZXJpZnlTZXJ2ZXJDZXJ0KXxMaW1pdCg/OkludGVybmFsUmVjdXJzaW9ufFJlcXVlc3QoPzpCb2R5fEZpZWxkc3xGaWVsZFNpemV8TGluZSl8WE1MUmVxdWVzdEJvZHkpfExpc3RlbnxMaXN0ZW5CYWNrTG9nfExvYWRGaWxlfExvYWRNb2R1bGV8TG9nRm9ybWF0fExvZ0xldmVsfExvZ01lc3NhZ2V8THVhQXV0aHpQcm92aWRlcnxMdWFDb2RlQ2FjaGV8THVhKD86SG9vayg/OkFjY2Vzc0NoZWNrZXJ8QXV0aENoZWNrZXJ8Q2hlY2tVc2VySUR8Rml4dXBzfEluc2VydEZpbHRlcnxMb2d8TWFwVG9TdG9yYWdlfFRyYW5zbGF0ZU5hbWV8VHlwZUNoZWNrZXIpfEluaGVyaXR8SW5wdXRGaWx0ZXJ8TWFwSGFuZGxlcnxPdXRwdXRGaWx0ZXJ8UGFja2FnZUNQYXRofFBhY2thZ2VQYXRofFF1aWNrSGFuZGxlcnxSb290fFNjb3BlKXxNYXgoPzpDb25uZWN0aW9uc1BlckNoaWxkfEtlZXBBbGl2ZVJlcXVlc3RzfE1lbUZyZWV8UmFuZ2VPdmVybGFwc3xSYW5nZVJldmVyc2Fsc3xSYW5nZXN8UmVxdWVzdFdvcmtlcnN8U3BhcmVTZXJ2ZXJzfFNwYXJlVGhyZWFkc3xUaHJlYWRzKXxNZXJnZVRyYWlsZXJzfE1ldGFEaXJ8TWV0YUZpbGVzfE1ldGFTdWZmaXh8TWltZU1hZ2ljRmlsZXxNaW5TcGFyZVNlcnZlcnN8TWluU3BhcmVUaHJlYWRzfE1NYXBGaWxlfE1vZGVtU3RhbmRhcmR8TW9kTWltZVVzZVBhdGhJbmZvfE11bHRpdmlld3NNYXRjaHxNdXRleHxOYW1lVmlydHVhbEhvc3R8Tm9Qcm94eXxOV1NTTFRydXN0ZWRDZXJ0c3xOV1NTTFVwZ3JhZGVhYmxlfE9wdGlvbnN8T3JkZXJ8T3V0cHV0U2VkfFBhc3NFbnZ8UGlkRmlsZXxQcml2aWxlZ2VzTW9kZXxQcm90b2NvbHxQcm90b2NvbEVjaG98UHJveHkoPzpBZGRIZWFkZXJzfEJhZEhlYWRlcnxCbG9ja3xEb21haW58RXJyb3JPdmVycmlkZXxFeHByZXNzREJNRmlsZXxFeHByZXNzREJNVHlwZXxFeHByZXNzRW5hYmxlfEZ0cERpckNoYXJzZXR8RnRwRXNjYXBlV2lsZGNhcmRzfEZ0cExpc3RPbldpbGRjYXJkfEhUTUwoPzpCdWZTaXplfENoYXJzZXRPdXR8RG9jVHlwZXxFbmFibGV8RXZlbnRzfEV4dGVuZGVkfEZpeHVwc3xJbnRlcnB8TGlua3N8TWV0YXxTdHJpcENvbW1lbnRzfFVSTE1hcCl8SU9CdWZmZXJTaXplfE1heEZvcndhcmRzfFBhc3MoPzpJbmhlcml0fEludGVycG9sYXRlRW52fE1hdGNofFJldmVyc2V8UmV2ZXJzZUNvb2tpZURvbWFpbnxSZXZlcnNlQ29va2llUGF0aCk/fFByZXNlcnZlSG9zdHxSZWNlaXZlQnVmZmVyU2l6ZXxSZW1vdGV8UmVtb3RlTWF0Y2h8UmVxdWVzdHN8U0NHSUludGVybmFsUmVkaXJlY3R8U0NHSVNlbmRmaWxlfFNldHxTb3VyY2VBZGRyZXNzfFN0YXR1c3xUaW1lb3V0fFZpYSl8UmVhZG1lTmFtZXxSZWNlaXZlQnVmZmVyU2l6ZXxSZWRpcmVjdHxSZWRpcmVjdE1hdGNofFJlZGlyZWN0UGVybWFuZW50fFJlZGlyZWN0VGVtcHxSZWZsZWN0b3JIZWFkZXJ8UmVtb3RlSVAoPzpIZWFkZXJ8SW50ZXJuYWxQcm94eXxJbnRlcm5hbFByb3h5TGlzdHxQcm94aWVzSGVhZGVyfFRydXN0ZWRQcm94eXxUcnVzdGVkUHJveHlMaXN0KXxSZW1vdmVDaGFyc2V0fFJlbW92ZUVuY29kaW5nfFJlbW92ZUhhbmRsZXJ8UmVtb3ZlSW5wdXRGaWx0ZXJ8UmVtb3ZlTGFuZ3VhZ2V8UmVtb3ZlT3V0cHV0RmlsdGVyfFJlbW92ZVR5cGV8UmVxdWVzdEhlYWRlcnxSZXF1ZXN0UmVhZFRpbWVvdXR8UmVxdWlyZXxSZXdyaXRlKD86QmFzZXxDb25kfEVuZ2luZXxNYXB8T3B0aW9uc3xSdWxlKXxSTGltaXRDUFV8UkxpbWl0TUVNfFJMaW1pdE5QUk9DfFNhdGlzZnl8U2NvcmVCb2FyZEZpbGV8U2NyaXB0KD86QWxpYXN8QWxpYXNNYXRjaHxJbnRlcnByZXRlclNvdXJjZXxMb2d8TG9nQnVmZmVyfExvZ0xlbmd0aHxTb2NrKT98U2VjdXJlTGlzdGVufFNlZVJlcXVlc3RUYWlsfFNlbmRCdWZmZXJTaXplfFNlcnZlcig/OkFkbWlufEFsaWFzfExpbWl0fE5hbWV8UGF0aHxSb290fFNpZ25hdHVyZXxUb2tlbnMpfFNlc3Npb24oPzpDb29raWUoPzpOYW1lfE5hbWUyfFJlbW92ZSl8Q3J5cHRvKD86Q2lwaGVyfERyaXZlcnxQYXNzcGhyYXNlfFBhc3NwaHJhc2VGaWxlKXxEQkQoPzpDb29raWVOYW1lfENvb2tpZU5hbWUyfENvb2tpZVJlbW92ZXxEZWxldGVMYWJlbHxJbnNlcnRMYWJlbHxQZXJVc2VyfFNlbGVjdExhYmVsfFVwZGF0ZUxhYmVsKXxFbnZ8RXhjbHVkZXxIZWFkZXJ8SW5jbHVkZXxNYXhBZ2UpP3xTZXRFbnZ8U2V0RW52SWZ8U2V0RW52SWZFeHByfFNldEVudklmTm9DYXNlfFNldEhhbmRsZXJ8U2V0SW5wdXRGaWx0ZXJ8U2V0T3V0cHV0RmlsdGVyfFNTSUVuZFRhZ3xTU0lFcnJvck1zZ3xTU0lFVGFnfFNTSUxhc3RNb2RpZmllZHxTU0lMZWdhY3lFeHByUGFyc2VyfFNTSVN0YXJ0VGFnfFNTSVRpbWVGb3JtYXR8U1NJVW5kZWZpbmVkRWNob3xTU0woPzpDQUNlcnRpZmljYXRlRmlsZXxDQUNlcnRpZmljYXRlUGF0aHxDQUROUmVxdWVzdEZpbGV8Q0FETlJlcXVlc3RQYXRofENBUmV2b2NhdGlvbkNoZWNrfENBUmV2b2NhdGlvbkZpbGV8Q0FSZXZvY2F0aW9uUGF0aHxDZXJ0aWZpY2F0ZUNoYWluRmlsZXxDZXJ0aWZpY2F0ZUZpbGV8Q2VydGlmaWNhdGVLZXlGaWxlfENpcGhlclN1aXRlfENvbXByZXNzaW9ufENyeXB0b0RldmljZXxFbmdpbmV8RklQU3xIb25vckNpcGhlck9yZGVyfEluc2VjdXJlUmVuZWdvdGlhdGlvbnxPQ1NQKD86RGVmYXVsdFJlc3BvbmRlcnxFbmFibGV8T3ZlcnJpZGVSZXNwb25kZXJ8UmVzcG9uZGVyVGltZW91dHxSZXNwb25zZU1heEFnZXxSZXNwb25zZVRpbWVTa2V3fFVzZVJlcXVlc3ROb25jZSl8T3BlblNTTENvbmZDbWR8T3B0aW9uc3xQYXNzUGhyYXNlRGlhbG9nfFByb3RvY29sfFByb3h5KD86Q0FDZXJ0aWZpY2F0ZUZpbGV8Q0FDZXJ0aWZpY2F0ZVBhdGh8Q0FSZXZvY2F0aW9uKD86Q2hlY2t8RmlsZXxQYXRoKXxDaGVja1BlZXIoPzpDTnxFeHBpcmV8TmFtZSl8Q2lwaGVyU3VpdGV8RW5naW5lfE1hY2hpbmVDZXJ0aWZpY2F0ZSg/OkNoYWluRmlsZXxGaWxlfFBhdGgpfFByb3RvY29sfFZlcmlmeXxWZXJpZnlEZXB0aCl8UmFuZG9tU2VlZHxSZW5lZ0J1ZmZlclNpemV8UmVxdWlyZXxSZXF1aXJlU1NMfFNlc3Npb24oPzpDYWNoZXxDYWNoZVRpbWVvdXR8VGlja2V0S2V5RmlsZXxUaWNrZXRzKXxTUlBVbmtub3duVXNlclNlZWR8U1JQVmVyaWZpZXJGaWxlfFN0YXBsaW5nKD86Q2FjaGV8RXJyb3JDYWNoZVRpbWVvdXR8RmFrZVRyeUxhdGVyfEZvcmNlVVJMfFJlc3BvbmRlclRpbWVvdXR8UmVzcG9uc2VNYXhBZ2V8UmVzcG9uc2VUaW1lU2tld3xSZXR1cm5SZXNwb25kZXJFcnJvcnN8U3RhbmRhcmRDYWNoZVRpbWVvdXQpfFN0cmljdFNOSVZIb3N0Q2hlY2t8VXNlck5hbWV8VXNlU3RhcGxpbmd8VmVyaWZ5Q2xpZW50fFZlcmlmeURlcHRoKXxTdGFydFNlcnZlcnN8U3RhcnRUaHJlYWRzfFN1YnN0aXR1dGV8U3VleGVjfFN1ZXhlY1VzZXJHcm91cHxUaHJlYWRMaW1pdHxUaHJlYWRzUGVyQ2hpbGR8VGhyZWFkU3RhY2tTaXplfFRpbWVPdXR8VHJhY2VFbmFibGV8VHJhbnNmZXJMb2d8VHlwZXNDb25maWd8VW5EZWZpbmV8VW5kZWZNYWNyb3xVbnNldEVudnxVc2V8VXNlQ2Fub25pY2FsTmFtZXxVc2VDYW5vbmljYWxQaHlzaWNhbFBvcnR8VXNlcnxVc2VyRGlyfFZIb3N0Q0dJTW9kZXxWSG9zdENHSVByaXZzfFZIb3N0R3JvdXB8Vkhvc3RQcml2c3xWSG9zdFNlY3VyZXxWSG9zdFVzZXJ8VmlydHVhbCg/OkRvY3VtZW50Um9vdHxTY3JpcHRBbGlhcykoPzpJUCk/fFdhdGNoZG9nSW50ZXJ2YWx8WEJpdEhhY2t8eG1sMkVuY0FsaWFzfHhtbDJFbmNEZWZhdWx0fHhtbDJTdGFydFBhcnNlKVxcYi9pbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBhbGlhczogJ3Byb3BlcnR5J1xuICAgIH0sXG4gICAgJ2RpcmVjdGl2ZS1ibG9jayc6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC88XFwvP1xcYig/OkF1dGhbbnpdUHJvdmlkZXJBbGlhc3xEaXJlY3Rvcnl8RGlyZWN0b3J5TWF0Y2h8RWxzZXxFbHNlSWZ8RmlsZXN8RmlsZXNNYXRjaHxJZnxJZkRlZmluZXxJZk1vZHVsZXxJZlZlcnNpb258TGltaXR8TGltaXRFeGNlcHR8TG9jYXRpb258TG9jYXRpb25NYXRjaHxNYWNyb3xQcm94eXxSZXF1aXJlKD86QWxsfEFueXxOb25lKXxWaXJ0dWFsSG9zdClcXGIuKj4vaSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICAnZGlyZWN0aXZlLWJsb2NrJzoge1xuICAgICAgICAgIHBhdHRlcm46IC9ePFxcLz9cXHcrLyxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvXjxcXC8/L1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWxpYXM6ICd0YWcnXG4gICAgICAgIH0sXG4gICAgICAgICdkaXJlY3RpdmUtYmxvY2stcGFyYW1ldGVyJzoge1xuICAgICAgICAgIHBhdHRlcm46IC8uKltePl0vLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgcHVuY3R1YXRpb246IC86LyxcbiAgICAgICAgICAgIHN0cmluZzoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvKFwifCcpLipcXDEvLFxuICAgICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZTogL1skJV1cXHs/KD86XFx3XFwuP1stKzpdPykrXFx9Py9cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWxpYXM6ICdhdHRyLXZhbHVlJ1xuICAgICAgICB9LFxuICAgICAgICBwdW5jdHVhdGlvbjogLz4vXG4gICAgICB9LFxuICAgICAgYWxpYXM6ICd0YWcnXG4gICAgfSxcbiAgICAnZGlyZWN0aXZlLWZsYWdzJzoge1xuICAgICAgcGF0dGVybjogL1xcWyg/OltcXHc9XSw/KStcXF0vLFxuICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvKFwifCcpLipcXDEvLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIHZhcmlhYmxlOiAvWyQlXVxcez8oPzpcXHdcXC4/Wy0rOl0/KStcXH0/L1xuICAgICAgfVxuICAgIH0sXG4gICAgdmFyaWFibGU6IC9bJCVdXFx7Pyg/Olxcd1xcLj9bLSs6XT8pK1xcfT8vLFxuICAgIHJlZ2V4OiAvXFxePy4qXFwkfFxcXi4qXFwkPy9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgcmVmcmFjdG9yU3FsID0gcmVxdWlyZSgnLi9zcWwuanMnKVxubW9kdWxlLmV4cG9ydHMgPSBhcGV4XG5hcGV4LmRpc3BsYXlOYW1lID0gJ2FwZXgnXG5hcGV4LmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYXBleChQcmlzbSkge1xuICBQcmlzbS5yZWdpc3RlcihyZWZyYWN0b3JTcWwpXG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgdmFyIGtleXdvcmRzID1cbiAgICAgIC9cXGIoPzooPzphZnRlcnxiZWZvcmUpKD89XFxzK1thLXpdKXxhYnN0cmFjdHxhY3RpdmF0ZXxhbmR8YW55fGFycmF5fGFzfGFzY3xhdXRvbm9tb3VzfGJlZ2lufGJpZ2RlY2ltYWx8YmxvYnxib29sZWFufGJyZWFrfGJ1bGt8Ynl8Ynl0ZXxjYXNlfGNhc3R8Y2F0Y2h8Y2hhcnxjbGFzc3xjb2xsZWN0fGNvbW1pdHxjb25zdHxjb250aW51ZXxjdXJyZW5jeXxkYXRlfGRhdGV0aW1lfGRlY2ltYWx8ZGVmYXVsdHxkZWxldGV8ZGVzY3xkb3xkb3VibGV8ZWxzZXxlbmR8ZW51bXxleGNlcHRpb258ZXhpdHxleHBvcnR8ZXh0ZW5kc3xmaW5hbHxmaW5hbGx5fGZsb2F0fGZvcnxmcm9tfGdldCg/PVxccypbe307XSl8Z2xvYmFsfGdvdG98Z3JvdXB8aGF2aW5nfGhpbnR8aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW58aW5uZXJ8aW5zZXJ0fGluc3RhbmNlb2Z8aW50fGludGVnZXJ8aW50ZXJmYWNlfGludG98am9pbnxsaWtlfGxpbWl0fGxpc3R8bG9uZ3xsb29wfG1hcHxtZXJnZXxuZXd8bm90fG51bGx8bnVsbHN8bnVtYmVyfG9iamVjdHxvZnxvbnxvcnxvdXRlcnxvdmVycmlkZXxwYWNrYWdlfHBhcmFsbGVsfHByYWdtYXxwcml2YXRlfHByb3RlY3RlZHxwdWJsaWN8cmV0cmlldmV8cmV0dXJufHJvbGxiYWNrfHNlbGVjdHxzZXR8c2hvcnR8c09iamVjdHxzb3J0fHN0YXRpY3xzdHJpbmd8c3VwZXJ8c3dpdGNofHN5bmNocm9uaXplZHxzeXN0ZW18dGVzdG1ldGhvZHx0aGVufHRoaXN8dGhyb3d8dGltZXx0cmFuc2FjdGlvbnx0cmFuc2llbnR8dHJpZ2dlcnx0cnl8dW5kZWxldGV8dXBkYXRlfHVwc2VydHx1c2luZ3x2aXJ0dWFsfHZvaWR8d2Vic2VydmljZXx3aGVufHdoZXJlfHdoaWxlfCg/OmluaGVyaXRlZHx3aXRofHdpdGhvdXQpXFxzK3NoYXJpbmcpXFxiL2lcbiAgICB2YXIgY2xhc3NOYW1lID1cbiAgICAgIC9cXGIoPzooPz1bYS16X11cXHcqXFxzKls8XFxbXSl8KD8hPGtleXdvcmQ+KSlbQS1aX11cXHcqKD86XFxzKlxcLlxccypbQS1aX11cXHcqKSpcXGIoPzpcXHMqKD86XFxbXFxzKlxcXXw8KD86W148Pl18PCg/OltePD5dfDxbXjw+XSo+KSo+KSo+KSkqLy5zb3VyY2UucmVwbGFjZShcbiAgICAgICAgLzxrZXl3b3JkPi9nLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGtleXdvcmRzLnNvdXJjZVxuICAgICAgICB9XG4gICAgICApXG4gICAgLyoqIEBwYXJhbSB7c3RyaW5nfSBwYXR0ZXJuICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0Q2xhc3NOYW1lKHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiBSZWdFeHAoXG4gICAgICAgIHBhdHRlcm4ucmVwbGFjZSgvPENMQVNTLU5BTUU+L2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lXG4gICAgICAgIH0pLFxuICAgICAgICAnaSdcbiAgICAgIClcbiAgICB9XG4gICAgdmFyIGNsYXNzTmFtZUluc2lkZSA9IHtcbiAgICAgIGtleXdvcmQ6IGtleXdvcmRzLFxuICAgICAgcHVuY3R1YXRpb246IC9bKClcXFtcXF17fTssOi48Pl0vXG4gICAgfVxuICAgIFByaXNtLmxhbmd1YWdlcy5hcGV4ID0ge1xuICAgICAgY29tbWVudDogUHJpc20ubGFuZ3VhZ2VzLmNsaWtlLmNvbW1lbnQsXG4gICAgICBzdHJpbmc6IFByaXNtLmxhbmd1YWdlcy5jbGlrZS5zdHJpbmcsXG4gICAgICBzcWw6IHtcbiAgICAgICAgcGF0dGVybjogLygoPzpbPSwoezpdfFxcYnJldHVybilcXHMqKVxcW1teXFxbXFxdXSpcXF0vaSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBhbGlhczogJ2xhbmd1YWdlLXNxbCcsXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLnNxbFxuICAgICAgfSxcbiAgICAgIGFubm90YXRpb246IHtcbiAgICAgICAgcGF0dGVybjogL0BcXHcrXFxiLyxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICAnY2xhc3MtbmFtZSc6IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdHRlcm46IGluc2VydENsYXNzTmFtZShcbiAgICAgICAgICAgIC8oXFxiKD86Y2xhc3N8ZW51bXxleHRlbmRzfGltcGxlbWVudHN8aW5zdGFuY2VvZnxpbnRlcmZhY2V8bmV3fHRyaWdnZXJcXHMrXFx3K1xccytvbilcXHMrKTxDTEFTUy1OQU1FPi9cbiAgICAgICAgICAgICAgLnNvdXJjZVxuICAgICAgICAgICksXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICBpbnNpZGU6IGNsYXNzTmFtZUluc2lkZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gY2FzdFxuICAgICAgICAgIHBhdHRlcm46IGluc2VydENsYXNzTmFtZShcbiAgICAgICAgICAgIC8oXFwoXFxzKik8Q0xBU1MtTkFNRT4oPz1cXHMqXFwpXFxzKltcXHcoXSkvLnNvdXJjZVxuICAgICAgICAgICksXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICBpbnNpZGU6IGNsYXNzTmFtZUluc2lkZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gdmFyaWFibGUvcGFyYW1ldGVyIGRlY2xhcmF0aW9uIGFuZCByZXR1cm4gdHlwZXNcbiAgICAgICAgICBwYXR0ZXJuOiBpbnNlcnRDbGFzc05hbWUoLzxDTEFTUy1OQU1FPig/PVxccypcXHcrXFxzKls7PSwoKXs6XSkvLnNvdXJjZSksXG4gICAgICAgICAgaW5zaWRlOiBjbGFzc05hbWVJbnNpZGVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgcGF0dGVybjogLyhcXGJ0cmlnZ2VyXFxzKylcXHcrXFxiL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZSdcbiAgICAgIH0sXG4gICAgICBrZXl3b3JkOiBrZXl3b3JkcyxcbiAgICAgIGZ1bmN0aW9uOiAvXFxiW2Etel9dXFx3Kig/PVxccypcXCgpL2ksXG4gICAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvaSxcbiAgICAgIG51bWJlcjogLyg/OlxcQlxcLlxcZCt8XFxiXFxkKyg/OlxcLlxcZCt8TCk/KVxcYi9pLFxuICAgICAgb3BlcmF0b3I6XG4gICAgICAgIC9bIT1dKD86PT0/KT98XFw/XFwuP3wmJnxcXHxcXHx8LS18XFwrXFwrfFstKyovXiZ8XT0/fDp8PDw/PT98PnsxLDN9PT8vLFxuICAgICAgcHVuY3R1YXRpb246IC9bKClcXFtcXF17fTssLl0vXG4gICAgfVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFwbFxuYXBsLmRpc3BsYXlOYW1lID0gJ2FwbCdcbmFwbC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGFwbChQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuYXBsID0ge1xuICAgIGNvbW1lbnQ6IC8oPzrijZ18I1shIF0pLiokL20sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvJyg/OlteJ1xcclxcbl18JycpKicvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBudW1iZXI6XG4gICAgICAvwq8/KD86XFxkKlxcLj9cXGJcXGQrKD86ZVsrwq9dP1xcZCspP3zCr3ziiJ4pKD86asKvPyg/Oig/OlxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKykoPzplWyvCr10/XFxkKyk/fMKvfOKInikpPy9pLFxuICAgIHN0YXRlbWVudDogLzpbQS1aXVthLXpdW0EtWmEtel0qXFxiLyxcbiAgICAnc3lzdGVtLWZ1bmN0aW9uJzoge1xuICAgICAgcGF0dGVybjogL+KOlVtBLVpdKy9pLFxuICAgICAgYWxpYXM6ICdmdW5jdGlvbidcbiAgICB9LFxuICAgIGNvbnN0YW50OiAvW+KNrOKMviPijpXijZ5dLyxcbiAgICBmdW5jdGlvbjogL1stK8OXw7fijIjijIriiKN84o2z4o24PyrijZ/il4sh4oy5POKJpD0+4oml4omg4omh4omi4oiK4o234oiq4oipfuKIqOKIp+KNseKNsuKNtCzijarijL3iipbijYnihpHihpPiioLiioPiiobiiofijLfijYvijZLiiqTiiqXijZXijY7iiqPiiqLijYHijYLiiYjija/ihpfCpOKGkl0vLFxuICAgICdtb25hZGljLW9wZXJhdG9yJzoge1xuICAgICAgcGF0dGVybjogL1tcXFxcXFwv4oy/4o2AwqjijajijLYm4oilXS8sXG4gICAgICBhbGlhczogJ29wZXJhdG9yJ1xuICAgIH0sXG4gICAgJ2R5YWRpYy1vcGVyYXRvcic6IHtcbiAgICAgIHBhdHRlcm46IC9bLuKNo+KNoOKNpOKImOKMuEDijLrijaVdLyxcbiAgICAgIGFsaWFzOiAnb3BlcmF0b3InXG4gICAgfSxcbiAgICBhc3NpZ25tZW50OiB7XG4gICAgICBwYXR0ZXJuOiAv4oaQLyxcbiAgICAgIGFsaWFzOiAna2V5d29yZCdcbiAgICB9LFxuICAgIHB1bmN0dWF0aW9uOiAvW1xcWztcXF0oKeKXh+KLhF0vLFxuICAgIGRmbjoge1xuICAgICAgcGF0dGVybjogL1t7feKNuuKNteKNtuKNueKIh+KNqzpdLyxcbiAgICAgIGFsaWFzOiAnYnVpbHRpbidcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGxlc2NyaXB0XG5hcHBsZXNjcmlwdC5kaXNwbGF5TmFtZSA9ICdhcHBsZXNjcmlwdCdcbmFwcGxlc2NyaXB0LmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYXBwbGVzY3JpcHQoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmFwcGxlc2NyaXB0ID0ge1xuICAgIGNvbW1lbnQ6IFtcbiAgICAgIC8vIEFsbG93IG9uZSBsZXZlbCBvZiBuZXN0aW5nXG4gICAgICAvXFwoXFwqKD86XFwoXFwqKD86W14qXXxcXCooPyFcXCkpKSpcXCpcXCl8KD8hXFwoXFwqKVtcXHNcXFNdKSo/XFwqXFwpLyxcbiAgICAgIC8tLS4rLyxcbiAgICAgIC8jLisvXG4gICAgXSxcbiAgICBzdHJpbmc6IC9cIig/OlxcXFwufFteXCJcXFxcXFxyXFxuXSkqXCIvLFxuICAgIG51bWJlcjogLyg/OlxcYlxcZCsoPzpcXC5cXGQqKT98XFxCXFwuXFxkKykoPzplLT9cXGQrKT9cXGIvaSxcbiAgICBvcGVyYXRvcjogW1xuICAgICAgL1smPeKJoOKJpOKJpSorXFwtXFwvw7deXXxbPD5dPT8vLFxuICAgICAgL1xcYig/Oig/OmJlZ2lufGVuZHxzdGFydClzPyB3aXRofCg/OmNvbnRhaW5zP3woPzpkb2VzIG5vdHxkb2Vzbid0KSBjb250YWluKXwoPzppc3xpc24ndHxpcyBub3QpICg/OmNvbnRhaW5lZCBieXxpbil8KD86KD86aXN8aXNuJ3R8aXMgbm90KSApPyg/OmdyZWF0ZXJ8bGVzcykgdGhhbig/OiBvciBlcXVhbCk/KD86IHRvKT98KD86Y29tZXN8KD86ZG9lcyBub3R8ZG9lc24ndCkgY29tZSkgKD86YWZ0ZXJ8YmVmb3JlKXwoPzppc3xpc24ndHxpcyBub3QpIGVxdWFsKD86IHRvKT98KD86KD86ZG9lcyBub3R8ZG9lc24ndCkgZXF1YWx8ZXF1YWwgdG98ZXF1YWxzfGlzIG5vdHxpc24ndCl8KD86YSApPyg/OnJlZig/OiB0byk/fHJlZmVyZW5jZSB0byl8KD86YW5kfGFzfGRpdnxtb2R8bm90fG9yKSlcXGIvXG4gICAgXSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmFib3V0fGFib3ZlfGFmdGVyfGFnYWluc3R8YXBhcnQgZnJvbXxhcm91bmR8YXNpZGUgZnJvbXxhdHxiYWNrfGJlZm9yZXxiZWdpbm5pbmd8YmVoaW5kfGJlbG93fGJlbmVhdGh8YmVzaWRlfGJldHdlZW58YnV0fGJ5fGNvbnNpZGVyaW5nfGNvbnRpbnVlfGNvcHl8ZG9lc3xlaWdodGh8ZWxzZXxlbmR8ZXF1YWx8ZXJyb3J8ZXZlcnl8ZXhpdHxmYWxzZXxmaWZ0aHxmaXJzdHxmb3J8Zm91cnRofGZyb218ZnJvbnR8Z2V0fGdpdmVufGdsb2JhbHxpZnxpZ25vcmluZ3xpbnxpbnN0ZWFkIG9mfGludG98aXN8aXR8aXRzfGxhc3R8bG9jYWx8bWV8bWlkZGxlfG15fG5pbnRofG9mfG9ufG9udG98b3V0IG9mfG92ZXJ8cHJvcHxwcm9wZXJ0eXxwdXR8cmVwZWF0fHJldHVybnxyZXR1cm5pbmd8c2Vjb25kfHNldHxzZXZlbnRofHNpbmNlfHNpeHRofHNvbWV8dGVsbHx0ZW50aHx0aGF0fHRoZXx0aGVufHRoaXJkfHRocm91Z2h8dGhydXx0aW1lb3V0fHRpbWVzfHRvfHRyYW5zYWN0aW9ufHRydWV8dHJ5fHVudGlsfHdoZXJlfHdoaWxlfHdob3NlfHdpdGh8d2l0aG91dClcXGIvLFxuICAgICdjbGFzcy1uYW1lJzpcbiAgICAgIC9cXGIoPzpQT1NJWCBmaWxlfFJHQiBjb2xvcnxhbGlhc3xhcHBsaWNhdGlvbnxib29sZWFufGNlbnRpbWV0ZXJzfGNlbnRpbWV0cmVzfGNsYXNzfGNvbnN0YW50fGN1YmljIGNlbnRpbWV0ZXJzfGN1YmljIGNlbnRpbWV0cmVzfGN1YmljIGZlZXR8Y3ViaWMgaW5jaGVzfGN1YmljIG1ldGVyc3xjdWJpYyBtZXRyZXN8Y3ViaWMgeWFyZHN8ZGF0ZXxkZWdyZWVzIENlbHNpdXN8ZGVncmVlcyBGYWhyZW5oZWl0fGRlZ3JlZXMgS2VsdmlufGZlZXR8ZmlsZXxnYWxsb25zfGdyYW1zfGluY2hlc3xpbnRlZ2VyfGtpbG9ncmFtc3xraWxvbWV0ZXJzfGtpbG9tZXRyZXN8bGlzdHxsaXRlcnN8bGl0cmVzfG1ldGVyc3xtZXRyZXN8bWlsZXN8bnVtYmVyfG91bmNlc3xwb3VuZHN8cXVhcnRzfHJlYWx8cmVjb3JkfHJlZmVyZW5jZXxzY3JpcHR8c3F1YXJlIGZlZXR8c3F1YXJlIGtpbG9tZXRlcnN8c3F1YXJlIGtpbG9tZXRyZXN8c3F1YXJlIG1ldGVyc3xzcXVhcmUgbWV0cmVzfHNxdWFyZSBtaWxlc3xzcXVhcmUgeWFyZHN8dGV4dHx5YXJkcylcXGIvLFxuICAgIHB1bmN0dWF0aW9uOiAvW3t9KCk6LMKswqvCu+OAiuOAi10vXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFxbFxuYXFsLmRpc3BsYXlOYW1lID0gJ2FxbCdcbmFxbC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGFxbChQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuYXFsID0ge1xuICAgIGNvbW1lbnQ6IC9cXC9cXC8uKnxcXC9cXCpbXFxzXFxTXSo/XFwqXFwvLyxcbiAgICBwcm9wZXJ0eToge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyhbeyxdXFxzKikoPzooPyFcXGQpXFx3K3woW1wiJ8K0YF0pKD86KD8hXFwyKVteXFxcXFxcclxcbl18XFxcXC4pKlxcMikoPz1cXHMqOikvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvKFtcIiddKSg/Oig/IVxcMSlbXlxcXFxcXHJcXG5dfFxcXFwuKSpcXDEvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBpZGVudGlmaWVyOiB7XG4gICAgICBwYXR0ZXJuOiAvKFvCtGBdKSg/Oig/IVxcMSlbXlxcXFxcXHJcXG5dfFxcXFwuKSpcXDEvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICB2YXJpYWJsZTogL0BAP1xcdysvLFxuICAgIGtleXdvcmQ6IFtcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLyhcXGJXSVRIXFxzKylDT1VOVCg/PVxccytJTlRPXFxiKS9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgL1xcYig/OkFHR1JFR0FURXxBTEx8QU5EfEFOWXxBU0N8Q09MTEVDVHxERVNDfERJU1RJTkNUfEZJTFRFUnxGT1J8R1JBUEh8SU58SU5CT1VORHxJTlNFUlR8SU5UT3xLX1BBVEhTfEtfU0hPUlRFU1RfUEFUSFN8TEVUfExJS0V8TElNSVR8Tk9ORXxOT1R8TlVMTHxPUnxPVVRCT1VORHxSRU1PVkV8UkVQTEFDRXxSRVRVUk58U0hPUlRFU1RfUEFUSHxTT1JUfFVQREFURXxVUFNFUlR8V0lORE9XfFdJVEgpXFxiL2ksIC8vIHBzZXVkbyBrZXl3b3JkcyBnZXQgYSBsb29rYmVoaW5kIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlc1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKF58W15cXHcuW10pKD86S0VFUHxQUlVORXxTRUFSQ0h8VE8pXFxiL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC8oXnxbXlxcdy5bXSkoPzpDVVJSRU5UfE5FV3xPTEQpXFxiLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogL1xcYk9QVElPTlMoPz1cXHMqXFx7KS9pXG4gICAgICB9XG4gICAgXSxcbiAgICBmdW5jdGlvbjogL1xcYig/IVxcZClcXHcrKD89XFxzKlxcKCkvLFxuICAgIGJvb2xlYW46IC9cXGIoPzpmYWxzZXx0cnVlKVxcYi9pLFxuICAgIHJhbmdlOiB7XG4gICAgICBwYXR0ZXJuOiAvXFwuXFwuLyxcbiAgICAgIGFsaWFzOiAnb3BlcmF0b3InXG4gICAgfSxcbiAgICBudW1iZXI6IFtcbiAgICAgIC9cXGIwYlswMV0rL2ksXG4gICAgICAvXFxiMHhbMC05YS1mXSsvaSxcbiAgICAgIC8oPzpcXEJcXC5cXGQrfFxcYig/OjB8WzEtOV1cXGQqKSg/OlxcLlxcZCspPykoPzplWystXT9cXGQrKT8vaVxuICAgIF0sXG4gICAgb3BlcmF0b3I6IC9cXCp7Mix9fFs9IV1+fFshPTw+XT0/fCYmfFxcfFxcfHxbLSsqLyVdLyxcbiAgICBwdW5jdHVhdGlvbjogLzo6fFs/LjosOygpW1xcXXt9XS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgcmVmcmFjdG9yQ3BwID0gcmVxdWlyZSgnLi9jcHAuanMnKVxubW9kdWxlLmV4cG9ydHMgPSBhcmR1aW5vXG5hcmR1aW5vLmRpc3BsYXlOYW1lID0gJ2FyZHVpbm8nXG5hcmR1aW5vLmFsaWFzZXMgPSBbJ2lubyddXG5mdW5jdGlvbiBhcmR1aW5vKFByaXNtKSB7XG4gIFByaXNtLnJlZ2lzdGVyKHJlZnJhY3RvckNwcClcbiAgUHJpc20ubGFuZ3VhZ2VzLmFyZHVpbm8gPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdjcHAnLCB7XG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzpTdHJpbmd8YXJyYXl8Ym9vbHxib29sZWFufGJyZWFrfGJ5dGV8Y2FzZXxjYXRjaHxjb250aW51ZXxkZWZhdWx0fGRvfGRvdWJsZXxlbHNlfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGdvdG98aWZ8aW58aW5zdGFuY2VvZnxpbnR8aW50ZWdlcnxsb25nfGxvb3B8bmV3fG51bGx8cmV0dXJufHNldHVwfHN0cmluZ3xzd2l0Y2h8dGhyb3d8dHJ5fHZvaWR8d2hpbGV8d29yZClcXGIvLFxuICAgIGNvbnN0YW50OlxuICAgICAgL1xcYig/OkFOQUxPR19NRVNTQUdFfERFRkFVTFR8RElHSVRBTF9NRVNTQUdFfEVYVEVSTkFMfEZJUk1BVEFfU1RSSU5HfEhJR0h8SU5QVVR8SU5QVVRfUFVMTFVQfElOVEVSTkFMfElOVEVSTkFMMVYxfElOVEVSTkFMMlY1NnxMRURfQlVJTFRJTnxMT1d8T1VUUFVUfFJFUE9SVF9BTkFMT0d8UkVQT1JUX0RJR0lUQUx8U0VUX1BJTl9NT0RFfFNZU0VYX1NUQVJUfFNZU1RFTV9SRVNFVClcXGIvLFxuICAgIGJ1aWx0aW46XG4gICAgICAvXFxiKD86QXVkaW98QlNTSUR8QnJpZGdlfENsaWVudHxDb25zb2xlfEVFUFJPTXxFc3Bsb3JhfEVzcGxvcmFURlR8RXRoZXJuZXR8RXRoZXJuZXRDbGllbnR8RXRoZXJuZXRTZXJ2ZXJ8RXRoZXJuZXRVRFB8RmlsZXxGaWxlSU98RmlsZVN5c3RlbXxGaXJtYXRhfEdQUlN8R1NNfEdTTUJhbmR8R1NNQ2xpZW50fEdTTU1vZGVtfEdTTVBJTnxHU01TY2FubmVyfEdTTVNlcnZlcnxHU01Wb2ljZUNhbGx8R1NNX1NNU3xIdHRwQ2xpZW50fElQQWRkcmVzc3xJUnJlYWR8S2V5Ym9hcmR8S2V5Ym9hcmRDb250cm9sbGVyfExpcXVpZENyeXN0YWx8TGlxdWlkQ3J5c3RhbF9JMkN8TWFpbGJveHxNb3VzZXxNb3VzZUNvbnRyb2xsZXJ8UEltYWdlfFByb2Nlc3N8UlNTSXxSb2JvdENvbnRyb2x8Um9ib3RNb3RvcnxTRHxTUEl8U1NJRHxTY2hlZHVsZXJ8U2VyaWFsfFNlcnZlcnxTZXJ2b3xTb2Z0d2FyZVNlcmlhbHxTdGVwcGVyfFN0cmVhbXxURlR8VGFza3xVU0JIb3N0fFdpRml8V2lGaUNsaWVudHxXaUZpU2VydmVyfFdpRmlVRFB8V2lyZXxZdW5DbGllbnR8WXVuU2VydmVyfGFic3xhZGRQYXJhbWV0ZXJ8YW5hbG9nUmVhZHxhbmFsb2dSZWFkUmVzb2x1dGlvbnxhbmFsb2dSZWZlcmVuY2V8YW5hbG9nV3JpdGV8YW5hbG9nV3JpdGVSZXNvbHV0aW9ufGFuc3dlckNhbGx8YXR0YWNofGF0dGFjaEdQUlN8YXR0YWNoSW50ZXJydXB0fGF0dGFjaGVkfGF1dG9zY3JvbGx8YXZhaWxhYmxlfGJhY2tncm91bmR8YmVlcHxiZWdpbnxiZWdpblBhY2tldHxiZWdpblNEfGJlZ2luU01TfGJlZ2luU3BlYWtlcnxiZWdpblRGVHxiZWdpblRyYW5zbWlzc2lvbnxiZWdpbldyaXRlfGJpdHxiaXRDbGVhcnxiaXRSZWFkfGJpdFNldHxiaXRXcml0ZXxibGlua3xibGlua1ZlcnNpb258YnVmZmVyfGNoYW5nZVBJTnxjaGVja1BJTnxjaGVja1BVS3xjaGVja1JlZ3xjaXJjbGV8Y2l0eU5hbWVSZWFkfGNpdHlOYW1lV3JpdGV8Y2xlYXJ8Y2xlYXJTY3JlZW58Y2xpY2t8Y2xvc2V8Y29tcGFzc1JlYWR8Y29uZmlnfGNvbm5lY3R8Y29ubmVjdGVkfGNvbnN0cmFpbnxjb3N8Y291bnRyeU5hbWVSZWFkfGNvdW50cnlOYW1lV3JpdGV8Y3JlYXRlQ2hhcnxjdXJzb3J8ZGVidWdQcmludHxkZWxheXxkZWxheU1pY3Jvc2Vjb25kc3xkZXRhY2h8ZGV0YWNoSW50ZXJydXB0fGRpZ2l0YWxSZWFkfGRpZ2l0YWxXcml0ZXxkaXNjb25uZWN0fGRpc3BsYXl8ZGlzcGxheUxvZ29zfGRyYXdCTVB8ZHJhd0NvbXBhc3N8ZW5jcnlwdGlvblR5cGV8ZW5kfGVuZFBhY2tldHxlbmRTTVN8ZW5kVHJhbnNtaXNzaW9ufGVuZFdyaXRlfGV4aXN0c3xleGl0VmFsdWV8ZmlsbHxmaW5kfGZpbmRVbnRpbHxmbHVzaHxnYXRld2F5SVB8Z2V0fGdldEFzeW5jaHJvbm91c2x5fGdldEJhbmR8Z2V0QnV0dG9ufGdldEN1cnJlbnRDYXJyaWVyfGdldElNRUl8Z2V0S2V5fGdldE1vZGlmaWVyc3xnZXRPZW1LZXl8Z2V0UElOVXNlZHxnZXRSZXN1bHR8Z2V0U2lnbmFsU3RyZW5ndGh8Z2V0U29ja2V0fGdldFZvaWNlQ2FsbFN0YXR1c3xnZXRYQ2hhbmdlfGdldFlDaGFuZ2V8aGFuZ0NhbGx8aGVpZ2h0fGhpZ2hCeXRlfGhvbWV8aW1hZ2V8aW50ZXJydXB0c3xpc0FjdGlvbkRvbmV8aXNEaXJlY3Rvcnl8aXNMaXN0ZW5pbmd8aXNQSU58aXNQcmVzc2VkfGlzVmFsaWR8a2V5UHJlc3NlZHxrZXlSZWxlYXNlZHxrZXlib2FyZFJlYWR8a25vYlJlYWR8bGVmdFRvUmlnaHR8bGluZXxsaW5lRm9sbG93Q29uZmlnfGxpc3RlbnxsaXN0ZW5PbkxvY2FsaG9zdHxsb2FkSW1hZ2V8bG9jYWxJUHxsb3dCeXRlfG1hY0FkZHJlc3N8bWFpbnRhaW58bWFwfG1heHxtZXNzYWdlQXZhaWxhYmxlfG1pY3Jvc3xtaWxsaXN8bWlufG1rZGlyfG1vdG9yc1N0b3B8bW90b3JzV3JpdGV8bW91c2VEcmFnZ2VkfG1vdXNlTW92ZWR8bW91c2VQcmVzc2VkfG1vdXNlUmVsZWFzZWR8bW92ZXxub0F1dG9zY3JvbGx8bm9CbGlua3xub0J1ZmZlcnxub0N1cnNvcnxub0Rpc3BsYXl8bm9GaWxsfG5vSW50ZXJydXB0c3xub0xpc3Rlbk9uTG9jYWxob3N0fG5vU3Ryb2tlfG5vVG9uZXxvblJlY2VpdmV8b25SZXF1ZXN0fG9wZW58b3Blbk5leHRGaWxlfG92ZXJmbG93fHBhcnNlQ29tbWFuZHxwYXJzZUZsb2F0fHBhcnNlSW50fHBhcnNlUGFja2V0fHBhdXNlTW9kZXxwZWVrfHBpbk1vZGV8cGxheUZpbGV8cGxheU1lbG9keXxwb2ludHxwb2ludFRvfHBvc2l0aW9ufHBvd3xwcmVwYXJlfHByZXNzfHByaW50fHByaW50RmlybXdhcmVWZXJzaW9ufHByaW50VmVyc2lvbnxwcmludGxufHByb2Nlc3N8cHJvY2Vzc0lucHV0fHB1bHNlSW58cHV0fHJhbmRvbXxyYW5kb21TZWVkfHJlYWR8cmVhZEFjY2VsZXJvbWV0ZXJ8cmVhZEJsdWV8cmVhZEJ1dHRvbnxyZWFkQnl0ZXN8cmVhZEJ5dGVzVW50aWx8cmVhZEdyZWVufHJlYWRKb3lzdGlja0J1dHRvbnxyZWFkSm95c3RpY2tTd2l0Y2h8cmVhZEpveXN0aWNrWHxyZWFkSm95c3RpY2tZfHJlYWRMaWdodFNlbnNvcnxyZWFkTWVzc2FnZXxyZWFkTWljcm9waG9uZXxyZWFkTmV0d29ya3N8cmVhZFJlZHxyZWFkU2xpZGVyfHJlYWRTdHJpbmd8cmVhZFN0cmluZ1VudGlsfHJlYWRUZW1wZXJhdHVyZXxyZWFkeXxyZWN0fHJlbGVhc2V8cmVsZWFzZUFsbHxyZW1vdGVJUHxyZW1vdGVOdW1iZXJ8cmVtb3RlUG9ydHxyZW1vdmV8cmVxdWVzdEZyb218cmV0cmlldmVDYWxsaW5nTnVtYmVyfHJld2luZERpcmVjdG9yeXxyaWdodFRvTGVmdHxybWRpcnxyb2JvdE5hbWVSZWFkfHJvYm90TmFtZVdyaXRlfHJ1bnxydW5Bc3luY2hyb25vdXNseXxydW5TaGVsbENvbW1hbmR8cnVuU2hlbGxDb21tYW5kQXN5bmNocm9ub3VzbHl8cnVubmluZ3xzY2FuTmV0d29ya3N8c2Nyb2xsRGlzcGxheUxlZnR8c2Nyb2xsRGlzcGxheVJpZ2h0fHNlZWt8c2VuZEFuYWxvZ3xzZW5kRGlnaXRhbFBvcnRQYWlyfHNlbmREaWdpdGFsUG9ydHN8c2VuZFN0cmluZ3xzZW5kU3lzZXh8c2VyaWFsRXZlbnR8c2V0QmFuZHxzZXRCaXRPcmRlcnxzZXRDbG9ja0RpdmlkZXJ8c2V0Q3Vyc29yfHNldEROU3xzZXREYXRhTW9kZXxzZXRGaXJtd2FyZVZlcnNpb258c2V0TW9kZXxzZXRQSU5Vc2VkfHNldFNwZWVkfHNldFRleHRTaXplfHNldFRpbWVvdXR8c2hpZnRJbnxzaGlmdE91dHxzaHV0ZG93bnxzaW58c2l6ZXxzcXJ0fHN0YXJ0TG9vcHxzdGVwfHN0b3B8c3Ryb2tlfHN1Ym5ldE1hc2t8c3dpdGNoUElOfHRhbnx0ZW1wb1dyaXRlfHRleHR8dG9uZXx0cmFuc2Zlcnx0dW5lV3JpdGV8dHVybnx1cGRhdGVJUnx1c2VyTmFtZVJlYWR8dXNlck5hbWVXcml0ZXx2b2ljZUNhbGx8d2FpdENvbnRpbnVlfHdpZHRofHdyaXRlfHdyaXRlQmx1ZXx3cml0ZUdyZWVufHdyaXRlSlNPTnx3cml0ZU1lc3NhZ2V8d3JpdGVNaWNyb3NlY29uZHN8d3JpdGVSR0J8d3JpdGVSZWR8eWllbGQpXFxiL1xuICB9KVxuICBQcmlzbS5sYW5ndWFnZXMuaW5vID0gUHJpc20ubGFuZ3VhZ2VzLmFyZHVpbm9cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFyZmZcbmFyZmYuZGlzcGxheU5hbWUgPSAnYXJmZidcbmFyZmYuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBhcmZmKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5hcmZmID0ge1xuICAgIGNvbW1lbnQ6IC8lLiovLFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLyhbXCInXSkoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAga2V5d29yZDogL0AoPzphdHRyaWJ1dGV8ZGF0YXxlbmR8cmVsYXRpb24pXFxiL2ksXG4gICAgbnVtYmVyOiAvXFxiXFxkKyg/OlxcLlxcZCspP1xcYi8sXG4gICAgcHVuY3R1YXRpb246IC9be30sXS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlkb2NcbmFzY2lpZG9jLmRpc3BsYXlOYW1lID0gJ2FzY2lpZG9jJ1xuYXNjaWlkb2MuYWxpYXNlcyA9IFsnYWRvYyddXG5mdW5jdGlvbiBhc2NpaWRvYyhQcmlzbSkge1xuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0ge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyheWyBcXHRdKilcXFsoPyFcXFspKD86KFtcIickYF0pKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKlxcMnxcXFsoPzpbXlxcW1xcXVxcXFxdfFxcXFwuKSpcXF18W15cXFtcXF1cXFxcXCInJGBdfFxcXFwuKSpcXF0vbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgcXVvdGVkOiB7XG4gICAgICAgICAgcGF0dGVybjogLyhbJGBdKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSpcXDEvLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgcHVuY3R1YXRpb246IC9eWyRgXXxbJGBdJC9cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGludGVycHJldGVkOiB7XG4gICAgICAgICAgcGF0dGVybjogLycoPzpbXidcXFxcXXxcXFxcLikqJy8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogL14nfCckLyAvLyBTZWUgcmVzdCBiZWxvd1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3RyaW5nOiAvXCIoPzpbXlwiXFxcXF18XFxcXC4pKlwiLyxcbiAgICAgICAgdmFyaWFibGU6IC9cXHcrKD89PSkvLFxuICAgICAgICBwdW5jdHVhdGlvbjogL15cXFt8XFxdJHwsLyxcbiAgICAgICAgb3BlcmF0b3I6IC89LyxcbiAgICAgICAgLy8gVGhlIG5lZ2F0aXZlIGxvb2stYWhlYWQgcHJldmVudHMgYmxhbmsgbWF0Y2hlc1xuICAgICAgICAnYXR0ci12YWx1ZSc6IC8oPyFeXFxzKyQpLisvXG4gICAgICB9XG4gICAgfVxuICAgIHZhciBhc2NpaWRvYyA9IChQcmlzbS5sYW5ndWFnZXMuYXNjaWlkb2MgPSB7XG4gICAgICAnY29tbWVudC1ibG9jayc6IHtcbiAgICAgICAgcGF0dGVybjogL14oXFwvezQsfSkoPzpcXHI/XFxufFxccikoPzpbXFxzXFxTXSooPzpcXHI/XFxufFxccikpPz9cXDEvbSxcbiAgICAgICAgYWxpYXM6ICdjb21tZW50J1xuICAgICAgfSxcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIHBhdHRlcm46IC9eXFx8PXszLH0oPzooPzpcXHI/XFxufFxccig/IVxcbikpLiopKj8oPzpcXHI/XFxufFxccilcXHw9ezMsfSQvbSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgc3BlY2lmaWVyczoge1xuICAgICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgICAgLyg/Oig/Oig/OlxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKylbKypdKD86WzxePl0oPzpcXC5bPF4+XSk/fFxcLls8Xj5dKT98WzxePl0oPzpcXC5bPF4+XSk/fFxcLls8Xj5dKVthLXpdKnxbYS16XSspKD89XFx8KS8sXG4gICAgICAgICAgICBhbGlhczogJ2F0dHItdmFsdWUnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdW5jdHVhdGlvbjoge1xuICAgICAgICAgICAgcGF0dGVybjogLyhefFteXFxcXF0pW3whXT0qLyxcbiAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgICB9IC8vIFNlZSByZXN0IGJlbG93XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAncGFzc3Rocm91Z2gtYmxvY2snOiB7XG4gICAgICAgIHBhdHRlcm46IC9eKFxcK3s0LH0pKD86XFxyP1xcbnxcXHIpKD86W1xcc1xcU10qKD86XFxyP1xcbnxcXHIpKT8/XFwxJC9tLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBwdW5jdHVhdGlvbjogL15cXCsrfFxcKyskLyAvLyBTZWUgcmVzdCBiZWxvd1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gTGl0ZXJhbCBibG9ja3MgYW5kIGxpc3RpbmcgYmxvY2tzXG4gICAgICAnbGl0ZXJhbC1ibG9jayc6IHtcbiAgICAgICAgcGF0dGVybjogL14oLXs0LH18XFwuezQsfSkoPzpcXHI/XFxufFxccikoPzpbXFxzXFxTXSooPzpcXHI/XFxufFxccikpPz9cXDEkL20sXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIHB1bmN0dWF0aW9uOiAvXig/Oi0rfFxcLispfCg/Oi0rfFxcLispJC8gLy8gU2VlIHJlc3QgYmVsb3dcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIFNpZGViYXIgYmxvY2tzLCBxdW90ZSBibG9ja3MsIGV4YW1wbGUgYmxvY2tzIGFuZCBvcGVuIGJsb2Nrc1xuICAgICAgJ290aGVyLWJsb2NrJzoge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC9eKC0tfFxcKns0LH18X3s0LH18PXs0LH0pKD86XFxyP1xcbnxcXHIpKD86W1xcc1xcU10qKD86XFxyP1xcbnxcXHIpKT8/XFwxJC9tLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBwdW5jdHVhdGlvbjogL14oPzotK3xcXCorfF8rfD0rKXwoPzotK3xcXCorfF8rfD0rKSQvIC8vIFNlZSByZXN0IGJlbG93XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBsaXN0LXB1bmN0dWF0aW9uIGFuZCBsaXN0LWxhYmVsIG11c3QgYXBwZWFyIGJlZm9yZSBpbmRlbnRlZC1ibG9ja1xuICAgICAgJ2xpc3QtcHVuY3R1YXRpb24nOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyheWyBcXHRdKikoPzotfFxcKnsxLDV9fFxcLnsxLDV9fCg/OlthLXpdfFxcZCspXFwufFt4dmldK1xcKSkoPz0gKS9pbSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICAnbGlzdC1sYWJlbCc6IHtcbiAgICAgICAgcGF0dGVybjogLyheWyBcXHRdKilbYS16XFxkXS4rKD86OnsyLDR9fDs7KSg/PVxccykvaW0sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnc3ltYm9sJ1xuICAgICAgfSxcbiAgICAgICdpbmRlbnRlZC1ibG9jayc6IHtcbiAgICAgICAgcGF0dGVybjogLygoXFxyP1xcbnxcXHIpXFwyKShbIFxcdF0rKVxcUy4qKD86KD86XFxyP1xcbnxcXHIpXFwzLispKig/PVxcMnsyfXwkKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiAvXlxcL1xcLy4qL20sXG4gICAgICB0aXRsZToge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC9eLisoPzpcXHI/XFxufFxccikoPzo9ezMsfXwtezMsfXx+ezMsfXxcXF57Myx9fFxcK3szLH0pJHxePXsxLDV9IC4rfF5cXC4oPyFbXFxzLl0pLiovbSxcbiAgICAgICAgYWxpYXM6ICdpbXBvcnRhbnQnLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBwdW5jdHVhdGlvbjogL14oPzpcXC58PSspfCg/Oj0rfC0rfH4rfFxcXit8XFwrKykkLyAvLyBTZWUgcmVzdCBiZWxvd1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ2F0dHJpYnV0ZS1lbnRyeSc6IHtcbiAgICAgICAgcGF0dGVybjogL146W146XFxyXFxuXSs6KD86IC4qPyg/OiBcXCsoPzpcXHI/XFxufFxccikuKj8pKik/JC9tLFxuICAgICAgICBhbGlhczogJ3RhZydcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLFxuICAgICAgaHI6IHtcbiAgICAgICAgcGF0dGVybjogL14nezMsfSQvbSxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICAncGFnZS1icmVhayc6IHtcbiAgICAgICAgcGF0dGVybjogL148ezMsfSQvbSxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICBhZG1vbml0aW9uOiB7XG4gICAgICAgIHBhdHRlcm46IC9eKD86Q0FVVElPTnxJTVBPUlRBTlR8Tk9URXxUSVB8V0FSTklORyk6L20sXG4gICAgICAgIGFsaWFzOiAna2V5d29yZCdcbiAgICAgIH0sXG4gICAgICBjYWxsb3V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXR0ZXJuOiAvKF5bIFxcdF0qKTw/XFxkKj4vbSxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnc3ltYm9sJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjogLzxcXGQrPi8sXG4gICAgICAgICAgYWxpYXM6ICdzeW1ib2wnXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBtYWNybzoge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC9cXGJbYS16XFxkXVthLXpcXGQtXSo6Oj8oPzpbXlxcc1xcW1xcXV0qXFxbKD86W15cXF1cXFxcXCInXXwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKlxcMXxcXFxcLikqXFxdKS8sXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGZ1bmN0aW9uOiAvXlthLXpcXGQtXSsoPz06KS8sXG4gICAgICAgICAgcHVuY3R1YXRpb246IC9eOjo/LyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvKD86XFxbKD86W15cXF1cXFxcXCInXXwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKlxcMXxcXFxcLikqXFxdKS8sXG4gICAgICAgICAgICBpbnNpZGU6IGF0dHJpYnV0ZXMuaW5zaWRlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaW5saW5lOiB7XG4gICAgICAgIC8qXG5UaGUgaW5pdGlhbCBsb29rLWJlaGluZCBwcmV2ZW50cyB0aGUgaGlnaGxpZ2h0aW5nIG9mIGVzY2FwZWQgcXVvdGVkIHRleHQuXG5RdW90ZWQgdGV4dCBjYW4gYmUgbXVsdGktbGluZSBidXQgY2Fubm90IHNwYW4gYW4gZW1wdHkgbGluZS5cbkFsbCBxdW90ZWQgdGV4dCBjYW4gaGF2ZSBhdHRyaWJ1dGVzIGJlZm9yZSBbZm9vYmFyLCAnZm9vYmFyJywgYmF6PVwiYmFyXCJdLlxuRmlyc3QsIHdlIGhhbmRsZSB0aGUgY29uc3RyYWluZWQgcXVvdGVzLlxuVGhvc2UgbXVzdCBiZSBib3VuZGVkIGJ5IG5vbi13b3JkIGNoYXJzIGFuZCBjYW5ub3QgaGF2ZSBzcGFjZXMgYmV0d2VlbiB0aGUgZGVsaW1pdGVyIGFuZCB0aGUgZmlyc3QgY2hhci5cblRoZXkgYXJlLCBpbiBvcmRlcjogX2VtcGhhc2lzXywgYGBkb3VibGUgcXVvdGVzJycsIGBzaW5nbGUgcXVvdGVzJywgYG1vbm9zcGFjZWAsICdlbXBoYXNpcycsICpzdHJvbmcqLCArbW9ub3NwYWNlKyBhbmQgI3VucXVvdGVkI1xuVGhlbiB3ZSBoYW5kbGUgdGhlIHVuY29uc3RyYWluZWQgcXVvdGVzLlxuVGhvc2UgZG8gbm90IGhhdmUgdGhlIHJlc3RyaWN0aW9ucyBvZiB0aGUgY29uc3RyYWluZWQgcXVvdGVzLlxuVGhleSBhcmUsIGluIG9yZGVyOiBfX2VtcGhhc2lzX18sICoqc3Ryb25nKiosICsrbW9ub3NwYWNlKyssICsrK3Bhc3N0aHJvdWdoKysrLCAjI3VucXVvdGVkIyMsICQkcGFzc3Rocm91Z2gkJCwgfnN1YnNjcmlwdH4sIF5zdXBlcnNjcmlwdF4sIHthdHRyaWJ1dGUtcmVmZXJlbmNlfSwgW1thbmNob3JdXSwgW1tbYmlibGlvZ3JhcGh5IGFuY2hvcl1dXSwgPDx4cmVmPj4sICgoKGluZGV4ZXMpKSkgYW5kICgoaW5kZXhlcykpXG4qL1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC8oXnxbXlxcXFxdKSg/Oig/OlxcQlxcWyg/OlteXFxdXFxcXFwiJ118KFtcIiddKSg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSpcXDJ8XFxcXC4pKlxcXSk/KD86XFxiXyg/IVxccykoPzogX3xbXl9cXFxcXFxyXFxuXXxcXFxcLikrKD86KD86XFxyP1xcbnxcXHIpKD86IF98W15fXFxcXFxcclxcbl18XFxcXC4pKykqX1xcYnxcXEJgYCg/IVxccykuKz8oPzooPzpcXHI/XFxufFxccikuKz8pKicnXFxCfFxcQmAoPyFcXHMpKD86W15gJ1xcc118XFxzK1xcUykrWydgXVxcQnxcXEIoWycqKyNdKSg/IVxccykoPzogXFwzfCg/IVxcMylbXlxcXFxcXHJcXG5dfFxcXFwuKSsoPzooPzpcXHI/XFxufFxccikoPzogXFwzfCg/IVxcMylbXlxcXFxcXHJcXG5dfFxcXFwuKSspKlxcM1xcQil8KD86XFxbKD86W15cXF1cXFxcXCInXXwoW1wiJ10pKD86KD8hXFw0KVteXFxcXF18XFxcXC4pKlxcNHxcXFxcLikqXFxdKT8oPzooX198XFwqXFwqfFxcK1xcK1xcKz98IyN8XFwkXFwkfFt+Xl0pLis/KD86KD86XFxyP1xcbnxcXHIpLis/KSpcXDV8XFx7W159XFxyXFxuXStcXH18XFxbXFxbXFxbPy4rPyg/Oig/Olxccj9cXG58XFxyKS4rPykqXFxdP1xcXVxcXXw8PC4rPyg/Oig/Olxccj9cXG58XFxyKS4rPykqPj58XFwoXFwoXFwoPy4rPyg/Oig/Olxccj9cXG58XFxyKS4rPykqXFwpP1xcKVxcKSkpL20sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMsXG4gICAgICAgICAgdXJsOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvXig/OlxcW1xcW1xcWz8uKz9cXF0/XFxdXFxdfDw8Lis/Pj4pJC8sXG4gICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgcHVuY3R1YXRpb246IC9eKD86XFxbXFxbXFxbP3w8PCl8KD86XFxdXFxdXFxdP3w+PikkL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2F0dHJpYnV0ZS1yZWYnOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvXlxcey4rXFx9JC8sXG4gICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF5cXHspW2EtelxcZCwrXy1dKy8sXG4gICAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcGVyYXRvcjogL15bPT8hIyVAJF18ISg/PVs6fV0pLyxcbiAgICAgICAgICAgICAgcHVuY3R1YXRpb246IC9eXFx7fFxcfSR8Ojo/L1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaXRhbGljOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvXihbJ19dKVtcXHNcXFNdK1xcMSQvLFxuICAgICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvXig/OicnP3xfXz8pfCg/OicnP3xfXz8pJC9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvbGQ6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IC9eXFwqW1xcc1xcU10rXFwqJC8sXG4gICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgcHVuY3R1YXRpb246IC9eXFwqXFwqP3xcXCpcXCo/JC9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHB1bmN0dWF0aW9uOlxuICAgICAgICAgICAgL14oPzpgYD98XFwrezEsM318IyM/fFxcJFxcJHxbfl5dfFxcKFxcKFxcKD8pfCg/OicnP3xcXCt7MSwzfXwjIz98XFwkXFwkfFt+XmBdfFxcKT9cXClcXCkpJC9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlcGxhY2VtZW50OiB7XG4gICAgICAgIHBhdHRlcm46IC9cXCgoPzpDfFJ8VE0pXFwpLyxcbiAgICAgICAgYWxpYXM6ICdidWlsdGluJ1xuICAgICAgfSxcbiAgICAgIGVudGl0eTogLyYjP1tcXGRhLXpdezEsOH07L2ksXG4gICAgICAnbGluZS1jb250aW51YXRpb24nOiB7XG4gICAgICAgIHBhdHRlcm46IC8oXnwgKVxcKyQvbSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH1cbiAgICB9KSAvLyBBbGxvdyBzb21lIG5lc3RpbmcuIFRoZXJlIGlzIG5vIHJlY3Vyc2lvbiB0aG91Z2gsIHNvIGNsb25pbmcgc2hvdWxkIG5vdCBiZSBuZWVkZWQuXG4gICAgZnVuY3Rpb24gY29weUZyb21Bc2NpaURvYyhrZXlzKSB7XG4gICAgICBrZXlzID0ga2V5cy5zcGxpdCgnICcpXG4gICAgICB2YXIgbyA9IHt9XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIG9ba2V5c1tpXV0gPSBhc2NpaWRvY1trZXlzW2ldXVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9cbiAgICB9XG4gICAgYXR0cmlidXRlcy5pbnNpZGVbJ2ludGVycHJldGVkJ10uaW5zaWRlLnJlc3QgPSBjb3B5RnJvbUFzY2lpRG9jKFxuICAgICAgJ21hY3JvIGlubGluZSByZXBsYWNlbWVudCBlbnRpdHknXG4gICAgKVxuICAgIGFzY2lpZG9jWydwYXNzdGhyb3VnaC1ibG9jayddLmluc2lkZS5yZXN0ID0gY29weUZyb21Bc2NpaURvYygnbWFjcm8nKVxuICAgIGFzY2lpZG9jWydsaXRlcmFsLWJsb2NrJ10uaW5zaWRlLnJlc3QgPSBjb3B5RnJvbUFzY2lpRG9jKCdjYWxsb3V0JylcbiAgICBhc2NpaWRvY1sndGFibGUnXS5pbnNpZGUucmVzdCA9IGNvcHlGcm9tQXNjaWlEb2MoXG4gICAgICAnY29tbWVudC1ibG9jayBwYXNzdGhyb3VnaC1ibG9jayBsaXRlcmFsLWJsb2NrIG90aGVyLWJsb2NrIGxpc3QtcHVuY3R1YXRpb24gaW5kZW50ZWQtYmxvY2sgY29tbWVudCB0aXRsZSBhdHRyaWJ1dGUtZW50cnkgYXR0cmlidXRlcyBociBwYWdlLWJyZWFrIGFkbW9uaXRpb24gbGlzdC1sYWJlbCBjYWxsb3V0IG1hY3JvIGlubGluZSByZXBsYWNlbWVudCBlbnRpdHkgbGluZS1jb250aW51YXRpb24nXG4gICAgKVxuICAgIGFzY2lpZG9jWydvdGhlci1ibG9jayddLmluc2lkZS5yZXN0ID0gY29weUZyb21Bc2NpaURvYyhcbiAgICAgICd0YWJsZSBsaXN0LXB1bmN0dWF0aW9uIGluZGVudGVkLWJsb2NrIGNvbW1lbnQgYXR0cmlidXRlLWVudHJ5IGF0dHJpYnV0ZXMgaHIgcGFnZS1icmVhayBhZG1vbml0aW9uIGxpc3QtbGFiZWwgbWFjcm8gaW5saW5lIHJlcGxhY2VtZW50IGVudGl0eSBsaW5lLWNvbnRpbnVhdGlvbidcbiAgICApXG4gICAgYXNjaWlkb2NbJ3RpdGxlJ10uaW5zaWRlLnJlc3QgPSBjb3B5RnJvbUFzY2lpRG9jKFxuICAgICAgJ21hY3JvIGlubGluZSByZXBsYWNlbWVudCBlbnRpdHknXG4gICAgKSAvLyBQbHVnaW4gdG8gbWFrZSBlbnRpdHkgdGl0bGUgc2hvdyB0aGUgcmVhbCBlbnRpdHksIGlkZWEgYnkgUm9tYW4gS29tYXJvdlxuICAgIFByaXNtLmhvb2tzLmFkZCgnd3JhcCcsIGZ1bmN0aW9uIChlbnYpIHtcbiAgICAgIGlmIChlbnYudHlwZSA9PT0gJ2VudGl0eScpIHtcbiAgICAgICAgZW52LmF0dHJpYnV0ZXNbJ3RpdGxlJ10gPSBlbnYuY29udGVudC52YWx1ZS5yZXBsYWNlKC8mYW1wOy8sICcmJylcbiAgICAgIH1cbiAgICB9KVxuICAgIFByaXNtLmxhbmd1YWdlcy5hZG9jID0gUHJpc20ubGFuZ3VhZ2VzLmFzY2lpZG9jXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXNtNjUwMlxuYXNtNjUwMi5kaXNwbGF5TmFtZSA9ICdhc202NTAyJ1xuYXNtNjUwMi5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGFzbTY1MDIoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmFzbTY1MDIgPSB7XG4gICAgY29tbWVudDogLzsuKi8sXG4gICAgZGlyZWN0aXZlOiB7XG4gICAgICBwYXR0ZXJuOiAvXFwuXFx3Kyg/PSApLyxcbiAgICAgIGFsaWFzOiAncHJvcGVydHknXG4gICAgfSxcbiAgICBzdHJpbmc6IC8oW1wiJ2BdKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLFxuICAgICdvcC1jb2RlJzoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgL1xcYig/OkFEQ3xBTkR8QVNMfEJDQ3xCQ1N8QkVRfEJJVHxCTUl8Qk5FfEJQTHxCUkt8QlZDfEJWU3xDTEN8Q0xEfENMSXxDTFZ8Q01QfENQWHxDUFl8REVDfERFWHxERVl8RU9SfElOQ3xJTlh8SU5ZfEpNUHxKU1J8TERBfExEWHxMRFl8TFNSfE5PUHxPUkF8UEhBfFBIUHxQTEF8UExQfFJPTHxST1J8UlRJfFJUU3xTQkN8U0VDfFNFRHxTRUl8U1RBfFNUWHxTVFl8VEFYfFRBWXxUU1h8VFhBfFRYU3xUWUF8YWRjfGFuZHxhc2x8YmNjfGJjc3xiZXF8Yml0fGJtaXxibmV8YnBsfGJya3xidmN8YnZzfGNsY3xjbGR8Y2xpfGNsdnxjbXB8Y3B4fGNweXxkZWN8ZGV4fGRleXxlb3J8aW5jfGlueHxpbnl8am1wfGpzcnxsZGF8bGR4fGxkeXxsc3J8bm9wfG9yYXxwaGF8cGhwfHBsYXxwbHB8cm9sfHJvcnxydGl8cnRzfHNiY3xzZWN8c2VkfHNlaXxzdGF8c3R4fHN0eXx0YXh8dGF5fHRzeHx0eGF8dHhzfHR5YSlcXGIvLFxuICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgIH0sXG4gICAgJ2hleC1udW1iZXInOiB7XG4gICAgICBwYXR0ZXJuOiAvIz9cXCRbXFxkYS1mXXsxLDR9XFxiL2ksXG4gICAgICBhbGlhczogJ251bWJlcidcbiAgICB9LFxuICAgICdiaW5hcnktbnVtYmVyJzoge1xuICAgICAgcGF0dGVybjogLyM/JVswMV0rXFxiLyxcbiAgICAgIGFsaWFzOiAnbnVtYmVyJ1xuICAgIH0sXG4gICAgJ2RlY2ltYWwtbnVtYmVyJzoge1xuICAgICAgcGF0dGVybjogLyM/XFxiXFxkK1xcYi8sXG4gICAgICBhbGlhczogJ251bWJlcidcbiAgICB9LFxuICAgIHJlZ2lzdGVyOiB7XG4gICAgICBwYXR0ZXJuOiAvXFxiW3h5YV1cXGIvaSxcbiAgICAgIGFsaWFzOiAndmFyaWFibGUnXG4gICAgfSxcbiAgICBwdW5jdHVhdGlvbjogL1soKSw6XS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXNtYXRtZWxcbmFzbWF0bWVsLmRpc3BsYXlOYW1lID0gJ2FzbWF0bWVsJ1xuYXNtYXRtZWwuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBhc21hdG1lbChQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuYXNtYXRtZWwgPSB7XG4gICAgY29tbWVudDoge1xuICAgICAgcGF0dGVybjogLzsuKi8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLyhbXCInYF0pKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIGNvbnN0YW50OiAvXFxiKD86UE9SVFtBLVpdfEREUltBLVpdfCg/OkREfFApW0EtWl0oPzpcXGR8WzAtMl1cXGR8M1swMV0pKVxcYi8sXG4gICAgZGlyZWN0aXZlOiB7XG4gICAgICBwYXR0ZXJuOiAvXFwuXFx3Kyg/PSApLyxcbiAgICAgIGFsaWFzOiAncHJvcGVydHknXG4gICAgfSxcbiAgICAnci1yZWdpc3Rlcic6IHtcbiAgICAgIHBhdHRlcm46IC9cXGJyKD86XFxkfFsxMl1cXGR8M1swMV0pXFxiLyxcbiAgICAgIGFsaWFzOiAndmFyaWFibGUnXG4gICAgfSxcbiAgICAnb3AtY29kZSc6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9cXGIoPzpBREN8QUREfEFESVd8QU5EfEFOREl8QVNSfEJDTFJ8QkxEfEJSQkN8QlJCU3xCUkNDfEJSQ1N8QlJFQUt8QlJFUXxCUkdFfEJSSEN8QlJIU3xCUklEfEJSSUV8QlJMT3xCUkxUfEJSTUl8QlJORXxCUlBMfEJSU0h8QlJUQ3xCUlRTfEJSVkN8QlJWU3xCU0VUfEJTVHxDQUxMfENCSXxDQlJ8Q0xDfENMSHxDTEl8Q0xOfENMUnxDTFN8Q0xUfENMVnxDTFp8Q09NfENQfENQQ3xDUEl8Q1BTRXxERUN8REVTfEVJQ0FMTHxFSUpNUHxFTFBNfEVPUnxGTVVMfEZNVUxTfEZNVUxTVXxJQ0FMTHxJSk1QfElOfElOQ3xKTVB8TEFDfExBU3xMQVR8TER8TERbQS1aYS16MC05XXxMUE18TFNMfExTUnxNT1Z8TU9WV3xNVUx8TVVMU3xNVUxTVXxORUd8Tk9QfE9SfE9SSXxPVVR8UE9QfFBVU0h8UkNBTEx8UkVUfFJFVEl8UkpNUHxST0x8Uk9SfFNCQ3xTQkNJfFNCSXxTQklDfFNCSVN8U0JJV3xTQlJ8U0JSQ3xTQlJTfFNFQ3xTRUh8U0VJfFNFTnxTRVJ8U0VTfFNFVHxTRVZ8U0VafFNMRUVQfFNQTXxTVHxTVFtBLVowLTldfFNVQnxTVUJJfFNXQVB8VFNUfFdEUnxYQ0h8YWRjfGFkZHxhZGl3fGFuZHxhbmRpfGFzcnxiY2xyfGJsZHxicmJjfGJyYnN8YnJjY3xicmNzfGJyZWFrfGJyZXF8YnJnZXxicmhjfGJyaHN8YnJpZHxicmllfGJybG98YnJsdHxicm1pfGJybmV8YnJwbHxicnNofGJydGN8YnJ0c3xicnZjfGJydnN8YnNldHxic3R8Y2FsbHxjYml8Y2JyfGNsY3xjbGh8Y2xpfGNsbnxjbHJ8Y2xzfGNsdHxjbHZ8Y2x6fGNvbXxjcHxjcGN8Y3BpfGNwc2V8ZGVjfGRlc3xlaWNhbGx8ZWlqbXB8ZWxwbXxlb3J8Zm11bHxmbXVsc3xmbXVsc3V8aWNhbGx8aWptcHxpbnxpbmN8am1wfGxhY3xsYXN8bGF0fGxkfGxkW2EtejAtOV18bHBtfGxzbHxsc3J8bW92fG1vdnd8bXVsfG11bHN8bXVsc3V8bmVnfG5vcHxvcnxvcml8b3V0fHBvcHxwdXNofHJjYWxsfHJldHxyZXRpfHJqbXB8cm9sfHJvcnxzYmN8c2JjaXxzYml8c2JpY3xzYmlzfHNiaXd8c2JyfHNicmN8c2Jyc3xzZWN8c2VofHNlaXxzZW58c2VyfHNlc3xzZXR8c2V2fHNlenxzbGVlcHxzcG18c3R8c3RbYS16QS1aMC05XXxzdWJ8c3ViaXxzd2FwfHRzdHx3ZHJ8eGNoKVxcYi8sXG4gICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgfSxcbiAgICAnaGV4LW51bWJlcic6IHtcbiAgICAgIHBhdHRlcm46IC8jP1xcJFtcXGRhLWZdezIsNH1cXGIvaSxcbiAgICAgIGFsaWFzOiAnbnVtYmVyJ1xuICAgIH0sXG4gICAgJ2JpbmFyeS1udW1iZXInOiB7XG4gICAgICBwYXR0ZXJuOiAvIz8lWzAxXStcXGIvLFxuICAgICAgYWxpYXM6ICdudW1iZXInXG4gICAgfSxcbiAgICAnZGVjaW1hbC1udW1iZXInOiB7XG4gICAgICBwYXR0ZXJuOiAvIz9cXGJcXGQrXFxiLyxcbiAgICAgIGFsaWFzOiAnbnVtYmVyJ1xuICAgIH0sXG4gICAgcmVnaXN0ZXI6IHtcbiAgICAgIHBhdHRlcm46IC9cXGJbYWN6bnZzaHRpeHldXFxiL2ksXG4gICAgICBhbGlhczogJ3ZhcmlhYmxlJ1xuICAgIH0sXG4gICAgb3BlcmF0b3I6IC8+Pj0/fDw8PT98JiY/fFxcfFxcfD98Wy0rKi8lJnxeIT08Pj9dPT8vLFxuICAgIHB1bmN0dWF0aW9uOiAvWygpLDpdL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcbnZhciByZWZyYWN0b3JDc2hhcnAgPSByZXF1aXJlKCcuL2NzaGFycC5qcycpXG5tb2R1bGUuZXhwb3J0cyA9IGFzcG5ldFxuYXNwbmV0LmRpc3BsYXlOYW1lID0gJ2FzcG5ldCdcbmFzcG5ldC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGFzcG5ldChQcmlzbSkge1xuICBQcmlzbS5yZWdpc3RlcihyZWZyYWN0b3JDc2hhcnApXG4gIFByaXNtLmxhbmd1YWdlcy5hc3BuZXQgPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdtYXJrdXAnLCB7XG4gICAgJ3BhZ2UtZGlyZWN0aXZlJzoge1xuICAgICAgcGF0dGVybjogLzwlXFxzKkAuKiU+LyxcbiAgICAgIGFsaWFzOiAndGFnJyxcbiAgICAgIGluc2lkZToge1xuICAgICAgICAncGFnZS1kaXJlY3RpdmUnOiB7XG4gICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgIC88JVxccypAXFxzKig/OkFzc2VtYmx5fENvbnRyb2x8SW1wbGVtZW50c3xJbXBvcnR8TWFzdGVyKD86VHlwZSk/fE91dHB1dENhY2hlfFBhZ2V8UHJldmlvdXNQYWdlVHlwZXxSZWZlcmVuY2V8UmVnaXN0ZXIpP3wlPi9pLFxuICAgICAgICAgIGFsaWFzOiAndGFnJ1xuICAgICAgICB9LFxuICAgICAgICByZXN0OiBQcmlzbS5sYW5ndWFnZXMubWFya3VwLnRhZy5pbnNpZGVcbiAgICAgIH1cbiAgICB9LFxuICAgIGRpcmVjdGl2ZToge1xuICAgICAgcGF0dGVybjogLzwlLiolPi8sXG4gICAgICBhbGlhczogJ3RhZycsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgZGlyZWN0aXZlOiB7XG4gICAgICAgICAgcGF0dGVybjogLzwlXFxzKj9bJD0lIzpdezAsMn18JT4vLFxuICAgICAgICAgIGFsaWFzOiAndGFnJ1xuICAgICAgICB9LFxuICAgICAgICByZXN0OiBQcmlzbS5sYW5ndWFnZXMuY3NoYXJwXG4gICAgICB9XG4gICAgfVxuICB9KSAvLyBSZWdleHAgY29waWVkIGZyb20gcHJpc20tbWFya3VwLCB3aXRoIGEgbmVnYXRpdmUgbG9vay1haGVhZCBhZGRlZFxuICBQcmlzbS5sYW5ndWFnZXMuYXNwbmV0LnRhZy5wYXR0ZXJuID1cbiAgICAvPCg/ISUpXFwvP1teXFxzPlxcL10rKD86XFxzK1teXFxzPlxcLz1dKyg/Oj0oPzooXCJ8JykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pKlxcMXxbXlxccydcIj49XSspKT8pKlxccypcXC8/Pi8gLy8gbWF0Y2ggZGlyZWN0aXZlcyBvZiBhdHRyaWJ1dGUgdmFsdWUgZm9vPVwiPCUgQmFyICU+XCJcbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcbiAgICAnaW5zaWRlJyxcbiAgICAncHVuY3R1YXRpb24nLFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogUHJpc20ubGFuZ3VhZ2VzLmFzcG5ldFsnZGlyZWN0aXZlJ11cbiAgICB9LFxuICAgIFByaXNtLmxhbmd1YWdlcy5hc3BuZXQudGFnLmluc2lkZVsnYXR0ci12YWx1ZSddXG4gIClcbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnYXNwbmV0JywgJ2NvbW1lbnQnLCB7XG4gICAgJ2FzcC1jb21tZW50Jzoge1xuICAgICAgcGF0dGVybjogLzwlLS1bXFxzXFxTXSo/LS0lPi8sXG4gICAgICBhbGlhczogWydhc3AnLCAnY29tbWVudCddXG4gICAgfVxuICB9KSAvLyBzY3JpcHQgcnVuYXQ9XCJzZXJ2ZXJcIiBjb250YWlucyBjc2hhcnAsIG5vdCBqYXZhc2NyaXB0XG4gIFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoXG4gICAgJ2FzcG5ldCcsXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHQgPyAnc2NyaXB0JyA6ICd0YWcnLFxuICAgIHtcbiAgICAgICdhc3Atc2NyaXB0Jzoge1xuICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgIC8oPHNjcmlwdCg/PS4qcnVuYXQ9WydcIl0/c2VydmVyXFxiKVtePl0qPilbXFxzXFxTXSo/KD89PFxcL3NjcmlwdD4pL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiBbJ2FzcCcsICdzY3JpcHQnXSxcbiAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMuY3NoYXJwIHx8IHt9XG4gICAgICB9XG4gICAgfVxuICApXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhdXRvaG90a2V5XG5hdXRvaG90a2V5LmRpc3BsYXlOYW1lID0gJ2F1dG9ob3RrZXknXG5hdXRvaG90a2V5LmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYXV0b2hvdGtleShQcmlzbSkge1xuICAvLyBOT1RFUyAtIGZvbGxvd3MgZmlyc3QtZmlyc3QgaGlnaGxpZ2h0IG1ldGhvZCwgYmxvY2sgaXMgbG9ja2VkIGFmdGVyIGhpZ2hsaWdodCwgZGlmZmVyZW50IGZyb20gU3ludGF4SGxcbiAgUHJpc20ubGFuZ3VhZ2VzLmF1dG9ob3RrZXkgPSB7XG4gICAgY29tbWVudDogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKTsuKi8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyheW1xcdCBdKilcXC9cXCooPzpbXFxyXFxuXSg/IVsgXFx0XSpcXCpcXC8pfFteXFxyXFxuXSkqKD86W1xcclxcbl1bIFxcdF0qXFwqXFwvKT8vbSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9XG4gICAgXSxcbiAgICB0YWc6IHtcbiAgICAgIC8vIGxhYmVsc1xuICAgICAgcGF0dGVybjogL14oWyBcXHRdKilbXlxccyxgXCI6XSsoPz06WyBcXHRdKiQpL20sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBzdHJpbmc6IC9cIig/OlteXCJcXG5cXHJdfFwiXCIpKlwiLyxcbiAgICB2YXJpYWJsZTogLyVcXHcrJS8sXG4gICAgbnVtYmVyOiAvXFxiMHhbXFxkQS1GYS1mXStcXGJ8KD86XFxiXFxkKyg/OlxcLlxcZCopP3xcXEJcXC5cXGQrKSg/OltFZV0tP1xcZCspPy8sXG4gICAgb3BlcmF0b3I6XG4gICAgICAvXFw/fFxcL1xcLz89P3w6PXxcXHxbPXxdP3wmWz0mXT98XFwrWz0rXT98LVs9LV0/fFxcKls9Kl0/fDwoPzo8PT98Pnw9KT98Pj4/PT98Wy5eIT1+XT0/fFxcYig/OkFORHxOT1R8T1IpXFxiLyxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvLFxuICAgIHNlbGVjdG9yOlxuICAgICAgL1xcYig/OkF1dG9UcmltfEJsb2NrSW5wdXR8QnJlYWt8Q2xpY2t8Q2xpcFdhaXR8Q29udGludWV8Q29udHJvbHxDb250cm9sQ2xpY2t8Q29udHJvbEZvY3VzfENvbnRyb2xHZXR8Q29udHJvbEdldEZvY3VzfENvbnRyb2xHZXRQb3N8Q29udHJvbEdldFRleHR8Q29udHJvbE1vdmV8Q29udHJvbFNlbmR8Q29udHJvbFNlbmRSYXd8Q29udHJvbFNldFRleHR8Q29vcmRNb2RlfENyaXRpY2FsfERldGVjdEhpZGRlblRleHR8RGV0ZWN0SGlkZGVuV2luZG93c3xEcml2ZXxEcml2ZUdldHxEcml2ZVNwYWNlRnJlZXxFbnZBZGR8RW52RGl2fEVudkdldHxFbnZNdWx0fEVudlNldHxFbnZTdWJ8RW52VXBkYXRlfEV4aXR8RXhpdEFwcHxGaWxlQXBwZW5kfEZpbGVDb3B5fEZpbGVDb3B5RGlyfEZpbGVDcmVhdGVEaXJ8RmlsZUNyZWF0ZVNob3J0Y3V0fEZpbGVEZWxldGV8RmlsZUVuY29kaW5nfEZpbGVHZXRBdHRyaWJ8RmlsZUdldFNob3J0Y3V0fEZpbGVHZXRTaXplfEZpbGVHZXRUaW1lfEZpbGVHZXRWZXJzaW9ufEZpbGVJbnN0YWxsfEZpbGVNb3ZlfEZpbGVNb3ZlRGlyfEZpbGVSZWFkfEZpbGVSZWFkTGluZXxGaWxlUmVjeWNsZXxGaWxlUmVjeWNsZUVtcHR5fEZpbGVSZW1vdmVEaXJ8RmlsZVNlbGVjdEZpbGV8RmlsZVNlbGVjdEZvbGRlcnxGaWxlU2V0QXR0cmlifEZpbGVTZXRUaW1lfEZvcm1hdFRpbWV8R2V0S2V5U3RhdGV8R29zdWJ8R290b3xHcm91cEFjdGl2YXRlfEdyb3VwQWRkfEdyb3VwQ2xvc2V8R3JvdXBEZWFjdGl2YXRlfEd1aXxHdWlDb250cm9sfEd1aUNvbnRyb2xHZXR8SG90a2V5fEltYWdlU2VhcmNofEluaURlbGV0ZXxJbmlSZWFkfEluaVdyaXRlfElucHV0fElucHV0Qm94fEtleVdhaXR8TGlzdEhvdGtleXN8TGlzdExpbmVzfExpc3RWYXJzfExvb3B8TWVudXxNb3VzZUNsaWNrfE1vdXNlQ2xpY2tEcmFnfE1vdXNlR2V0UG9zfE1vdXNlTW92ZXxNc2dCb3h8T25FeGl0fE91dHB1dERlYnVnfFBhdXNlfFBpeGVsR2V0Q29sb3J8UGl4ZWxTZWFyY2h8UG9zdE1lc3NhZ2V8UHJvY2Vzc3xQcm9ncmVzc3xSYW5kb218UmVnRGVsZXRlfFJlZ1JlYWR8UmVnV3JpdGV8UmVsb2FkfFJlcGVhdHxSZXR1cm58UnVufFJ1bkFzfFJ1bldhaXR8U2VuZHxTZW5kRXZlbnR8U2VuZElucHV0fFNlbmRNZXNzYWdlfFNlbmRNb2RlfFNlbmRQbGF5fFNlbmRSYXd8U2V0QmF0Y2hMaW5lc3xTZXRDYXBzbG9ja1N0YXRlfFNldENvbnRyb2xEZWxheXxTZXREZWZhdWx0TW91c2VTcGVlZHxTZXRFbnZ8U2V0Rm9ybWF0fFNldEtleURlbGF5fFNldE1vdXNlRGVsYXl8U2V0TnVtbG9ja1N0YXRlfFNldFJlZ1ZpZXd8U2V0U2Nyb2xsTG9ja1N0YXRlfFNldFN0b3JlQ2Fwc2xvY2tNb2RlfFNldFRpbWVyfFNldFRpdGxlTWF0Y2hNb2RlfFNldFdpbkRlbGF5fFNldFdvcmtpbmdEaXJ8U2h1dGRvd258U2xlZXB8U29ydHxTb3VuZEJlZXB8U291bmRHZXR8U291bmRHZXRXYXZlVm9sdW1lfFNvdW5kUGxheXxTb3VuZFNldHxTb3VuZFNldFdhdmVWb2x1bWV8U3BsYXNoSW1hZ2V8U3BsYXNoVGV4dE9mZnxTcGxhc2hUZXh0T258U3BsaXRQYXRofFN0YXR1c0JhckdldFRleHR8U3RhdHVzQmFyV2FpdHxTdHJpbmdDYXNlU2Vuc2V8U3RyaW5nR2V0UG9zfFN0cmluZ0xlZnR8U3RyaW5nTGVufFN0cmluZ0xvd2VyfFN0cmluZ01pZHxTdHJpbmdSZXBsYWNlfFN0cmluZ1JpZ2h0fFN0cmluZ1NwbGl0fFN0cmluZ1RyaW1MZWZ0fFN0cmluZ1RyaW1SaWdodHxTdHJpbmdVcHBlcnxTdXNwZW5kfFN5c0dldHxUaHJlYWR8VG9vbFRpcHxUcmFuc2Zvcm18VHJheVRpcHxVUkxEb3dubG9hZFRvRmlsZXxXaW5BY3RpdmF0ZXxXaW5BY3RpdmF0ZUJvdHRvbXxXaW5DbG9zZXxXaW5HZXR8V2luR2V0QWN0aXZlU3RhdHN8V2luR2V0QWN0aXZlVGl0bGV8V2luR2V0Q2xhc3N8V2luR2V0UG9zfFdpbkdldFRleHR8V2luR2V0VGl0bGV8V2luSGlkZXxXaW5LaWxsfFdpbk1heGltaXplfFdpbk1lbnVTZWxlY3RJdGVtfFdpbk1pbmltaXplfFdpbk1pbmltaXplQWxsfFdpbk1pbmltaXplQWxsVW5kb3xXaW5Nb3ZlfFdpblJlc3RvcmV8V2luU2V0fFdpblNldFRpdGxlfFdpblNob3d8V2luV2FpdHxXaW5XYWl0QWN0aXZlfFdpbldhaXRDbG9zZXxXaW5XYWl0Tm90QWN0aXZlKVxcYi9pLFxuICAgIGNvbnN0YW50OlxuICAgICAgL1xcYig/OmFfYWhrcGF0aHxhX2Foa3ZlcnNpb258YV9hcHBkYXRhfGFfYXBwZGF0YWNvbW1vbnxhX2F1dG90cmltfGFfYmF0Y2hsaW5lc3xhX2NhcmV0eHxhX2NhcmV0eXxhX2NvbXB1dGVybmFtZXxhX2NvbnRyb2xkZWxheXxhX2N1cnNvcnxhX2RkfGFfZGRkfGFfZGRkZHxhX2RlZmF1bHRtb3VzZXNwZWVkfGFfZGVza3RvcHxhX2Rlc2t0b3Bjb21tb258YV9kZXRlY3RoaWRkZW50ZXh0fGFfZGV0ZWN0aGlkZGVud2luZG93c3xhX2VuZGNoYXJ8YV9ldmVudGluZm98YV9leGl0cmVhc29ufGFfZmlsZWVuY29kaW5nfGFfZm9ybWF0ZmxvYXR8YV9mb3JtYXRpbnRlZ2VyfGFfZ3VpfGFfZ3VpY29udHJvbHxhX2d1aWNvbnRyb2xldmVudHxhX2d1aWV2ZW50fGFfZ3VpaGVpZ2h0fGFfZ3Vpd2lkdGh8YV9ndWl4fGFfZ3VpeXxhX2hvdXJ8YV9pY29uZmlsZXxhX2ljb25oaWRkZW58YV9pY29ubnVtYmVyfGFfaWNvbnRpcHxhX2luZGV4fGFfaXBhZGRyZXNzMXxhX2lwYWRkcmVzczJ8YV9pcGFkZHJlc3MzfGFfaXBhZGRyZXNzNHxhX2lzNjRiaXRvc3xhX2lzYWRtaW58YV9pc2NvbXBpbGVkfGFfaXNjcml0aWNhbHxhX2lzcGF1c2VkfGFfaXNzdXNwZW5kZWR8YV9pc3VuaWNvZGV8YV9rZXlkZWxheXxhX2xhbmd1YWdlfGFfbGFzdGVycm9yfGFfbGluZWZpbGV8YV9saW5lbnVtYmVyfGFfbG9vcGZpZWxkfGFfbG9vcGZpbGVhdHRyaWJ8YV9sb29wZmlsZWRpcnxhX2xvb3BmaWxlZXh0fGFfbG9vcGZpbGVmdWxscGF0aHxhX2xvb3BmaWxlbG9uZ3BhdGh8YV9sb29wZmlsZW5hbWV8YV9sb29wZmlsZXNob3J0bmFtZXxhX2xvb3BmaWxlc2hvcnRwYXRofGFfbG9vcGZpbGVzaXplfGFfbG9vcGZpbGVzaXpla2J8YV9sb29wZmlsZXNpemVtYnxhX2xvb3BmaWxldGltZWFjY2Vzc2VkfGFfbG9vcGZpbGV0aW1lY3JlYXRlZHxhX2xvb3BmaWxldGltZW1vZGlmaWVkfGFfbG9vcHJlYWRsaW5lfGFfbG9vcHJlZ2tleXxhX2xvb3ByZWduYW1lfGFfbG9vcHJlZ3N1YmtleXxhX2xvb3ByZWd0aW1lbW9kaWZpZWR8YV9sb29wcmVndHlwZXxhX21kYXl8YV9taW58YV9tbXxhX21tbXxhX21tbW18YV9tb258YV9tb3VzZWRlbGF5fGFfbXNlY3xhX215ZG9jdW1lbnRzfGFfbm93fGFfbm93dXRjfGFfbnVtYmF0Y2hsaW5lc3xhX29zdHlwZXxhX29zdmVyc2lvbnxhX3ByaW9yaG90a2V5fGFfcHJpb3JrZXl8YV9wcm9ncmFtZmlsZXN8YV9wcm9ncmFtc3xhX3Byb2dyYW1zY29tbW9ufGFfcHRyc2l6ZXxhX3JlZ3ZpZXd8YV9zY3JlZW5kcGl8YV9zY3JlZW5oZWlnaHR8YV9zY3JlZW53aWR0aHxhX3NjcmlwdGRpcnxhX3NjcmlwdGZ1bGxwYXRofGFfc2NyaXB0aHduZHxhX3NjcmlwdG5hbWV8YV9zZWN8YV9zcGFjZXxhX3N0YXJ0bWVudXxhX3N0YXJ0bWVudWNvbW1vbnxhX3N0YXJ0dXB8YV9zdGFydHVwY29tbW9ufGFfc3RyaW5nY2FzZXNlbnNlfGFfdGFifGFfdGVtcHxhX3RoaXNmdW5jfGFfdGhpc2hvdGtleXxhX3RoaXNsYWJlbHxhX3RoaXNtZW51fGFfdGhpc21lbnVpdGVtfGFfdGhpc21lbnVpdGVtcG9zfGFfdGlja2NvdW50fGFfdGltZWlkbGV8YV90aW1laWRsZXBoeXNpY2FsfGFfdGltZXNpbmNlcHJpb3Job3RrZXl8YV90aW1lc2luY2V0aGlzaG90a2V5fGFfdGl0bGVtYXRjaG1vZGV8YV90aXRsZW1hdGNobW9kZXNwZWVkfGFfdXNlcm5hbWV8YV93ZGF5fGFfd2luZGVsYXl8YV93aW5kaXJ8YV93b3JraW5nZGlyfGFfeWRheXxhX3llYXJ8YV95d2Vla3xhX3l5eXl8Y2xpcGJvYXJkfGNsaXBib2FyZGFsbHxjb21zcGVjfGVycm9ybGV2ZWx8cHJvZ3JhbWZpbGVzKVxcYi9pLFxuICAgIGJ1aWx0aW46XG4gICAgICAvXFxiKD86YWJzfGFjb3N8YXNjfGFzaW58YXRhbnxjZWlsfGNocnxjbGFzc3xjb21vYmphY3RpdmV8Y29tb2JqYXJyYXl8Y29tb2JqY29ubmVjdHxjb21vYmpjcmVhdGV8Y29tb2JqZXJyb3J8Y29tb2JqZmxhZ3N8Y29tb2JqZ2V0fGNvbW9ianF1ZXJ5fGNvbW9ianR5cGV8Y29tb2JqdmFsdWV8Y29zfGRsbGNhbGx8ZXhwfGZpbGVleGlzdHxGaWxlb3BlbnxmbG9vcnxmb3JtYXR8aWxfYWRkfGlsX2NyZWF0ZXxpbF9kZXN0cm95fGluc3RyfGlzZnVuY3xpc2xhYmVsfElzT2JqZWN0fGxufGxvZ3xsdHJpbXxsdl9hZGR8bHZfZGVsZXRlfGx2X2RlbGV0ZWNvbHxsdl9nZXRjb3VudHxsdl9nZXRuZXh0fGx2X2dldHRleHR8bHZfaW5zZXJ0fGx2X2luc2VydGNvbHxsdl9tb2RpZnl8bHZfbW9kaWZ5Y29sfGx2X3NldGltYWdlbGlzdHxtb2R8bnVtZ2V0fG51bXB1dHxvbm1lc3NhZ2V8cmVnZXhtYXRjaHxyZWdleHJlcGxhY2V8cmVnaXN0ZXJjYWxsYmFja3xyb3VuZHxydHJpbXxzYl9zZXRpY29ufHNiX3NldHBhcnRzfHNiX3NldHRleHR8c2lufHNxcnR8c3RybGVufHN0cnJlcGxhY2V8c3Ryc3BsaXR8c3Vic3RyfHRhbnx0dl9hZGR8dHZfZGVsZXRlfHR2X2dldHx0dl9nZXRjaGlsZHx0dl9nZXRjb3VudHx0dl9nZXRuZXh0fHR2X2dldHBhcmVudHx0dl9nZXRwcmV2fHR2X2dldHNlbGVjdGlvbnx0dl9nZXR0ZXh0fHR2X21vZGlmeXx2YXJzZXRjYXBhY2l0eXx3aW5hY3RpdmV8d2luZXhpc3R8X19DYWxsfF9fR2V0fF9fTmV3fF9fU2V0KVxcYi9pLFxuICAgIHN5bWJvbDpcbiAgICAgIC9cXGIoPzphbHR8YWx0ZG93bnxhbHR1cHxhcHBza2V5fGJhY2tzcGFjZXxicm93c2VyX2JhY2t8YnJvd3Nlcl9mYXZvcml0ZXN8YnJvd3Nlcl9mb3J3YXJkfGJyb3dzZXJfaG9tZXxicm93c2VyX3JlZnJlc2h8YnJvd3Nlcl9zZWFyY2h8YnJvd3Nlcl9zdG9wfGJzfGNhcHNsb2NrfGN0cmx8Y3RybGJyZWFrfGN0cmxkb3dufGN0cmx1cHxkZWx8ZGVsZXRlfGRvd258ZW5kfGVudGVyfGVzY3xlc2NhcGV8ZjF8ZjEwfGYxMXxmMTJ8ZjEzfGYxNHxmMTV8ZjE2fGYxN3xmMTh8ZjE5fGYyfGYyMHxmMjF8ZjIyfGYyM3xmMjR8ZjN8ZjR8ZjV8ZjZ8Zjd8Zjh8Zjl8aG9tZXxpbnN8aW5zZXJ0fGpveTF8am95MTB8am95MTF8am95MTJ8am95MTN8am95MTR8am95MTV8am95MTZ8am95MTd8am95MTh8am95MTl8am95Mnxqb3kyMHxqb3kyMXxqb3kyMnxqb3kyM3xqb3kyNHxqb3kyNXxqb3kyNnxqb3kyN3xqb3kyOHxqb3kyOXxqb3kzfGpveTMwfGpveTMxfGpveTMyfGpveTR8am95NXxqb3k2fGpveTd8am95OHxqb3k5fGpveWF4ZXN8am95YnV0dG9uc3xqb3lpbmZvfGpveW5hbWV8am95cG92fGpveXJ8am95dXxqb3l2fGpveXh8am95eXxqb3l6fGxhbHR8bGF1bmNoX2FwcDF8bGF1bmNoX2FwcDJ8bGF1bmNoX21haWx8bGF1bmNoX21lZGlhfGxidXR0b258bGNvbnRyb2x8bGN0cmx8bGVmdHxsc2hpZnR8bHdpbnxsd2luZG93bnxsd2ludXB8bWJ1dHRvbnxtZWRpYV9uZXh0fG1lZGlhX3BsYXlfcGF1c2V8bWVkaWFfcHJldnxtZWRpYV9zdG9wfG51bWxvY2t8bnVtcGFkMHxudW1wYWQxfG51bXBhZDJ8bnVtcGFkM3xudW1wYWQ0fG51bXBhZDV8bnVtcGFkNnxudW1wYWQ3fG51bXBhZDh8bnVtcGFkOXxudW1wYWRhZGR8bnVtcGFkY2xlYXJ8bnVtcGFkZGVsfG51bXBhZGRpdnxudW1wYWRkb3R8bnVtcGFkZG93bnxudW1wYWRlbmR8bnVtcGFkZW50ZXJ8bnVtcGFkaG9tZXxudW1wYWRpbnN8bnVtcGFkbGVmdHxudW1wYWRtdWx0fG51bXBhZHBnZG58bnVtcGFkcGd1cHxudW1wYWRyaWdodHxudW1wYWRzdWJ8bnVtcGFkdXB8cGdkbnxwZ3VwfHByaW50c2NyZWVufHJhbHR8cmJ1dHRvbnxyY29udHJvbHxyY3RybHxyaWdodHxyc2hpZnR8cndpbnxyd2luZG93bnxyd2ludXB8c2Nyb2xsbG9ja3xzaGlmdHxzaGlmdGRvd258c2hpZnR1cHxzcGFjZXx0YWJ8dXB8dm9sdW1lX2Rvd258dm9sdW1lX211dGV8dm9sdW1lX3VwfHdoZWVsZG93bnx3aGVlbGxlZnR8d2hlZWxyaWdodHx3aGVlbHVwfHhidXR0b24xfHhidXR0b24yKVxcYi9pLFxuICAgIGltcG9ydGFudDpcbiAgICAgIC8jXFxiKD86QWxsb3dTYW1lTGluZUNvbW1lbnRzfENsaXBib2FyZFRpbWVvdXR8Q29tbWVudEZsYWd8RGVyZWZDaGFyfEVycm9yU3RkT3V0fEVzY2FwZUNoYXJ8SG90a2V5SW50ZXJ2YWx8SG90a2V5TW9kaWZpZXJUaW1lb3V0fEhvdHN0cmluZ3xJZnxJZlRpbWVvdXR8SWZXaW5BY3RpdmV8SWZXaW5FeGlzdHxJZldpbk5vdEFjdGl2ZXxJZldpbk5vdEV4aXN0fEluY2x1ZGV8SW5jbHVkZUFnYWlufElucHV0TGV2ZWx8SW5zdGFsbEtleWJkSG9va3xJbnN0YWxsTW91c2VIb29rfEtleUhpc3Rvcnl8TWF4SG90a2V5c1BlckludGVydmFsfE1heE1lbXxNYXhUaHJlYWRzfE1heFRocmVhZHNCdWZmZXJ8TWF4VGhyZWFkc1BlckhvdGtleXxNZW51TWFza0tleXxOb0VudnxOb1RyYXlJY29ufFBlcnNpc3RlbnR8U2luZ2xlSW5zdGFuY2V8VXNlSG9va3xXYXJufFdpbkFjdGl2YXRlRm9yY2UpXFxiL2ksXG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzpBYm9ydHxBYm92ZU5vcm1hbHxBZGR8YWhrX2NsYXNzfGFoa19leGV8YWhrX2dyb3VwfGFoa19pZHxhaGtfcGlkfEFsbHxBbG51bXxBbHBoYXxBbHRTdWJtaXR8QWx0VGFifEFsdFRhYkFuZE1lbnV8QWx0VGFiTWVudXxBbHRUYWJNZW51RGlzbWlzc3xBbHdheXNPblRvcHxBdXRvU2l6ZXxCYWNrZ3JvdW5kfEJhY2tncm91bmRUcmFuc3xCZWxvd05vcm1hbHxiZXR3ZWVufEJpdEFuZHxCaXROb3R8Qml0T3J8Qml0U2hpZnRMZWZ0fEJpdFNoaWZ0UmlnaHR8Qml0WE9yfEJvbGR8Qm9yZGVyfEJ1dHRvbnxCeVJlZnxDYXRjaHxDaGVja2JveHxDaGVja2VkfENoZWNrZWRHcmF5fENob29zZXxDaG9vc2VTdHJpbmd8Q2xvc2V8Q29sb3J8Q29tYm9Cb3h8Q29udGFpbnN8Q29udHJvbExpc3R8Q291bnR8RGF0ZXxEYXRlVGltZXxEYXlzfERETHxEZWZhdWx0fERlbGV0ZUFsbHxEZWxpbWl0ZXJ8RGVyZWZ8RGVzdHJveXxEaWdpdHxEaXNhYmxlfERpc2FibGVkfERyb3BEb3duTGlzdHxFZGl0fEVqZWN0fEVsc2V8RW5hYmxlfEVuYWJsZWR8RXJyb3J8RXhpc3R8RXhwYW5kfEV4U3R5bGV8RmlsZVN5c3RlbXxGaW5hbGx5fEZpcnN0fEZsYXNofEZsb2F0fEZsb2F0RmFzdHxGb2N1c3xGb250fGZvcnxnbG9iYWx8R3JpZHxHcm91cHxHcm91cEJveHxHdWlDbG9zZXxHdWlDb250ZXh0TWVudXxHdWlEcm9wRmlsZXN8R3VpRXNjYXBlfEd1aVNpemV8SGRyfEhpZGRlbnxIaWRlfEhpZ2h8SEtDQ3xIS0NSfEhLQ1V8SEtFWV9DTEFTU0VTX1JPT1R8SEtFWV9DVVJSRU5UX0NPTkZJR3xIS0VZX0NVUlJFTlRfVVNFUnxIS0VZX0xPQ0FMX01BQ0hJTkV8SEtFWV9VU0VSU3xIS0xNfEhLVXxIb3Vyc3xIU2Nyb2xsfEljb258SWNvblNtYWxsfElEfElETGFzdHxJZnxJZkVxdWFsfElmRXhpc3R8SWZHcmVhdGVyfElmR3JlYXRlck9yRXF1YWx8SWZJblN0cmluZ3xJZkxlc3N8SWZMZXNzT3JFcXVhbHxJZk1zZ0JveHxJZk5vdEVxdWFsfElmTm90RXhpc3R8SWZOb3RJblN0cmluZ3xJZldpbkFjdGl2ZXxJZldpbkV4aXN0fElmV2luTm90QWN0aXZlfElmV2luTm90RXhpc3R8SWdub3JlfEltYWdlTGlzdHxpbnxJbnRlZ2VyfEludGVnZXJGYXN0fEludGVycnVwdHxpc3xpdGFsaWN8Sm9pbnxMYWJlbHxMYXN0Rm91bmR8TGFzdEZvdW5kRXhpc3R8TGltaXR8TGluZXN8TGlzdHxMaXN0Qm94fExpc3RWaWV3fGxvY2FsfExvY2t8TG9nb2ZmfExvd3xMb3dlcnxMb3dlcmNhc2V8TWFpbldpbmRvd3xNYXJnaW58TWF4aW1pemV8TWF4aW1pemVCb3h8TWF4U2l6ZXxNaW5pbWl6ZXxNaW5pbWl6ZUJveHxNaW5NYXh8TWluU2l6ZXxNaW51dGVzfE1vbnRoQ2FsfE1vdXNlfE1vdmV8TXVsdGl8TkF8Tm98Tm9BY3RpdmF0ZXxOb0RlZmF1bHR8Tm9IaWRlfE5vSWNvbnxOb01haW5XaW5kb3d8bm9ybXxOb3JtYWx8Tm9Tb3J0fE5vU29ydEhkcnxOb1N0YW5kYXJkfE5vdHxOb1RhYnxOb1RpbWVyc3xOdW1iZXJ8T2ZmfE9rfE9ufE93bkRpYWxvZ3N8T3duZXJ8UGFyc2V8UGFzc3dvcmR8UGljdHVyZXxQaXhlbHxQb3N8UG93fFByaW9yaXR5fFByb2Nlc3NOYW1lfFJhZGlvfFJhbmdlfFJlYWR8UmVhZE9ubHl8UmVhbHRpbWV8UmVkcmF3fFJlZ2lvbnxSRUdfQklOQVJZfFJFR19EV09SRHxSRUdfRVhQQU5EX1NafFJFR19NVUxUSV9TWnxSRUdfU1p8UmVsYXRpdmV8UmVuYW1lfFJlcG9ydHxSZXNpemV8UmVzdG9yZXxSZXRyeXxSR0J8U2NyZWVufFNlY29uZHN8U2VjdGlvbnxTZXJpYWx8U2V0TGFiZWx8U2hpZnRBbHRUYWJ8U2hvd3xTaW5nbGV8U2xpZGVyfFNvcnREZXNjfFN0YW5kYXJkfHN0YXRpY3xTdGF0dXN8U3RhdHVzQmFyfFN0YXR1c0NEfHN0cmlrZXxTdHlsZXxTdWJtaXR8U3lzTWVudXxUYWIyfFRhYlN0b3B8VGV4dHxUaGVtZXxUaHJvd3xUaWxlfFRvZ2dsZUNoZWNrfFRvZ2dsZUVuYWJsZXxUb29sV2luZG93fFRvcHxUb3Btb3N0fFRyYW5zQ29sb3J8VHJhbnNwYXJlbnR8VHJheXxUcmVlVmlld3xUcnl8VHJ5QWdhaW58VHlwZXxVbkNoZWNrfHVuZGVybGluZXxVbmljb2RlfFVubG9ja3xVbnRpbHxVcERvd258VXBwZXJ8VXBwZXJjYXNlfFVzZUVycm9yTGV2ZWx8VmlzfFZpc0ZpcnN0fFZpc2libGV8VlNjcm9sbHxXYWl0fFdhaXRDbG9zZXxXYW50Q3RybEF8V2FudEYyfFdhbnRSZXR1cm58V2hpbGV8V3JhcHxYZGlnaXR8eG18eHB8eHN8WWVzfHltfHlwfHlzKVxcYi9pLFxuICAgIGZ1bmN0aW9uOiAvW14oKTsgXFx0LFxcbisqXFwtPT8+OlxcXFxcXC88JiVcXFtcXF1dKyg/PVxcKCkvLFxuICAgIHB1bmN0dWF0aW9uOiAvW3t9W1xcXSgpOixdL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhdXRvaXRcbmF1dG9pdC5kaXNwbGF5TmFtZSA9ICdhdXRvaXQnXG5hdXRvaXQuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBhdXRvaXQoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmF1dG9pdCA9IHtcbiAgICBjb21tZW50OiBbXG4gICAgICAvOy4qLyxcbiAgICAgIHtcbiAgICAgICAgLy8gVGhlIG11bHRpLWxpbmUgY29tbWVudHMgZGVsaW1pdGVycyBjYW4gYWN0dWFsbHkgYmUgY29tbWVudGVkIG91dCB3aXRoIFwiO1wiXG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyheW1xcdCBdKikjKD86Y29tbWVudHMtc3RhcnR8Y3MpW1xcc1xcU10qP15bIFxcdF0qIyg/OmNlfGNvbW1lbnRzLWVuZCkvbSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgdXJsOiB7XG4gICAgICBwYXR0ZXJuOiAvKF5bXFx0IF0qI2luY2x1ZGVcXHMrKSg/OjxbXlxcclxcbj5dKz58XCJbXlxcclxcblwiXStcIikvbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLyhbXCInXSkoPzpcXDFcXDF8KD8hXFwxKVteXFxyXFxuXSkqXFwxLyxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICB2YXJpYWJsZTogLyhbJSRAXSlcXHcrXFwxL1xuICAgICAgfVxuICAgIH0sXG4gICAgZGlyZWN0aXZlOiB7XG4gICAgICBwYXR0ZXJuOiAvKF5bXFx0IF0qKSNbXFx3LV0rL20sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgIH0sXG4gICAgZnVuY3Rpb246IC9cXGJcXHcrKD89XFwoKS8sXG4gICAgLy8gVmFyaWFibGVzIGFuZCBtYWNyb3NcbiAgICB2YXJpYWJsZTogL1skQF1cXHcrLyxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OkNhc2V8Q29uc3R8Q29udGludWUoPzpDYXNlfExvb3ApfERlZmF1bHR8RGltfERvfEVsc2UoPzpJZik/fEVuZCg/OkZ1bmN8SWZ8U2VsZWN0fFN3aXRjaHxXaXRoKXxFbnVtfEV4aXQoPzpMb29wKT98Rm9yfEZ1bmN8R2xvYmFsfElmfElufExvY2FsfE5leHR8TnVsbHxSZURpbXxTZWxlY3R8U3RhdGljfFN0ZXB8U3dpdGNofFRoZW58VG98VW50aWx8Vm9sYXRpbGV8V0VuZHxXaGlsZXxXaXRoKVxcYi9pLFxuICAgIG51bWJlcjogL1xcYig/OjB4W1xcZGEtZl0rfFxcZCsoPzpcXC5cXGQrKT8oPzplWystXT9cXGQrKT8pXFxiL2ksXG4gICAgYm9vbGVhbjogL1xcYig/OkZhbHNlfFRydWUpXFxiL2ksXG4gICAgb3BlcmF0b3I6IC88Wz0+XT98Wy0rKlxcLz0mPl09P3xbP15dfFxcYig/OkFuZHxOb3R8T3IpXFxiL2ksXG4gICAgcHVuY3R1YXRpb246IC9bXFxbXFxdKCkuLDpdL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBhdmlzeW50aFxuYXZpc3ludGguZGlzcGxheU5hbWUgPSAnYXZpc3ludGgnXG5hdmlzeW50aC5hbGlhc2VzID0gWydhdnMnXVxuZnVuY3Rpb24gYXZpc3ludGgoUHJpc20pIHtcbiAgLy8gaHR0cDovL2F2aXN5bnRoLm5sL2luZGV4LnBocC9UaGVfZnVsbF9BdmlTeW50aF9ncmFtbWFyXG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgZnVuY3Rpb24gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudHMpIHtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnJlcGxhY2UoLzw8KFxcZCspPj4vZywgZnVuY3Rpb24gKG0sIGluZGV4KSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlbWVudHNbK2luZGV4XVxuICAgICAgfSlcbiAgICB9XG4gICAgZnVuY3Rpb24gcmUocGF0dGVybiwgcmVwbGFjZW1lbnRzLCBmbGFncykge1xuICAgICAgcmV0dXJuIFJlZ0V4cChyZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50cyksIGZsYWdzIHx8ICcnKVxuICAgIH1cbiAgICB2YXIgdHlwZXMgPSAvYm9vbHxjbGlwfGZsb2F0fGludHxzdHJpbmd8dmFsLy5zb3VyY2VcbiAgICB2YXIgaW50ZXJuYWxzID0gW1xuICAgICAgLy8gYm9vbHNcbiAgICAgIC9pcyg/OmJvb2x8Y2xpcHxmbG9hdHxpbnR8c3RyaW5nKXxkZWZpbmVkfCg/Oig/OmludGVybmFsKT9mdW5jdGlvbnx2YXIpP2V4aXN0cz8vXG4gICAgICAgIC5zb3VyY2UsIC8vIGNvbnRyb2xcbiAgICAgIC9hcHBseXxhc3NlcnR8ZGVmYXVsdHxldmFsfGltcG9ydHxub3B8c2VsZWN0fHVuZGVmaW5lZC8uc291cmNlLCAvLyBnbG9iYWxcbiAgICAgIC9vcHRfKD86YWxsb3dmbG9hdGF1ZGlvfGF2aXBhZHNjYW5saW5lc3xkd2NoYW5uZWxtYXNrfGVuYWJsZV8oPzpiNjRhfHBsYW5hcnRvcGFja2VkcmdifHYyMTB8eTNfMTBfMTB8eTNfMTBfMTYpfHVzZXdhdmVleHRlbnNpYmxlfHZkdWJwbGFuYXJoYWNrKXxzZXQoPzpjYWNoZW1vZGV8bWF4Y3B1fG1lbW9yeW1heHxwbGFuYXJsZWdhY3lhbGlnbm1lbnR8d29ya2luZ2RpcikvXG4gICAgICAgIC5zb3VyY2UsIC8vIGNvbnZcbiAgICAgIC9oZXgoPzp2YWx1ZSk/fHZhbHVlLy5zb3VyY2UsIC8vIG51bWVyaWNcbiAgICAgIC9hYnN8Y2VpbHxjb250aW51ZWQoPzpkZW5vbWluYXRvcnxudW1lcmF0b3IpP3xleHB8Zmxvb3J8Zm1vZHxmcmFjfGxvZyg/OjEwKT98bWF4fG1pbnxtdWxkaXZ8cGl8cG93fHJhbmR8cm91bmR8c2lnbnxzcGxpbmV8c3FydC9cbiAgICAgICAgLnNvdXJjZSwgLy8gdHJpZ1xuICAgICAgL2E/c2luaD98YT9jb3NoP3xhP3RhblsyaF0/Ly5zb3VyY2UsIC8vIGJpdFxuICAgICAgLyg/OmJpdCg/OmFuZHxub3R8eD9vcnxbbHJdP3NoaWZ0W2FzbHVdP3xzaFtscl18c2FbbHJdfFtscl1yb3RhdGVsP3xyb1tybF18dGU/c3R8c2V0KD86Y291bnQpP3xjbCg/OmVhKT9yfGNoKD86YW4pP2dlPykpL1xuICAgICAgICAuc291cmNlLCAvLyBydW50aW1lXG4gICAgICAvYXZlcmFnZSg/OltiZ3JdfGNocm9tYVt1dl18bHVtYSl8KD86W3JnYl18Y2hyb21hW3V2XXxsdW1hfHJnYnxbeXV2XSg/PWRpZmZlcmVuY2UoPzpmcm9tcHJldmlvdXN8dG9uZXh0KSkpZGlmZmVyZW5jZSg/OmZyb21wcmV2aW91c3x0b25leHQpP3xbeXV2cmdiXXBsYW5lKD86bWVkaWFufG1pbnxtYXh8bWlubWF4ZGlmZmVyZW5jZSkvXG4gICAgICAgIC5zb3VyY2UsIC8vIHNjcmlwdFxuICAgICAgL2dldHByb2Nlc3NpbmZvfGxvZ21zZ3xzY3JpcHQoPzpkaXIoPzp1dGY4KT98ZmlsZSg/OnV0ZjgpP3xuYW1lKD86dXRmOCk/KXxzZXRsb2dwYXJhbXMvXG4gICAgICAgIC5zb3VyY2UsIC8vIHN0cmluZ1xuICAgICAgL2NocnwoPzpmaWxsfGZpbmR8bGVmdHxtaWR8cmVwbGFjZXxyZXZ8cmlnaHQpc3RyfGZvcm1hdHxbbHVdY2FzZXxvcmR8c3RyKD86Y21waT98ZnJvbXV0Zjh8bGVufHRvdXRmOCl8dGltZXx0cmltKD86YWxsfGxlZnR8cmlnaHQpL1xuICAgICAgICAuc291cmNlLCAvLyB2ZXJzaW9uXG4gICAgICAvaXN2ZXJzaW9ub3JncmVhdGVyfHZlcnNpb24oPzpudW1iZXJ8c3RyaW5nKS8uc291cmNlLCAvLyBoZWxwZXJcbiAgICAgIC9idWlsZHBpeGVsdHlwZXxjb2xvcnNwYWNlbmFtZXRvcGl4ZWx0eXBlLy5zb3VyY2UsIC8vIGF2c3BsdXNcbiAgICAgIC9hZGRhdXRvbG9hZGRpcnxvbig/OmNwdXxjdWRhKXxwcmVmZXRjaHxzZXRmaWx0ZXJtdG1vZGUvLnNvdXJjZVxuICAgIF0uam9pbignfCcpXG4gICAgdmFyIHByb3BlcnRpZXMgPSBbXG4gICAgICAvLyBjb250ZW50XG4gICAgICAvaGFzKD86YXVkaW98dmlkZW8pLy5zb3VyY2UsIC8vIHJlc29sdXRpb25cbiAgICAgIC9oZWlnaHR8d2lkdGgvLnNvdXJjZSwgLy8gZnJhbWVyYXRlXG4gICAgICAvZnJhbWUoPzpjb3VudHxyYXRlKXxmcmFtZXJhdGUoPzpkZW5vbWluYXRvcnxudW1lcmF0b3IpLy5zb3VyY2UsIC8vIGludGVybGFjaW5nXG4gICAgICAvZ2V0cGFyaXR5fGlzKD86ZmllbGR8ZnJhbWUpYmFzZWQvLnNvdXJjZSwgLy8gY29sb3IgZm9ybWF0XG4gICAgICAvYml0c3BlcmNvbXBvbmVudHxjb21wb25lbnRzaXplfGhhc2FscGhhfGlzKD86cGxhbmFyKD86cmdiYT8pP3xpbnRlcmxlYXZlZHxyZ2IoPzoyNHwzMnw0OHw2NCk/fHkoPzo4fHUoPzp2YT98eTIpKT98eXYoPzoxMnwxNnwyNHw0MTEpfDQyMHw0MjJ8NDQ0fHBhY2tlZHJnYil8bnVtY29tcG9uZW50c3xwaXhlbHR5cGUvXG4gICAgICAgIC5zb3VyY2UsIC8vIGF1ZGlvXG4gICAgICAvYXVkaW8oPzpiaXRzfGNoYW5uZWxzfGR1cmF0aW9ufGxlbmd0aCg/Oltmc118aGl8bG8pP3xyYXRlKXxpc2F1ZGlvKD86ZmxvYXR8aW50KS9cbiAgICAgICAgLnNvdXJjZVxuICAgIF0uam9pbignfCcpXG4gICAgdmFyIGZpbHRlcnMgPSBbXG4gICAgICAvLyBzb3VyY2VcbiAgICAgIC9hdmkoPzpmaWxlKT9zb3VyY2V8ZGlyZWN0c2hvd3NvdXJjZXxpbWFnZSg/OnJlYWRlcnxzb3VyY2V8c291cmNlYW5pbSl8b3BlbmRtbHNvdXJjZXxzZWdtZW50ZWQoPzphdmlzb3VyY2V8ZGlyZWN0c2hvd3NvdXJjZSl8d2F2c291cmNlL1xuICAgICAgICAuc291cmNlLCAvLyBjb2xvclxuICAgICAgL2NvbG9yeXV2fGNvbnZlcnRiYWNrdG95dXkyfGNvbnZlcnR0byg/OlJHQig/OjI0fDMyfDQ4fDY0KXwoPzpwbGFuYXIpP1JHQkE/fFk4P3xZVig/OjEyfDE2fDI0fDQxMSl8WVVWQT8oPzo0MTF8NDIwfDQyMnw0NDQpfFlVWTIpfGZpeGx1bWluYW5jZXxnclthZV15c2NhbGV8aW52ZXJ0fGxldmVsc3xsaW1pdGVyfG1lcmdlYT9yZ2J8bWVyZ2UoPzpjaHJvbWF8bHVtYSl8cmdiYWRqdXN0fHNob3coPzphbHBoYXxibHVlfGdyZWVufHJlZCl8c3dhcHV2fHR3ZWFrfFt1dl10b3k4P3x5dG91di9cbiAgICAgICAgLnNvdXJjZSwgLy8gb3ZlcmxheVxuICAgICAgLyg/OmNvbG9ya2V5fHJlc2V0KW1hc2t8bGF5ZXJ8bWFzayg/OmhzKT98bWVyZ2V8b3ZlcmxheXxzdWJ0cmFjdC8uc291cmNlLCAvLyBnZW9tZXRyeVxuICAgICAgL2FkZGJvcmRlcnN8KD86YmljdWJpY3xiaWxpbmVhcnxibGFja21hbnxnYXVzc3xsYW5jem9zNHxsYW5jem9zfHBvaW50fHNpbmN8c3BsaW5lKD86MTZ8MzZ8NjQpKXJlc2l6ZXxjcm9wKD86Ym90dG9tKT98ZmxpcCg/Omhvcml6b250YWx8dmVydGljYWwpfCg/Omhvcml6b250YWx8dmVydGljYWwpP3JlZHVjZWJ5MnxsZXR0ZXJib3h8c2tld3Jvd3N8dHVybig/OjE4MHxsZWZ0fHJpZ2h0KS9cbiAgICAgICAgLnNvdXJjZSwgLy8gcGl4ZWxcbiAgICAgIC9ibHVyfGZpeGJyb2tlbmNocm9tYXVwc2FtcGxpbmd8Z2VuZXJhbGNvbnZvbHV0aW9ufCg/OnNwYXRpYWx8dGVtcG9yYWwpc29mdGVufHNoYXJwZW4vXG4gICAgICAgIC5zb3VyY2UsIC8vIHRpbWVsaW5lXG4gICAgICAvdHJpbXwoPzp1bik/YWxpZ25lZHNwbGljZXwoPzphc3N1bWV8YXNzdW1lc2NhbGVkfGNoYW5nZXxjb252ZXJ0KUZQU3woPzpkZWxldGV8ZHVwbGljYXRlKWZyYW1lfGRpc3NvbHZlfGZhZGUoPzppbnxpb3xvdXQpWzAyXT98ZnJlZXplZnJhbWV8aW50ZXJsZWF2ZXxsb29wfHJldmVyc2V8c2VsZWN0KD86ZXZlbnxvZGR8KD86cmFuZ2UpP2V2ZXJ5KS9cbiAgICAgICAgLnNvdXJjZSwgLy8gaW50ZXJsYWNlXG4gICAgICAvYXNzdW1lW2J0XWZmfGFzc3VtZSg/OmZpZWxkfGZyYW1lKWJhc2VkfGJvYnxjb21wbGVtZW50cGFyaXR5fGRvdWJsZXdlYXZlfHBlY3VsaWFyYmxlbmR8cHVsbGRvd258c2VwYXJhdGUoPzpjb2x1bW5zfGZpZWxkc3xyb3dzKXxzd2FwZmllbGRzfHdlYXZlKD86Y29sdW1uc3xyb3dzKT8vXG4gICAgICAgIC5zb3VyY2UsIC8vIGF1ZGlvXG4gICAgICAvYW1wbGlmeSg/OmRiKT98YXNzdW1lc2FtcGxlcmF0ZXxhdWRpb2R1Yig/OmV4KT98YXVkaW90cmltfGNvbnZlcnRhdWRpb3RvKD86KD86OHwxNnwyNHwzMiliaXR8ZmxvYXQpfGNvbnZlcnR0b21vbm98ZGVsYXlhdWRpb3xlbnN1cmV2YnJtcDNzeW5jfGdldCg/OmxlZnR8cmlnaHQpP2NoYW5uZWx8a2lsbCg/OmF1ZGlvfHZpZGVvKXxtZXJnZWNoYW5uZWxzfG1peGF1ZGlvfG1vbm90b3N0ZXJlb3xub3JtYWxpemV8cmVzYW1wbGVhdWRpb3xzc3JjfHN1cGVyZXF8dGltZXN0cmV0Y2gvXG4gICAgICAgIC5zb3VyY2UsIC8vIGNvbmRpdGlvbmFsXG4gICAgICAvYW5pbWF0ZXxhcHBseXJhbmdlfGNvbmRpdGlvbmFsKD86ZmlsdGVyfHJlYWRlcnxzZWxlY3QpfGZyYW1lZXZhbHVhdGV8c2NyaXB0Y2xpcHx0Y3AoPzpzZXJ2ZXJ8c291cmNlKXx3cml0ZWZpbGUoPzplbmR8aWZ8c3RhcnQpPy9cbiAgICAgICAgLnNvdXJjZSwgLy8gZXhwb3J0XG4gICAgICAvaW1hZ2V3cml0ZXIvLnNvdXJjZSwgLy8gZGVidWdcbiAgICAgIC9ibGFja25lc3N8YmxhbmtjbGlwfGNvbG9yYmFycyg/OmhkKT98Y29tcGFyZXxkdW1wZmlsdGVyZ3JhcGh8ZWNob3xoaXN0b2dyYW18aW5mb3xtZXNzYWdlY2xpcHxwcmVyb2xsfHNldGdyYXBoYW5hbHlzaXN8c2hvdyg/OmZyYW1lbnVtYmVyfHNtcHRlfHRpbWUpfHNob3dmaXZldmVyc2lvbnN8c3RhY2soPzpob3Jpem9udGFsfHZlcnRpY2FsKXxzdWJ0aXRsZXx0b25lfHZlcnNpb24vXG4gICAgICAgIC5zb3VyY2VcbiAgICBdLmpvaW4oJ3wnKVxuICAgIHZhciBhbGxpbnRlcm5hbHMgPSBbaW50ZXJuYWxzLCBwcm9wZXJ0aWVzLCBmaWx0ZXJzXS5qb2luKCd8JylcbiAgICBQcmlzbS5sYW5ndWFnZXMuYXZpc3ludGggPSB7XG4gICAgICBjb21tZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBNYXRjaGVzIFsqICpdIG5lc3RhYmxlIGJsb2NrIGNvbW1lbnRzLCBidXQgb25seSBzdXBwb3J0cyAxIGxldmVsIG9mIG5lc3RlZCBjb21tZW50c1xuICAgICAgICAgIC8vIC9cXFtcXCooPzpbXlxcWypdfFxcWyg/IVxcKil8XFwqKD8hXFxdKXw8c2VsZj4pKlxcKlxcXS9cbiAgICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgICAgLyhefFteXFxcXF0pXFxbXFwqKD86W15cXFsqXXxcXFsoPyFcXCopfFxcKig/IVxcXSl8XFxbXFwqKD86W15cXFsqXXxcXFsoPyFcXCopfFxcKig/IVxcXSkpKlxcKlxcXSkqXFwqXFxdLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gTWF0Y2hlcyAvKiAqLyBibG9jayBjb21tZW50c1xuICAgICAgICAgIHBhdHRlcm46IC8oXnxbXlxcXFxdKVxcL1xcKltcXHNcXFNdKj8oPzpcXCpcXC98JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBNYXRjaGVzICMgY29tbWVudHNcbiAgICAgICAgICBwYXR0ZXJuOiAvKF58W15cXFxcJF0pIy4qLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgLy8gSGFuZGxlIGJlZm9yZSBzdHJpbmdzIGJlY2F1c2Ugb3B0aW9uYWwgYXJndW1lbnRzIGFyZSBzdXJyb3VuZGVkIGJ5IGRvdWJsZSBxdW90ZXNcbiAgICAgIGFyZ3VtZW50OiB7XG4gICAgICAgIHBhdHRlcm46IHJlKC9cXGIoPzo8PDA+PilcXHMrKFwiPylcXHcrXFwxLy5zb3VyY2UsIFt0eXBlc10sICdpJyksXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGtleXdvcmQ6IC9eXFx3Ky9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIE9wdGlvbmFsIGFyZ3VtZW50IGFzc2lnbm1lbnRcbiAgICAgICdhcmd1bWVudC1sYWJlbCc6IHtcbiAgICAgICAgcGF0dGVybjogLyhbLChdW1xcc1xcXFxdKilcXHcrXFxzKj0oPyE9KS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgICdhcmd1bWVudC1uYW1lJzoge1xuICAgICAgICAgICAgcGF0dGVybjogL15cXHcrLyxcbiAgICAgICAgICAgIGFsaWFzOiAncHVuY3R1YXRpb24nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwdW5jdHVhdGlvbjogLz0kL1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc3RyaW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyB0cmlwbGUgZG91YmxlLXF1b3RlZFxuICAgICAgICAgIHBhdHRlcm46IC9cIlwiXCJbXFxzXFxTXSo/XCJcIlwiLyxcbiAgICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIHNpbmdsZSBkb3VibGUtcXVvdGVkXG4gICAgICAgICAgcGF0dGVybjogL1wiKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8W15cIlxcXFxcXHJcXG5dKSpcIi8sXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgY29uc3RhbnQ6IHtcbiAgICAgICAgICAgICAgLy8gVGhlc2UgKmFyZSogY2FzZS1zZW5zaXRpdmUhXG4gICAgICAgICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgICAgICAgL1xcYig/OkRFRkFVTFRfTVRfTU9ERXwoPzpNQUlOU0NSSVBUfFBST0dSQU18U0NSSVBUKURJUnwoPzpNQUNISU5FfFVTRVIpXyg/OkNMQVNTSUN8UExVUylfUExVR0lOUylcXGIvXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgLy8gVGhlIHNwZWNpYWwgXCJsYXN0XCIgdmFyaWFibGUgdGhhdCB0YWtlcyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgaW1wbGljaXRseSByZXR1cm5lZCBjbGlwXG4gICAgICB2YXJpYWJsZTogL1xcYig/Omxhc3QpXFxiL2ksXG4gICAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8bm98dHJ1ZXx5ZXMpXFxiL2ksXG4gICAgICBrZXl3b3JkOlxuICAgICAgICAvXFxiKD86Y2F0Y2h8ZWxzZXxmb3J8ZnVuY3Rpb258Z2xvYmFsfGlmfHJldHVybnx0cnl8d2hpbGV8X19FTkRfXylcXGIvaSxcbiAgICAgIGNvbnN0YW50OiAvXFxiTVRfKD86TVVMVElfSU5TVEFOQ0V8TklDRV9GSUxURVJ8U0VSSUFMSVpFRHxTUEVDSUFMX01UKVxcYi8sXG4gICAgICAvLyBBdmlTeW50aCdzIGludGVybmFsIGZ1bmN0aW9ucywgZmlsdGVycywgYW5kIHByb3BlcnRpZXNcbiAgICAgICdidWlsdGluLWZ1bmN0aW9uJzoge1xuICAgICAgICBwYXR0ZXJuOiByZSgvXFxiKD86PDwwPj4pXFxiLy5zb3VyY2UsIFthbGxpbnRlcm5hbHNdLCAnaScpLFxuICAgICAgICBhbGlhczogJ2Z1bmN0aW9uJ1xuICAgICAgfSxcbiAgICAgICd0eXBlLWNhc3QnOiB7XG4gICAgICAgIHBhdHRlcm46IHJlKC9cXGIoPzo8PDA+PikoPz1cXHMqXFwoKS8uc291cmNlLCBbdHlwZXNdLCAnaScpLFxuICAgICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgICB9LFxuICAgICAgLy8gRXh0ZXJuYWwvdXNlci1kZWZpbmVkIGZpbHRlcnNcbiAgICAgIGZ1bmN0aW9uOiB7XG4gICAgICAgIHBhdHRlcm46IC9cXGJbYS16X11cXHcqKD89XFxzKlxcKCl8KFxcLilbYS16X11cXHcqXFxiL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICAvLyBNYXRjaGVzIGEgXFwgYXMgdGhlIGZpcnN0IG9yIGxhc3QgY2hhcmFjdGVyIG9uIGEgbGluZVxuICAgICAgJ2xpbmUtY29udGludWF0aW9uJzoge1xuICAgICAgICBwYXR0ZXJuOiAvKF5bIFxcdF0qKVxcXFx8XFxcXCg/PVsgXFx0XSokKS9tLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ3B1bmN0dWF0aW9uJ1xuICAgICAgfSxcbiAgICAgIG51bWJlcjpcbiAgICAgICAgL1xcQlxcJCg/OltcXGRhLWZdezZ9fFtcXGRhLWZdezh9KVxcYnwoPzooPzpcXGJ8XFxCLSlcXGQrKD86XFwuXFxkKik/XFxifFxcQlxcLlxcZCtcXGIpL2ksXG4gICAgICBvcGVyYXRvcjogL1xcK1xcKz98WyE9PD5dPT98JiZ8XFx8XFx8fFs/OiovJS1dLyxcbiAgICAgIHB1bmN0dWF0aW9uOiAvW3t9XFxbXFxdKCk7LC5dL1xuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuYXZzID0gUHJpc20ubGFuZ3VhZ2VzLmF2aXN5bnRoXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYXZyb0lkbFxuYXZyb0lkbC5kaXNwbGF5TmFtZSA9ICdhdnJvSWRsJ1xuYXZyb0lkbC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGF2cm9JZGwoUHJpc20pIHtcbiAgLy8gR2l0SHViOiBodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2F2cm9cbiAgLy8gRG9jczogaHR0cHM6Ly9hdnJvLmFwYWNoZS5vcmcvZG9jcy9jdXJyZW50L2lkbC5odG1sXG4gIFByaXNtLmxhbmd1YWdlc1snYXZyby1pZGwnXSA9IHtcbiAgICBjb21tZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvXFwvXFwvLip8XFwvXFwqW1xcc1xcU10qP1xcKlxcLy8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLyhefFteXFxcXF0pXCIoPzpbXlxcclxcblwiXFxcXF18XFxcXC4pKlwiLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIGFubm90YXRpb246IHtcbiAgICAgIHBhdHRlcm46IC9AKD86WyRcXHcuLV18YFteXFxyXFxuYF0rYCkrLyxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnZnVuY3Rpb24nXG4gICAgfSxcbiAgICAnZnVuY3Rpb24taWRlbnRpZmllcic6IHtcbiAgICAgIHBhdHRlcm46IC9gW15cXHJcXG5gXStgKD89XFxzKlxcKCkvLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgYWxpYXM6ICdmdW5jdGlvbidcbiAgICB9LFxuICAgIGlkZW50aWZpZXI6IHtcbiAgICAgIHBhdHRlcm46IC9gW15cXHJcXG5gXStgLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgJ2NsYXNzLW5hbWUnOiB7XG4gICAgICBwYXR0ZXJuOiAvKFxcYig/OmVudW18ZXJyb3J8cHJvdG9jb2x8cmVjb3JkfHRocm93cylcXGJcXHMrKVskXFx3XSsvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzphcnJheXxib29sZWFufGJ5dGVzfGRhdGV8ZGVjaW1hbHxkb3VibGV8ZW51bXxlcnJvcnxmYWxzZXxmaXhlZHxmbG9hdHxpZGx8aW1wb3J0fGludHxsb2NhbF90aW1lc3RhbXBfbXN8bG9uZ3xtYXB8bnVsbHxvbmV3YXl8cHJvdG9jb2x8cmVjb3JkfHNjaGVtYXxzdHJpbmd8dGhyb3dzfHRpbWVfbXN8dGltZXN0YW1wX21zfHRydWV8dW5pb258dXVpZHx2b2lkKVxcYi8sXG4gICAgZnVuY3Rpb246IC9cXGJbYS16X11cXHcqKD89XFxzKlxcKCkvaSxcbiAgICBudW1iZXI6IFtcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvKF58W15cXHcuXSktPyg/Oig/OlxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykoPzplWystXT9cXGQrKT98MHgoPzpbYS1mMC05XSsoPzpcXC5bYS1mMC05XSopP3xcXC5bYS1mMC05XSspKD86cFsrLV0/XFxkKyk/KVtkZmxdPyg/IVtcXHcuXSkvaSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIC8tP1xcYig/OkluZmluaXR5fE5hTilcXGIvXG4gICAgXSxcbiAgICBvcGVyYXRvcjogLz0vLFxuICAgIHB1bmN0dWF0aW9uOiAvWygpXFxbXFxde308Pi46LDstXS9cbiAgfVxuICBQcmlzbS5sYW5ndWFnZXMuYXZkbCA9IFByaXNtLmxhbmd1YWdlc1snYXZyby1pZGwnXVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYmF0Y2hcbmJhdGNoLmRpc3BsYXlOYW1lID0gJ2JhdGNoJ1xuYmF0Y2guYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBiYXRjaChQcmlzbSkge1xuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIHZhciB2YXJpYWJsZSA9IC8lJT9bfjpcXHddKyU/fCFcXFMrIS9cbiAgICB2YXIgcGFyYW1ldGVyID0ge1xuICAgICAgcGF0dGVybjogL1xcL1thLXo/XSsoPz1bIDpdfCQpOj98LVthLXpdXFxifC0tW2Etei1dK1xcYi9pbSxcbiAgICAgIGFsaWFzOiAnYXR0ci1uYW1lJyxcbiAgICAgIGluc2lkZToge1xuICAgICAgICBwdW5jdHVhdGlvbjogLzovXG4gICAgICB9XG4gICAgfVxuICAgIHZhciBzdHJpbmcgPSAvXCIoPzpbXFxcXFwiXVwifFteXCJdKSpcIig/IVwiKS9cbiAgICB2YXIgbnVtYmVyID0gLyg/OlxcYnwtKVxcZCtcXGIvXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmJhdGNoID0ge1xuICAgICAgY29tbWVudDogW1xuICAgICAgICAvXjo6LiovbSxcbiAgICAgICAge1xuICAgICAgICAgIHBhdHRlcm46IC8oKD86XnxbJihdKVsgXFx0XSopcmVtXFxiKD86W15eJilcXHJcXG5dfFxcXig/OlxcclxcbnxbXFxzXFxTXSkpKi9pbSxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBsYWJlbDoge1xuICAgICAgICBwYXR0ZXJuOiAvXjouKi9tLFxuICAgICAgICBhbGlhczogJ3Byb3BlcnR5J1xuICAgICAgfSxcbiAgICAgIGNvbW1hbmQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIEZPUiBjb21tYW5kXG4gICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgIC8oKD86XnxbJihdKVsgXFx0XSopZm9yKD86IFxcL1thLXo/XSg/OlsgOl0oPzpcIlteXCJdKlwifFteXFxzXCIvXVxcUyopKT8pKiBcXFMrIGluIFxcKFteKV0rXFwpIGRvL2ltLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBrZXl3b3JkOiAvXFxiKD86ZG98aW4pXFxifF5mb3JcXGIvaSxcbiAgICAgICAgICAgIHN0cmluZzogc3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1ldGVyOiBwYXJhbWV0ZXIsXG4gICAgICAgICAgICB2YXJpYWJsZTogdmFyaWFibGUsXG4gICAgICAgICAgICBudW1iZXI6IG51bWJlcixcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvWygpJyxdL1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIElGIGNvbW1hbmRcbiAgICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgICAgLygoPzpefFsmKF0pWyBcXHRdKilpZig/OiBcXC9bYS16P10oPzpbIDpdKD86XCJbXlwiXSpcInxbXlxcc1wiL11cXFMqKSk/KSogKD86bm90ICk/KD86Y21kZXh0dmVyc2lvbiBcXGQrfGRlZmluZWQgXFx3K3xlcnJvcmxldmVsIFxcZCt8ZXhpc3QgXFxTK3woPzpcIlteXCJdKlwifCg/IVwiKSg/Oig/IT09KVxcUykrKT8oPzo9PXwgKD86ZXF1fGdlcXxndHJ8bGVxfGxzc3xuZXEpICkoPzpcIlteXCJdKlwifFteXFxzXCJdXFxTKikpL2ltLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBrZXl3b3JkOlxuICAgICAgICAgICAgICAvXFxiKD86Y21kZXh0dmVyc2lvbnxkZWZpbmVkfGVycm9ybGV2ZWx8ZXhpc3R8bm90KVxcYnxeaWZcXGIvaSxcbiAgICAgICAgICAgIHN0cmluZzogc3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1ldGVyOiBwYXJhbWV0ZXIsXG4gICAgICAgICAgICB2YXJpYWJsZTogdmFyaWFibGUsXG4gICAgICAgICAgICBudW1iZXI6IG51bWJlcixcbiAgICAgICAgICAgIG9wZXJhdG9yOiAvXFxefD09fFxcYig/OmVxdXxnZXF8Z3RyfGxlcXxsc3N8bmVxKVxcYi9pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gRUxTRSBjb21tYW5kXG4gICAgICAgICAgcGF0dGVybjogLygoPzpefFsmKCldKVsgXFx0XSopZWxzZVxcYi9pbSxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAga2V5d29yZDogL15lbHNlXFxiL2lcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBTRVQgY29tbWFuZFxuICAgICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgICAvKCg/Ol58WyYoXSlbIFxcdF0qKXNldCg/OiBcXC9bYS16XSg/OlsgOl0oPzpcIlteXCJdKlwifFteXFxzXCIvXVxcUyopKT8pKiAoPzpbXl4mKVxcclxcbl18XFxeKD86XFxyXFxufFtcXHNcXFNdKSkqL2ltLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBrZXl3b3JkOiAvXnNldFxcYi9pLFxuICAgICAgICAgICAgc3RyaW5nOiBzdHJpbmcsXG4gICAgICAgICAgICBwYXJhbWV0ZXI6IHBhcmFtZXRlcixcbiAgICAgICAgICAgIHZhcmlhYmxlOiBbdmFyaWFibGUsIC9cXHcrKD89KD86WypcXC8lK1xcLSZefF18PDx8Pj4pPz0pL10sXG4gICAgICAgICAgICBudW1iZXI6IG51bWJlcixcbiAgICAgICAgICAgIG9wZXJhdG9yOiAvWypcXC8lK1xcLSZefF09P3w8PD0/fD4+PT98WyF+Xz1dLyxcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvWygpJyxdL1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIE90aGVyIGNvbW1hbmRzXG4gICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgIC8oKD86XnxbJihdKVsgXFx0XSpAPylcXHcrXFxiKD86XCIoPzpbXFxcXFwiXVwifFteXCJdKSpcIig/IVwiKXxbXlwiXiYpXFxyXFxuXXxcXF4oPzpcXHJcXG58W1xcc1xcU10pKSovbSxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAga2V5d29yZDogL15cXHcrXFxiLyxcbiAgICAgICAgICAgIHN0cmluZzogc3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1ldGVyOiBwYXJhbWV0ZXIsXG4gICAgICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF5cXHMqKTpcXFMrL20sXG4gICAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgICAgIGFsaWFzOiAncHJvcGVydHknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmFyaWFibGU6IHZhcmlhYmxlLFxuICAgICAgICAgICAgbnVtYmVyOiBudW1iZXIsXG4gICAgICAgICAgICBvcGVyYXRvcjogL1xcXi9cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBvcGVyYXRvcjogL1smQF0vLFxuICAgICAgcHVuY3R1YXRpb246IC9bKCknXS9cbiAgICB9XG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYmJjb2RlXG5iYmNvZGUuZGlzcGxheU5hbWUgPSAnYmJjb2RlJ1xuYmJjb2RlLmFsaWFzZXMgPSBbJ3Nob3J0Y29kZSddXG5mdW5jdGlvbiBiYmNvZGUoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmJiY29kZSA9IHtcbiAgICB0YWc6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9cXFtcXC8/W15cXHM9XFxdXSsoPzpcXHMqPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W15cXHMnXCJcXF09XSspKT8oPzpcXHMrW15cXHM9XFxdXStcXHMqPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W15cXHMnXCJcXF09XSspKSpcXHMqXFxdLyxcbiAgICAgIGluc2lkZToge1xuICAgICAgICB0YWc6IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvXlxcW1xcLz9bXlxccz1cXF1dKy8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogL15cXFtcXC8/L1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ2F0dHItdmFsdWUnOiB7XG4gICAgICAgICAgcGF0dGVybjogLz1cXHMqKD86XCJbXlwiXSpcInwnW14nXSonfFteXFxzJ1wiXFxdPV0rKS8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogW1xuICAgICAgICAgICAgICAvXj0vLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGF0dGVybjogL14oXFxzKilbXCInXXxbXCInXSQvLFxuICAgICAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcHVuY3R1YXRpb246IC9cXF0vLFxuICAgICAgICAnYXR0ci1uYW1lJzogL1teXFxzPVxcXV0rL1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBQcmlzbS5sYW5ndWFnZXMuc2hvcnRjb2RlID0gUHJpc20ubGFuZ3VhZ2VzLmJiY29kZVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYmljZXBcbmJpY2VwLmRpc3BsYXlOYW1lID0gJ2JpY2VwJ1xuYmljZXAuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBiaWNlcChQcmlzbSkge1xuICAvLyBiYXNlZCBsb29zZWx5IHVwb246IGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZS9iaWNlcC9ibG9iL21haW4vc3JjL3RleHRtYXRlL2JpY2VwLnRtbGFuZ3VhZ2VcbiAgUHJpc20ubGFuZ3VhZ2VzLmJpY2VwID0ge1xuICAgIGNvbW1lbnQ6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gbXVsdGlsaW5lIGNvbW1lbnRzIGVnIC8qIEFTREYgKi9cbiAgICAgICAgcGF0dGVybjogLyhefFteXFxcXF0pXFwvXFwqW1xcc1xcU10qPyg/OlxcKlxcL3wkKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gc2luZ2xlbGluZSBjb21tZW50cyBlZyAvLyBBU0RGXG4gICAgICAgIHBhdHRlcm46IC8oXnxbXlxcXFw6XSlcXC9cXC8uKi8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgcHJvcGVydHk6IFtcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLyhbXFxyXFxuXVsgXFx0XSopW2Etel9dXFx3Kig/PVsgXFx0XSo6KS9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKFtcXHJcXG5dWyBcXHRdKiknKD86XFxcXC58XFwkKD8hXFx7KXxbXidcXFxcXFxyXFxuJF0pKicoPz1bIFxcdF0qOikvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgIHN0cmluZzogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvJycnW14nXVtcXHNcXFNdKj8nJycvLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC8oXnxbXlxcXFwnXSknKD86XFxcXC58XFwkKD8hXFx7KXxbXidcXFxcXFxyXFxuJF0pKicvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgICdpbnRlcnBvbGF0ZWQtc3RyaW5nJzoge1xuICAgICAgcGF0dGVybjogLyhefFteXFxcXCddKScoPzpcXFxcLnxcXCQoPzooPyFcXHspfFxce1tee31cXHJcXG5dKlxcfSl8W14nXFxcXFxcclxcbiRdKSonLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgICAgIHBhdHRlcm46IC9cXCRcXHtbXnt9XFxyXFxuXSpcXH0vLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgZXhwcmVzc2lvbjoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF5cXCRcXHspW1xcc1xcU10rKD89XFx9JCkvLFxuICAgICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHVuY3R1YXRpb246IC9eXFwkXFx7fFxcfSQvXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzdHJpbmc6IC9bXFxzXFxTXSsvXG4gICAgICB9XG4gICAgfSxcbiAgICBkYXRhdHlwZToge1xuICAgICAgcGF0dGVybjogLyhcXGIoPzpvdXRwdXR8cGFyYW0pXFxiWyBcXHRdK1xcdytbIFxcdF0rKVxcdytcXGIvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZSdcbiAgICB9LFxuICAgIGJvb2xlYW46IC9cXGIoPzpmYWxzZXx0cnVlKVxcYi8sXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2JpY2VwL2Jsb2IvMTE0YTMyNTFiNGU2ZTMwMDgyYTU4NzI5ZjE5YThjYzRlMzc0ZmZhNi9zcmMvdGV4dG1hdGUvYmljZXAudG1sYW5ndWFnZSNMMTg0XG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzpleGlzdGluZ3xmb3J8aWZ8aW58bW9kdWxlfG51bGx8b3V0cHV0fHBhcmFtfHJlc291cmNlfHRhcmdldFNjb3BlfHZhcilcXGIvLFxuICAgIGRlY29yYXRvcjogL0BcXHcrXFxiLyxcbiAgICBmdW5jdGlvbjogL1xcYlthLXpfXVxcdyooPz1bIFxcdF0qXFwoKS9pLFxuICAgIG51bWJlcjogLyg/OlxcYlxcZCsoPzpcXC5cXGQqKT98XFxCXFwuXFxkKykoPzpFWystXT9cXGQrKT8vaSxcbiAgICBvcGVyYXRvcjpcbiAgICAgIC8tLXxcXCtcXCt8XFwqXFwqPT98PT58JiY9P3xcXHxcXHw9P3xbIT1dPT18PDw9P3w+Pj4/PT98Wy0rKi8lJnxeIT08Pl09P3xcXC57M318XFw/XFw/PT98XFw/XFwuP3xbfjpdLyxcbiAgICBwdW5jdHVhdGlvbjogL1t7fVtcXF07KCksLjpdL1xuICB9XG4gIFByaXNtLmxhbmd1YWdlcy5iaWNlcFsnaW50ZXJwb2xhdGVkLXN0cmluZyddLmluc2lkZVsnaW50ZXJwb2xhdGlvbiddLmluc2lkZVtcbiAgICAnZXhwcmVzc2lvbidcbiAgXS5pbnNpZGUgPSBQcmlzbS5sYW5ndWFnZXMuYmljZXBcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJpcmJcbmJpcmIuZGlzcGxheU5hbWUgPSAnYmlyYidcbmJpcmIuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBiaXJiKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5iaXJiID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnY2xpa2UnLCB7XG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvcj8oXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXSkqXFwxLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgJ2NsYXNzLW5hbWUnOiBbXG4gICAgICAvXFxiW0EtWl0oPzpbXFxkX10qW2EtekEtWl1cXHcqKT9cXGIvLCAvLyBtYXRjaGVzIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiByZXR1cm4gdHlwZXMgKHBhcmFtZXRlcnMgYXMgd2VsbCkuXG4gICAgICAvXFxiKD86W0EtWl1cXHcqfCg/ISg/OnZhcnx2b2lkKVxcYilbYS16XVxcdyopKD89XFxzK1xcdytcXHMqWzssPSgpXSkvXG4gICAgXSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmFzc2VydHxicmVha3xjYXNlfGNsYXNzfGNvbnN0fGRlZmF1bHR8ZWxzZXxlbnVtfGZpbmFsfGZvbGxvd3N8Zm9yfGdyYWJ8aWZ8bmVzdHxuZXd8bmV4dHxub1NlZWJ8cmV0dXJufHN0YXRpY3xzd2l0Y2h8dGhyb3d8dmFyfHZvaWR8d2hpbGUpXFxiLyxcbiAgICBvcGVyYXRvcjogL1xcK1xcK3wtLXwmJnxcXHxcXHx8PDw9P3w+Pj0/fH4oPzpcXC89Pyk/fFsrXFwtKlxcLyUmXnw9ITw+XT0/fFxcP3w6LyxcbiAgICB2YXJpYWJsZTogL1xcYlthLXpfXVxcdypcXGIvXG4gIH0pXG4gIFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoJ2JpcmInLCAnZnVuY3Rpb24nLCB7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgIHBhdHRlcm46IC88XFx3Kz4vLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgYWxpYXM6ICdzeW1ib2wnXG4gICAgfVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgcmVmcmFjdG9yQyA9IHJlcXVpcmUoJy4vYy5qcycpXG5tb2R1bGUuZXhwb3J0cyA9IGJpc29uXG5iaXNvbi5kaXNwbGF5TmFtZSA9ICdiaXNvbidcbmJpc29uLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYmlzb24oUHJpc20pIHtcbiAgUHJpc20ucmVnaXN0ZXIocmVmcmFjdG9yQylcbiAgUHJpc20ubGFuZ3VhZ2VzLmJpc29uID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnYycsIHt9KVxuICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdiaXNvbicsICdjb21tZW50Jywge1xuICAgIGJpc29uOiB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBtYXRjaCBhbGwgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZVxuICAgICAgLy8gaW5jbHVkaW5nIHRoZSBwcm9sb2d1ZShzKSwgdGhlIGJpc29uIGRlY2xhcmF0aW9ucyBhbmRcbiAgICAgIC8vIHRoZSBncmFtbWFyIHJ1bGVzLlxuICAgICAgcGF0dGVybjogL14oPzpbXiVdfCUoPyElKSkqJSVbXFxzXFxTXSo/JSUvLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIGM6IHtcbiAgICAgICAgICAvLyBBbGxvdyBmb3Igb25lIGxldmVsIG9mIG5lc3RlZCBicmFjZXNcbiAgICAgICAgICBwYXR0ZXJuOiAvJVxce1tcXHNcXFNdKj8lXFx9fFxceyg/Olxce1tefV0qXFx9fFtee31dKSpcXH0vLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgZGVsaW1pdGVyOiB7XG4gICAgICAgICAgICAgIHBhdHRlcm46IC9eJT9cXHt8JT9cXH0kLyxcbiAgICAgICAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYmlzb24tdmFyaWFibGUnOiB7XG4gICAgICAgICAgICAgIHBhdHRlcm46IC9bJEBdKD86PFteXFxzPl0rPik/W1xcdyRdKy8sXG4gICAgICAgICAgICAgIGFsaWFzOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbjogLzx8Pi9cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3Q6IFByaXNtLmxhbmd1YWdlcy5jXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjb21tZW50OiBQcmlzbS5sYW5ndWFnZXMuYy5jb21tZW50LFxuICAgICAgICBzdHJpbmc6IFByaXNtLmxhbmd1YWdlcy5jLnN0cmluZyxcbiAgICAgICAgcHJvcGVydHk6IC9cXFMrKD89OikvLFxuICAgICAgICBrZXl3b3JkOiAvJVxcdysvLFxuICAgICAgICBudW1iZXI6IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvKF58W15AXSlcXGIoPzoweFtcXGRhLWZdK3xcXGQrKS9pLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHVuY3R1YXRpb246IC8lWyU/XXxbfDo7XFxbXFxdPD5dL1xuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJuZlxuYm5mLmRpc3BsYXlOYW1lID0gJ2JuZidcbmJuZi5hbGlhc2VzID0gWydyYm5mJ11cbmZ1bmN0aW9uIGJuZihQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuYm5mID0ge1xuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogL1wiW15cXHJcXG5cIl0qXCJ8J1teXFxyXFxuJ10qJy9cbiAgICB9LFxuICAgIGRlZmluaXRpb246IHtcbiAgICAgIHBhdHRlcm46IC88W148PlxcclxcblxcdF0rPig/PVxccyo6Oj0pLyxcbiAgICAgIGFsaWFzOiBbJ3J1bGUnLCAna2V5d29yZCddLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIHB1bmN0dWF0aW9uOiAvXjx8PiQvXG4gICAgICB9XG4gICAgfSxcbiAgICBydWxlOiB7XG4gICAgICBwYXR0ZXJuOiAvPFtePD5cXHJcXG5cXHRdKz4vLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIHB1bmN0dWF0aW9uOiAvXjx8PiQvXG4gICAgICB9XG4gICAgfSxcbiAgICBvcGVyYXRvcjogLzo6PXxbfCgpW1xcXXt9Kis/XXxcXC57M30vXG4gIH1cbiAgUHJpc20ubGFuZ3VhZ2VzLnJibmYgPSBQcmlzbS5sYW5ndWFnZXMuYm5mXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBicmFpbmZ1Y2tcbmJyYWluZnVjay5kaXNwbGF5TmFtZSA9ICdicmFpbmZ1Y2snXG5icmFpbmZ1Y2suYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBicmFpbmZ1Y2soUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmJyYWluZnVjayA9IHtcbiAgICBwb2ludGVyOiB7XG4gICAgICBwYXR0ZXJuOiAvPHw+LyxcbiAgICAgIGFsaWFzOiAna2V5d29yZCdcbiAgICB9LFxuICAgIGluY3JlbWVudDoge1xuICAgICAgcGF0dGVybjogL1xcKy8sXG4gICAgICBhbGlhczogJ2luc2VydGVkJ1xuICAgIH0sXG4gICAgZGVjcmVtZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvLS8sXG4gICAgICBhbGlhczogJ2RlbGV0ZWQnXG4gICAgfSxcbiAgICBicmFuY2hpbmc6IHtcbiAgICAgIHBhdHRlcm46IC9cXFt8XFxdLyxcbiAgICAgIGFsaWFzOiAnaW1wb3J0YW50J1xuICAgIH0sXG4gICAgb3BlcmF0b3I6IC9bLixdLyxcbiAgICBjb21tZW50OiAvXFxTKy9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYnJpZ2h0c2NyaXB0XG5icmlnaHRzY3JpcHQuZGlzcGxheU5hbWUgPSAnYnJpZ2h0c2NyaXB0J1xuYnJpZ2h0c2NyaXB0LmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYnJpZ2h0c2NyaXB0KFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5icmlnaHRzY3JpcHQgPSB7XG4gICAgY29tbWVudDogLyg/OlxcYnJlbXwnKS4qL2ksXG4gICAgJ2RpcmVjdGl2ZS1zdGF0ZW1lbnQnOiB7XG4gICAgICBwYXR0ZXJuOiAvKF5bXFx0IF0qKSMoPzpjb25zdHxlbHNlKD86W1xcdCBdK2lmKT98ZW5kW1xcdCBdK2lmfGVycm9yfGlmKS4qL2ltLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAncHJvcGVydHknLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgICdlcnJvci1tZXNzYWdlJzoge1xuICAgICAgICAgIHBhdHRlcm46IC8oXiNlcnJvcikuKy8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBkaXJlY3RpdmU6IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvXiMoPzpjb25zdHxlbHNlKD86W1xcdCBdK2lmKT98ZW5kW1xcdCBdK2lmfGVycm9yfGlmKS8sXG4gICAgICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uOiB7XG4gICAgICAgICAgcGF0dGVybjogL1tcXHNcXFNdKy8sXG4gICAgICAgICAgaW5zaWRlOiBudWxsIC8vIHNlZSBiZWxvd1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wZXJ0eToge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyhbXFxyXFxueyxdW1xcdCBdKikoPzooPyFcXGQpXFx3K3xcIig/OlteXCJcXHJcXG5dfFwiXCIpKlwiKD8hXCIpKSg/PVsgXFx0XSo6KS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBzdHJpbmc6IHtcbiAgICAgIHBhdHRlcm46IC9cIig/OlteXCJcXHJcXG5dfFwiXCIpKlwiKD8hXCIpLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgJ2NsYXNzLW5hbWUnOiB7XG4gICAgICBwYXR0ZXJuOiAvKFxcYkFzW1xcdCBdKylcXHcrL2ksXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OkFzfERpbXxFYWNofEVsc2V8RWxzZWlmfEVuZHxFeGl0fEZvcnxGdW5jdGlvbnxHb3RvfElmfElufFByaW50fFJldHVybnxTdGVwfFN0b3B8U3VifFRoZW58VG98V2hpbGUpXFxiL2ksXG4gICAgYm9vbGVhbjogL1xcYig/OmZhbHNlfHRydWUpXFxiL2ksXG4gICAgZnVuY3Rpb246IC9cXGIoPyFcXGQpXFx3Kyg/PVtcXHQgXSpcXCgpLyxcbiAgICBudW1iZXI6IC8oPzpcXGJcXGQrKD86XFwuXFxkKyk/KD86W2VkXVsrLV1cXGQrKT98JmhbYS1mXFxkXSspXFxiWyUmISNdPy9pLFxuICAgIG9wZXJhdG9yOlxuICAgICAgLy0tfFxcK1xcK3w+Pj0/fDw8PT98PD58Wy0rKi9cXFxcPD5dPT98WzpePT9dfFxcYig/OmFuZHxtb2R8bm90fG9yKVxcYi9pLFxuICAgIHB1bmN0dWF0aW9uOiAvWy4sOygpW1xcXXt9XS8sXG4gICAgY29uc3RhbnQ6IC9cXGIoPzpMSU5FX05VTSlcXGIvaVxuICB9XG4gIFByaXNtLmxhbmd1YWdlcy5icmlnaHRzY3JpcHRbJ2RpcmVjdGl2ZS1zdGF0ZW1lbnQnXS5pbnNpZGUuZXhwcmVzc2lvbi5pbnNpZGUgPVxuICAgIFByaXNtLmxhbmd1YWdlcy5icmlnaHRzY3JpcHRcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJyb1xuYnJvLmRpc3BsYXlOYW1lID0gJ2JybydcbmJyby5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGJybyhQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuYnJvID0ge1xuICAgIGNvbW1lbnQ6IHtcbiAgICAgIHBhdHRlcm46IC8oXnxbXlxcXFwkXSkjLiovLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICBpdGFsaWM6IC9cXGIoPzpGSVhNRXxUT0RPfFhYWClcXGIvXG4gICAgICB9XG4gICAgfSxcbiAgICBzdHJpbmc6IHtcbiAgICAgIHBhdHRlcm46IC8oW1wiJ10pKD86XFxcXCg/OlxcclxcbnxbXFxzXFxTXSl8KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIGJvb2xlYW46IC9cXGJbVEZdXFxiLyxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgcGF0dGVybjogLyhcXGIoPzpldmVudHxmdW5jdGlvbnxob29rKVsgXFx0XSspXFx3Kyg/Ojo6XFx3Kyk/LyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIGJ1aWx0aW46XG4gICAgICAvKD86QCg/OmxvYWQoPzotKD86cGx1Z2lufHNpZ3MpKT98dW5sb2FkfHByZWZpeGVzfGlmbj9kZWZ8ZWxzZXwoPzplbmQpP2lmfERJUnxGSUxFTkFNRSkpfCg/OiY/KD86YWRkX2Z1bmN8Y3JlYXRlX2V4cGlyZXxkZWZhdWx0fGRlbGV0ZV9mdW5jfGVuY3J5cHR8ZXJyb3JfaGFuZGxlcnxleHBpcmVfZnVuY3xncm91cHxsb2d8bWVyZ2VhYmxlfG9wdGlvbmFsfHBlcnNpc3RlbnR8cHJpb3JpdHl8cmF3X291dHB1dHxyZWFkX2V4cGlyZXxyZWRlZnxyb3RhdGVfaW50ZXJ2YWx8cm90YXRlX3NpemV8c3luY2hyb25pemVkfHR5cGVfY29sdW1ufHdyaXRlX2V4cGlyZSkpLyxcbiAgICBjb25zdGFudDoge1xuICAgICAgcGF0dGVybjogLyhcXGJjb25zdFsgXFx0XSspXFx3Ky9pLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH0sXG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzphZGR8YWRkcnxhbGFybXxhbnl8Ym9vbHxicmVha3xjb25zdHxjb250aW51ZXxjb3VudHxkZWxldGV8ZG91YmxlfGVsc2V8ZW51bXxldmVudHxleHBvcnR8ZmlsZXxmb3J8ZnVuY3Rpb258Z2xvYmFsfGhvb2t8aWZ8aW58aW50fGludGVydmFsfGxvY2FsfG1vZHVsZXxuZXh0fG9mfG9wYXF1ZXxwYXR0ZXJufHBvcnR8cHJpbnR8cmVjb3JkfHJldHVybnxzY2hlZHVsZXxzZXR8c3RyaW5nfHN1Ym5ldHx0YWJsZXx0aW1lfHRpbWVvdXR8dXNpbmd8dmVjdG9yfHdoZW4pXFxiLyxcbiAgICBvcGVyYXRvcjogLy0tP3xcXCtcXCs/fCE9Pz0/fDw9P3w+PT98PT0/PT98JiZ8XFx8XFx8P3xcXD98XFwqfFxcL3x+fFxcXnwlLyxcbiAgICBudW1iZXI6IC9cXGIweFtcXGRhLWZdK1xcYnwoPzpcXGJcXGQrKD86XFwuXFxkKik/fFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/L2ksXG4gICAgcHVuY3R1YXRpb246IC9be31bXFxdOygpLC46XS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gYnNsXG5ic2wuZGlzcGxheU5hbWUgPSAnYnNsJ1xuYnNsLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gYnNsKFByaXNtKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLW1pc2xlYWRpbmctY2hhcmFjdGVyLWNsYXNzICovXG4gIC8vIDFDOkVudGVycHJpc2VcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0RpdmVyc3VzMjMvXG4gIC8vXG4gIFByaXNtLmxhbmd1YWdlcy5ic2wgPSB7XG4gICAgY29tbWVudDogL1xcL1xcLy4qLyxcbiAgICBzdHJpbmc6IFtcbiAgICAgIC8vINCh0YLRgNC+0LrQuFxuICAgICAgLy8gU3RyaW5nc1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvXCIoPzpbXlwiXXxcIlwiKSpcIig/IVwiKS8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSwgLy8g0JTQsNGC0LAg0Lgg0LLRgNC10LzRj1xuICAgICAgLy8gRGF0ZSAmIHRpbWVcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLycoPzpbXidcXHJcXG5cXFxcXXxcXFxcLikqJy9cbiAgICAgIH1cbiAgICBdLFxuICAgIGtleXdvcmQ6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gUlVcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvKF58W15cXHdcXHUwNDAwLVxcdTA0ODRcXHUwNDg3LVxcdTA1MmZcXHUxZDJiXFx1MWQ3OFxcdTJkZTAtXFx1MmRmZlxcdWE2NDAtXFx1YTY5ZlxcdWZlMmVcXHVmZTJmXSkoPzrQv9C+0LrQsHzQtNC70Y980L3QvtCy0YvQuXzQv9GA0LXRgNCy0LDRgtGMfNC/0L7Qv9GL0YLQutCwfNC40YHQutC70Y7Rh9C10L3QuNC1fNCy0YvQt9Cy0LDRgtGM0LjRgdC60LvRjtGH0LXQvdC40LV80LjQvdCw0YfQtXzQutC+0L3QtdGG0L/QvtC/0YvRgtC60Lh80L3QtdC+0L/RgNC10LTQtdC70LXQvdC+fNGE0YPQvdC60YbQuNGPfNC/0LXRgNC10Lx80LLQvtC30LLRgNCw0YJ80LrQvtC90LXRhtGE0YPQvdC60YbQuNC4fNC10YHQu9C4fNC40L3QsNGH0LXQtdGB0LvQuHzQv9GA0L7RhtC10LTRg9GA0LB80LrQvtC90LXRhtC/0YDQvtGG0LXQtNGD0YDRi3zRgtC+0LPQtNCwfNC30L3QsNGHfNGN0LrRgdC/0L7RgNGCfNC60L7QvdC10YbQtdGB0LvQuHzQuNC3fNC60LDQttC00L7Qs9C+fNC40YHRgtC40L3QsHzQu9C+0LbRjHzQv9C+fNGG0LjQutC7fNC60L7QvdC10YbRhtC40LrQu9CwfNCy0YvQv9C+0LvQvdC40YLRjCkoPyFbXFx3XFx1MDQwMC1cXHUwNDg0XFx1MDQ4Ny1cXHUwNTJmXFx1MWQyYlxcdTFkNzhcXHUyZGUwLVxcdTJkZmZcXHVhNjQwLVxcdWE2OWZcXHVmZTJlXFx1ZmUyZl0pL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIEVOXG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgL1xcYig/OmJyZWFrfGRvfGVhY2h8ZWxzZXxlbHNlaWZ8ZW5kZG98ZW5kZnVuY3Rpb258ZW5kaWZ8ZW5kcHJvY2VkdXJlfGVuZHRyeXxleGNlcHR8ZXhlY3V0ZXxleHBvcnR8ZmFsc2V8Zm9yfGZ1bmN0aW9ufGlmfGlufG5ld3xudWxsfHByb2NlZHVyZXxyYWlzZXxyZXR1cm58dGhlbnx0b3x0cnVlfHRyeXx1bmRlZmluZWR8dmFsfHZhcnx3aGlsZSlcXGIvaVxuICAgICAgfVxuICAgIF0sXG4gICAgbnVtYmVyOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvKF4oPz1cXGQpfFteXFx3XFx1MDQwMC1cXHUwNDg0XFx1MDQ4Ny1cXHUwNTJmXFx1MWQyYlxcdTFkNzhcXHUyZGUwLVxcdTJkZmZcXHVhNjQwLVxcdWE2OWZcXHVmZTJlXFx1ZmUyZl0pKD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSg/OkVbKy1dP1xcZCspPy9pLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH0sXG4gICAgb3BlcmF0b3I6IFtcbiAgICAgIC9bPD4rXFwtKi9dPT98WyU9XS8sIC8vIFJVXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFteXFx3XFx1MDQwMC1cXHUwNDg0XFx1MDQ4Ny1cXHUwNTJmXFx1MWQyYlxcdTFkNzhcXHUyZGUwLVxcdTJkZmZcXHVhNjQwLVxcdWE2OWZcXHVmZTJlXFx1ZmUyZl0pKD860Lh80LjQu9C4fNC90LUpKD8hW1xcd1xcdTA0MDAtXFx1MDQ4NFxcdTA0ODctXFx1MDUyZlxcdTFkMmJcXHUxZDc4XFx1MmRlMC1cXHUyZGZmXFx1YTY0MC1cXHVhNjlmXFx1ZmUyZVxcdWZlMmZdKS9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LCAvLyBFTlxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvXFxiKD86YW5kfG5vdHxvcilcXGIvaVxuICAgICAgfVxuICAgIF0sXG4gICAgcHVuY3R1YXRpb246IC9cXChcXC58XFwuXFwpfFsoKVxcW1xcXTo7LC5dLyxcbiAgICBkaXJlY3RpdmU6IFtcbiAgICAgIC8vINCi0LXQs9C4INC/0YDQtdC/0YDQvtGG0LXRgdGB0L7RgNCwINCy0LjQtNCwICbQmtC70LjQtdC90YIsICbQodC10YDQstC10YAsIC4uLlxuICAgICAgLy8gUHJlcHJvY2Vzc29yIHRhZ3Mgb2YgdGhlIHR5cGUgJkNsaWVudCwgJlNlcnZlciwgLi4uXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC9eKFsgXFx0XSopJi4qL20sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdpbXBvcnRhbnQnXG4gICAgICB9LCAvLyDQmNC90YHRgtGA0YPQutGG0LjQuCDQv9GA0LXQv9GA0L7RhtC10YHRgdC+0YDQsCDQstC40LTQsDpcbiAgICAgIC8vICPQldGB0LvQuCDQodC10YDQstC10YAg0KLQvtCz0LTQsFxuICAgICAgLy8gLi4uXG4gICAgICAvLyAj0JrQvtC90LXRhtCV0YHQu9C4XG4gICAgICAvLyBQcmVwcm9jZXNzb3IgaW5zdHJ1Y3Rpb25zIG9mIHRoZSBmb3JtOlxuICAgICAgLy8gI0lmIFNlcnZlciBUaGVuXG4gICAgICAvLyAuLi5cbiAgICAgIC8vICNFbmRJZlxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvXihbIFxcdF0qKSMuKi9nbSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBhbGlhczogJ2ltcG9ydGFudCdcbiAgICAgIH1cbiAgICBdXG4gIH1cbiAgUHJpc20ubGFuZ3VhZ2VzLm9zY3JpcHQgPSBQcmlzbS5sYW5ndWFnZXNbJ2JzbCddXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjZnNjcmlwdFxuY2ZzY3JpcHQuZGlzcGxheU5hbWUgPSAnY2ZzY3JpcHQnXG5jZnNjcmlwdC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGNmc2NyaXB0KFByaXNtKSB7XG4gIC8vIGh0dHBzOi8vY2Zkb2NzLm9yZy9zY3JpcHRcbiAgUHJpc20ubGFuZ3VhZ2VzLmNmc2NyaXB0ID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnY2xpa2UnLCB7XG4gICAgY29tbWVudDogW1xuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/KD86XFwqXFwvfCQpLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgYW5ub3RhdGlvbjoge1xuICAgICAgICAgICAgcGF0dGVybjogLyg/Ol58W14uXSlAW1xcd1xcLl0rLyxcbiAgICAgICAgICAgIGFsaWFzOiAncHVuY3R1YXRpb24nXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKF58W15cXFxcOl0pXFwvXFwvLiovLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgIGtleXdvcmQ6XG4gICAgICAvXFxiKD86YWJzdHJhY3R8YnJlYWt8Y2F0Y2h8Y29tcG9uZW50fGNvbnRpbnVlfGRlZmF1bHR8ZG98ZWxzZXxleHRlbmRzfGZpbmFsfGZpbmFsbHl8Zm9yfGZ1bmN0aW9ufGlmfGlufGluY2x1ZGV8cGFja2FnZXxwcml2YXRlfHByb3BlcnR5fHB1YmxpY3xyZW1vdGV8cmVxdWlyZWR8cmV0aHJvd3xyZXR1cm58c3RhdGljfHN3aXRjaHx0aHJvd3x0cnl8dmFyfHdoaWxlfHhtbClcXGIoPyFcXHMqPSkvLFxuICAgIG9wZXJhdG9yOiBbXG4gICAgICAvXFwrXFwrfC0tfCYmfFxcfFxcfHw6Onw9PnxbIT1dPT18PD0/fD49P3xbLSsqLyUmfF4hPTw+XT0/fFxcPyg/OlxcLnw6KT98Wz86XS8sXG4gICAgICAvXFxiKD86YW5kfGNvbnRhaW5zfGVxfGVxdWFsfGVxdnxndHxndGV8aW1wfGlzfGx0fGx0ZXxtb2R8bm90fG9yfHhvcilcXGIvXG4gICAgXSxcbiAgICBzY29wZToge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgL1xcYig/OmFwcGxpY2F0aW9ufGFyZ3VtZW50c3xjZ2l8Y2xpZW50fGNvb2tpZXxsb2NhbHxzZXNzaW9ufHN1cGVyfHRoaXN8dmFyaWFibGVzKVxcYi8sXG4gICAgICBhbGlhczogJ2dsb2JhbCdcbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9cXGIoPzphbnl8YXJyYXl8YmluYXJ5fGJvb2xlYW58ZGF0ZXxndWlkfG51bWVyaWN8cXVlcnl8c3RyaW5nfHN0cnVjdHx1dWlkfHZvaWR8eG1sKVxcYi8sXG4gICAgICBhbGlhczogJ2J1aWx0aW4nXG4gICAgfVxuICB9KVxuICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdjZnNjcmlwdCcsICdrZXl3b3JkJywge1xuICAgIC8vIFRoaXMgbXVzdCBiZSBkZWNsYXJlZCBiZWZvcmUga2V5d29yZCBiZWNhdXNlIHdlIHVzZSBcImZ1bmN0aW9uXCIgaW5zaWRlIHRoZSBsb29rYWhlYWRcbiAgICAnZnVuY3Rpb24tdmFyaWFibGUnOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvW18kYS16QS1aXFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWyRcXHdcXHhBMC1cXHVGRkZGXSkqKD89XFxzKls9Ol1cXHMqKD86XFxiZnVuY3Rpb25cXGJ8KD86XFwoKD86W14oKV18XFwoW14oKV0qXFwpKSpcXCl8KD8hXFxzKVtfJGEtekEtWlxceEEwLVxcdUZGRkZdKD86KD8hXFxzKVskXFx3XFx4QTAtXFx1RkZGRl0pKilcXHMqPT4pKS8sXG4gICAgICBhbGlhczogJ2Z1bmN0aW9uJ1xuICAgIH1cbiAgfSlcbiAgZGVsZXRlIFByaXNtLmxhbmd1YWdlcy5jZnNjcmlwdFsnY2xhc3MtbmFtZSddXG4gIFByaXNtLmxhbmd1YWdlcy5jZmMgPSBQcmlzbS5sYW5ndWFnZXNbJ2Nmc2NyaXB0J11cbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIHJlZnJhY3RvckNwcCA9IHJlcXVpcmUoJy4vY3BwLmpzJylcbm1vZHVsZS5leHBvcnRzID0gY2hhaXNjcmlwdFxuY2hhaXNjcmlwdC5kaXNwbGF5TmFtZSA9ICdjaGFpc2NyaXB0J1xuY2hhaXNjcmlwdC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGNoYWlzY3JpcHQoUHJpc20pIHtcbiAgUHJpc20ucmVnaXN0ZXIocmVmcmFjdG9yQ3BwKVxuICBQcmlzbS5sYW5ndWFnZXMuY2hhaXNjcmlwdCA9IFByaXNtLmxhbmd1YWdlcy5leHRlbmQoJ2NsaWtlJywge1xuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogLyhefFteXFxcXF0pJyg/OlteJ1xcXFxdfFxcXFxbXFxzXFxTXSkqJy8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICAnY2xhc3MtbmFtZSc6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gZS5nLiBjbGFzcyBSZWN0YW5nbGUgeyAuLi4gfVxuICAgICAgICBwYXR0ZXJuOiAvKFxcYmNsYXNzXFxzKylcXHcrLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gZS5nLiBhdHRyIFJlY3RhbmdsZTo6aGVpZ2h0LCBkZWYgUmVjdGFuZ2xlOjphcmVhKCkgeyAuLi4gfVxuICAgICAgICBwYXR0ZXJuOiAvKFxcYig/OmF0dHJ8ZGVmKVxccyspXFx3Kyg/PVxccyo6OikvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9XG4gICAgXSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmF0dHJ8YXV0b3xicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnRpbnVlfGRlZnxkZWZhdWx0fGVsc2V8ZmluYWxseXxmb3J8ZnVufGdsb2JhbHxpZnxyZXR1cm58c3dpdGNofHRoaXN8dHJ5fHZhcnx3aGlsZSlcXGIvLFxuICAgIG51bWJlcjogW1ByaXNtLmxhbmd1YWdlcy5jcHAubnVtYmVyLCAvXFxiKD86SW5maW5pdHl8TmFOKVxcYi9dLFxuICAgIG9wZXJhdG9yOlxuICAgICAgLz4+PT98PDw9P3xcXHxcXHx8JiZ8Ols6PV0/fC0tfFxcK1xcK3xbPSE8PitcXC0qLyV8Jl5dPT98Wz9+XXxgW15gXFxyXFxuXXsxLDR9YC9cbiAgfSlcbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnY2hhaXNjcmlwdCcsICdvcGVyYXRvcicsIHtcbiAgICAncGFyYW1ldGVyLXR5cGUnOiB7XG4gICAgICAvLyBlLmcuIGRlZiBmb28oaW50IHgsIFZlY3RvciB5KSB7Li4ufVxuICAgICAgcGF0dGVybjogLyhbLChdXFxzKilcXHcrKD89XFxzK1xcdykvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZSdcbiAgICB9XG4gIH0pXG4gIFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoJ2NoYWlzY3JpcHQnLCAnc3RyaW5nJywge1xuICAgICdzdHJpbmctaW50ZXJwb2xhdGlvbic6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oXnxbXlxcXFxdKVwiKD86W15cIiRcXFxcXXxcXFxcW1xcc1xcU118XFwkKD8hXFx7KXxcXCRcXHsoPzpbXnt9XXxcXHsoPzpbXnt9XXxcXHtbXnt9XSpcXH0pKlxcfSkqXFx9KSpcIi8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgICAgLygoPzpefFteXFxcXF0pKD86XFxcXHsyfSkqKVxcJFxceyg/Oltee31dfFxceyg/Oltee31dfFxce1tee31dKlxcfSkqXFx9KSpcXH0vLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICAnaW50ZXJwb2xhdGlvbi1leHByZXNzaW9uJzoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF5cXCRcXHspW1xcc1xcU10rKD89XFx9JCkvLFxuICAgICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5jaGFpc2NyaXB0XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2ludGVycG9sYXRpb24tcHVuY3R1YXRpb24nOiB7XG4gICAgICAgICAgICAgIHBhdHRlcm46IC9eXFwkXFx7fFxcfSQvLFxuICAgICAgICAgICAgICBhbGlhczogJ3B1bmN0dWF0aW9uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3RyaW5nOiAvW1xcc1xcU10rL1xuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNpbFxuY2lsLmRpc3BsYXlOYW1lID0gJ2NpbCdcbmNpbC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGNpbChQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuY2lsID0ge1xuICAgIGNvbW1lbnQ6IC9cXC9cXC8uKi8sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvKFtcIiddKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBkaXJlY3RpdmU6IHtcbiAgICAgIHBhdHRlcm46IC8oXnxcXFcpXFwuW2Etel0rKD89XFxzKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgYWxpYXM6ICdjbGFzcy1uYW1lJ1xuICAgIH0sXG4gICAgLy8gQWN0dWFsbHkgYW4gYXNzZW1ibHkgcmVmZXJlbmNlXG4gICAgdmFyaWFibGU6IC9cXFtbXFx3XFwuXStcXF0vLFxuICAgIGtleXdvcmQ6XG4gICAgICAvXFxiKD86YWJzdHJhY3R8YW5zaXxhc3NlbWJseXxhdXRvfGF1dG9jaGFyfGJlZm9yZWZpZWxkaW5pdHxib29sfGJzdHJ8Ynl2YWxzdHJ8Y2F0Y2h8Y2hhcnxjaWx8Y2xhc3N8Y3VycmVuY3l8ZGF0ZXxkZWNpbWFsfGRlZmF1bHR8ZW51bXxlcnJvcnxleHBsaWNpdHxleHRlbmRzfGV4dGVybnxmYW1hbmRhc3NlbXxmYW1pbHl8ZmFtb3Jhc3NlbXxmaW5hbCg/Omx5KT98ZmxvYXQzMnxmbG9hdDY0fGhpZGVieXNpZ3x1P2ludCg/Ojh8MTZ8MzJ8NjQpP3xpYW50fGlkaXNwYXRjaHxpbXBsZW1lbnRzfGltcG9ydHxpbml0b25seXxpbnN0YW5jZXxpbnRlcmZhY2V8aXVua25vd258bGl0ZXJhbHxscHN0cnxscHN0cnVjdHxscHRzdHJ8bHB3c3RyfG1hbmFnZWR8bWV0aG9kfG5hdGl2ZSg/OlR5cGUpP3xuZXN0ZWR8bmV3c2xvdHxvYmplY3QoPzpyZWYpP3xwaW52b2tlaW1wbHxwcml2YXRlfHByaXZhdGVzY29wZXxwdWJsaWN8cmVxc2Vjb2JqfHJ0c3BlY2lhbG5hbWV8cnVudGltZXxzZWFsZWR8c2VxdWVudGlhbHxzZXJpYWxpemFibGV8c3BlY2lhbG5hbWV8c3RhdGljfHN0cmluZ3xzdHJ1Y3R8c3lzY2hhcnx0YnN0cnx1bmljb2RlfHVubWFuYWdlZGV4cHx1bnNpZ25lZHx2YWx1ZSg/OnR5cGUpP3x2YXJpYW50fHZpcnR1YWx8dm9pZClcXGIvLFxuICAgIGZ1bmN0aW9uOlxuICAgICAgL1xcYig/Oig/OmNvbnN0cmFpbmVkfG5vfHJlYWRvbmx5fHRhaWx8dW5hbGlnbmVkfHZvbGF0aWxlKVxcLik/KD86Y29udlxcLig/OltpdV1bMTI0OF0/fG92ZlxcLltpdV1bMTI0OF0/KD86XFwudW4pP3xyXFwudW58cjR8cjgpfGxkY1xcLig/Omk0KD86XFwuXFxkK3xcXC5bbU1dMXxcXC5zKT98aTh8cjR8cjgpfGxkZWxlbSg/OlxcLltpdV1bMTI0OF0/fFxcLnJbNDhdfFxcLnJlZnxhKT98bGRpbmRcXC4oPzpbaXVdWzEyNDhdP3xyWzQ4XXxyZWYpfHN0ZWxlbVxcLj8oPzppWzEyNDhdP3xyWzQ4XXxyZWYpP3xzdGluZFxcLig/OmlbMTI0OF0/fHJbNDhdfHJlZik/fGVuZCg/OmZhdWx0fGZpbHRlcnxmaW5hbGx5KXxsZGFyZyg/OlxcLlswLTNzXXxhKD86XFwucyk/KT98bGRsb2MoPzpcXC5cXGQrfFxcLnMpP3xzdWIoPzpcXC5vdmYoPzpcXC51bik/KT98bXVsKD86XFwub3ZmKD86XFwudW4pPyk/fGFkZCg/OlxcLm92Zig/OlxcLnVuKT8pP3xzdGxvYyg/OlxcLlswLTNzXSk/fHJlZmFueSg/OnR5cGV8dmFsKXxibHQoPzpcXC51bik/KD86XFwucyk/fGJsZSg/OlxcLnVuKT8oPzpcXC5zKT98Ymd0KD86XFwudW4pPyg/OlxcLnMpP3xiZ2UoPzpcXC51bik/KD86XFwucyk/fHVuYm94KD86XFwuYW55KT98aW5pdCg/OmJsa3xvYmopfGNhbGwoPzppfHZpcnQpP3xicmZhbHNlKD86XFwucyk/fGJuZVxcLnVuKD86XFwucyk/fGxkbG9jYSg/OlxcLnMpP3xicnplcm8oPzpcXC5zKT98YnJ0cnVlKD86XFwucyk/fGJybnVsbCg/OlxcLnMpP3xicmluc3QoPzpcXC5zKT98c3RhcmcoPzpcXC5zKT98bGVhdmUoPzpcXC5zKT98c2hyKD86XFwudW4pP3xyZW0oPzpcXC51bik/fGRpdig/OlxcLnVuKT98Y2x0KD86XFwudW4pP3xhbGlnbm1lbnR8Y2FzdGNsYXNzfGxkdmlydGZ0bnxiZXEoPzpcXC5zKT98Y2tmaW5pdGV8bGRzZmxkYXxsZHRva2VufGxvY2FsbG9jfG1rcmVmYW55fHJldGhyb3d8Y2d0XFwudW58YXJnbGlzdHxzd2l0Y2h8c3RzZmxkfHNpemVvZnxuZXdvYmp8bmV3YXJyfGxkc2ZsZHxsZG51bGx8bGRmbGRhfGlzaW5zdHx0aHJvd3xzdG9ianxzdGZsZHxsZHN0cnxsZG9ianxsZGxlbnxsZGZ0bnxsZGZsZHxjcG9ianxjcGJsa3xicmVha3xiclxcLnN8eG9yfHNobHxyZXR8cG9wfG5vdHxub3B8bmVnfGptcHxkdXB8Y2d0fGNlcXxib3h8YW5kfG9yfGJyKVxcYi8sXG4gICAgYm9vbGVhbjogL1xcYig/OmZhbHNlfHRydWUpXFxiLyxcbiAgICBudW1iZXI6IC9cXGItPyg/OjB4WzAtOWEtZl0rfFxcZCspKD86XFwuWzAtOWEtZl0rKT9cXGIvaSxcbiAgICBwdW5jdHVhdGlvbjogL1t7fVtcXF07KCksOj1dfElMX1swLTlBLVphLXpdKy9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY2xvanVyZVxuY2xvanVyZS5kaXNwbGF5TmFtZSA9ICdjbG9qdXJlJ1xuY2xvanVyZS5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGNsb2p1cmUoUHJpc20pIHtcbiAgLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2plbHVhcmQvcHJpc20tY2xvanVyZVxuICBQcmlzbS5sYW5ndWFnZXMuY2xvanVyZSA9IHtcbiAgICBjb21tZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvOy4qLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvXCIoPzpbXlwiXFxcXF18XFxcXC4pKlwiLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgY2hhcjogL1xcXFxcXHcrLyxcbiAgICBzeW1ib2w6IHtcbiAgICAgIHBhdHRlcm46IC8oXnxbXFxzKClcXFtcXF17fSxdKTo6P1tcXHcqKyE/Jzw+PS8uLV0rLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIGtleXdvcmQ6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oXFwoKSg/Oi18LT58LT4+fFxcLnxcXC5cXC58XFwqfFxcL3xcXCt8PHw8PXw9fD09fD58Pj18YWNjZXNzb3J8YWdlbnR8YWdlbnQtZXJyb3JzfGFnZXR8YWxlbmd0aHxhbGwtbnN8YWx0ZXJ8YW5kfGFwcGVuZC1jaGlsZHxhcHBseXxhcnJheS1tYXB8YXNldHxhc2V0LWJvb2xlYW58YXNldC1ieXRlfGFzZXQtY2hhcnxhc2V0LWRvdWJsZXxhc2V0LWZsb2F0fGFzZXQtaW50fGFzZXQtbG9uZ3xhc2V0LXNob3J0fGFzc2VydHxhc3NvY3xhd2FpdHxhd2FpdC1mb3J8YmVhbnxiaW5kaW5nfGJpdC1hbmR8Yml0LW5vdHxiaXQtb3J8Yml0LXNoaWZ0LWxlZnR8Yml0LXNoaWZ0LXJpZ2h0fGJpdC14b3J8Ym9vbGVhbnxicmFuY2hcXD98YnV0bGFzdHxieXRlfGNhc3R8Y2hhcnxjaGlsZHJlbnxjbGFzc3xjbGVhci1hZ2VudC1lcnJvcnN8Y29tbWVudHxjb21tdXRlfGNvbXB8Y29tcGFyYXRvcnxjb21wbGVtZW50fGNvbmNhdHxjb25kfGNvbmp8Y29uc3xjb25zdGFudGx5fGNvbnN0cnVjdC1wcm94eXxjb250YWluc1xcP3xjb3VudHxjcmVhdGUtbnN8Y3JlYXRlLXN0cnVjdHxjeWNsZXxkZWN8ZGVjbGFyZXxkZWZ8ZGVmLXxkZWZpbmxpbmV8ZGVmaW50ZXJmYWNlfGRlZm1hY3JvfGRlZm1ldGhvZHxkZWZtdWx0aXxkZWZufGRlZm4tfGRlZm9uY2V8ZGVmcHJvamVjdHxkZWZwcm90b2NvbHxkZWZyZWNvcmR8ZGVmc3RydWN0fGRlZnR5cGV8ZGVyZWZ8ZGlmZmVyZW5jZXxkaXNqfGRpc3NvY3xkaXN0aW5jdHxkb3xkb2FsbHxkb2N8ZG9ydW58ZG9zZXF8ZG9zeW5jfGRvdGltZXN8ZG90b3xkb3VibGV8ZG93bnxkcm9wfGRyb3Atd2hpbGV8ZWRpdHxlbmRcXD98ZW5zdXJlfGV2YWx8ZXZlcnlcXD98ZmFsc2VcXD98ZmZpcnN0fGZpbGUtc2VxfGZpbHRlcnxmaW5kfGZpbmQtZG9jfGZpbmQtbnN8ZmluZC12YXJ8Zmlyc3R8ZmxvYXR8Zmx1c2h8Zm58Zm5zZXF8Zm9yfGZyZXN0fGdlbnN5bXxnZXR8Z2V0LXByb3h5LWNsYXNzfGhhc2gtbWFwfGhhc2gtc2V0fGlkZW50aWNhbFxcP3xpZGVudGl0eXxpZnxpZi1sZXR8aWYtbm90fGltcG9ydHxpbi1uc3xpbmN8aW5kZXh8aW5zZXJ0LWNoaWxkfGluc2VydC1sZWZ0fGluc2VydC1yaWdodHxpbnNwZWN0LXRhYmxlfGluc3BlY3QtdHJlZXxpbnN0YW5jZVxcP3xpbnR8aW50ZXJsZWF2ZXxpbnRlcnNlY3Rpb258aW50b3xpbnRvLWFycmF5fGl0ZXJhdGV8am9pbnxrZXl8a2V5c3xrZXl3b3JkfGtleXdvcmRcXD98bGFzdHxsYXp5LWNhdHxsYXp5LWNvbnN8bGVmdHxsZWZ0c3xsZXR8bGluZS1zZXF8bGlzdHxsaXN0XFwqfGxvYWR8bG9hZC1maWxlfGxvY2tpbmd8bG9uZ3xsb29wfG1hY3JvZXhwYW5kfG1hY3JvZXhwYW5kLTF8bWFrZS1hcnJheXxtYWtlLW5vZGV8bWFwfG1hcC1pbnZlcnR8bWFwXFw/fG1hcGNhdHxtYXh8bWF4LWtleXxtZW1mbnxtZXJnZXxtZXJnZS13aXRofG1ldGF8bWlufG1pbi1rZXl8bW9uaXRvci1lbnRlcnxuYW1lfG5hbWVzcGFjZXxuZWdcXD98bmV3fG5ld2xpbmV8bmV4dHxuaWxcXD98bm9kZXxub3R8bm90LWFueVxcP3xub3QtZXZlcnlcXD98bm90PXxuc3xucy1pbXBvcnRzfG5zLWludGVybnN8bnMtbWFwfG5zLW5hbWV8bnMtcHVibGljc3xucy1yZWZlcnN8bnMtcmVzb2x2ZXxucy11bm1hcHxudGh8bnRocmVzdHxvcnxwYXJzZXxwYXJ0aWFsfHBhdGh8cGVla3xwb3B8cG9zXFw/fHByfHByLXN0cnxwcmludHxwcmludC1zdHJ8cHJpbnRsbnxwcmludGxuLXN0cnxwcm58cHJuLXN0cnxwcm9qZWN0fHByb3h5fHByb3h5LW1hcHBpbmdzfHF1b3R8cXVvdGV8cmFuZHxyYW5kLWludHxyYW5nZXxyZS1maW5kfHJlLWdyb3Vwc3xyZS1tYXRjaGVyfHJlLW1hdGNoZXN8cmUtcGF0dGVybnxyZS1zZXF8cmVhZHxyZWFkLWxpbmV8cmVjdXJ8cmVkdWNlfHJlZnxyZWYtc2V0fHJlZmVyfHJlbXxyZW1vdmV8cmVtb3ZlLW1ldGhvZHxyZW1vdmUtbnN8cmVuYW1lfHJlbmFtZS1rZXlzfHJlcGVhdHxyZXBsYWNlfHJlcGxpY2F0ZXxyZXNvbHZlfHJlc3R8cmVzdWx0c2V0LXNlcXxyZXZlcnNlfHJmaXJzdHxyaWdodHxyaWdodHN8cm9vdHxycmVzdHxyc2VxfHNlY29uZHxzZWxlY3R8c2VsZWN0LWtleXN8c2VuZHxzZW5kLW9mZnxzZXF8c2VxLXppcHxzZXFcXD98c2V0fHNldCF8c2hvcnR8c2x1cnB8c29tZXxzb3J0fHNvcnQtYnl8c29ydGVkLW1hcHxzb3J0ZWQtbWFwLWJ5fHNvcnRlZC1zZXR8c3BlY2lhbC1zeW1ib2xcXD98c3BsaXQtYXR8c3BsaXQtd2l0aHxzdHJ8c3RyaW5nXFw/fHN0cnVjdHxzdHJ1Y3QtbWFwfHN1YnN8c3VidmVjfHN5bWJvbHxzeW1ib2xcXD98c3luY3x0YWtlfHRha2UtbnRofHRha2Utd2hpbGV8dGVzdHx0aHJvd3x0aW1lfHRvLWFycmF5fHRvLWFycmF5LTJkfHRyZWUtc2VxfHRydWVcXD98dHJ5fHVuaW9ufHVwfHVwZGF0ZS1wcm94eXx2YWx8dmFsc3x2YXJ8dmFyLWdldHx2YXItc2V0fHZhclxcP3x2ZWN0b3J8dmVjdG9yLXppcHx2ZWN0b3JcXD98d2hlbnx3aGVuLWZpcnN0fHdoZW4tbGV0fHdoZW4tbm90fHdpdGgtbG9jYWwtdmFyc3x3aXRoLW1ldGF8d2l0aC1vcGVufHdpdGgtb3V0LXN0cnx4bWwtc2VxfHhtbC16aXB8emVyb1xcP3x6aXBtYXB8emlwcGVyKSg/PVtcXHMpXXwkKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8bmlsfHRydWUpXFxiLyxcbiAgICBudW1iZXI6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oXnxbXlxcdyRAXSkoPzpcXGQrKD86Wy8uXVxcZCspPyg/OmVbKy1dP1xcZCspP3wweFthLWYwLTldK3xbMS05XVxcZD9yW2EtejAtOV0rKVtsbW5dPyg/IVtcXHckQF0pL2ksXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgcGF0dGVybjogLygoPzpefFteJ10pXFwoKVtcXHcqKyE/Jzw+PS8uLV0rKD89W1xccyldfCQpLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIG9wZXJhdG9yOiAvWyNAXmB+XS8sXG4gICAgcHVuY3R1YXRpb246IC9be31cXFtcXF0oKSxdL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjbWFrZVxuY21ha2UuZGlzcGxheU5hbWUgPSAnY21ha2UnXG5jbWFrZS5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGNtYWtlKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5jbWFrZSA9IHtcbiAgICBjb21tZW50OiAvIy4qLyxcbiAgICBzdHJpbmc6IHtcbiAgICAgIHBhdHRlcm46IC9cIig/OlteXFxcXFwiXXxcXFxcLikqXCIvLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvXFwkXFx7KD86W157fSRdfFxcJFxce1tee30kXSpcXH0pKlxcfS8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogL1xcJFxce3xcXH0vLFxuICAgICAgICAgICAgdmFyaWFibGU6IC9cXHcrL1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgdmFyaWFibGU6XG4gICAgICAvXFxiKD86Q01BS0VfXFx3K3xcXHcrXyg/Oig/OkJJTkFSWXxTT1VSQ0UpX0RJUnxERVNDUklQVElPTnxIT01FUEFHRV9VUkx8Uk9PVHxWRVJTSU9OKD86X01BSk9SfF9NSU5PUnxfUEFUQ0h8X1RXRUFLKT8pfCg/OkFORFJPSUR8QVBQTEV8Qk9STEFORHxCVUlMRF9TSEFSRURfTElCU3xDQUNIRXxDUEFDS18oPzpBQlNPTFVURV9ERVNUSU5BVElPTl9GSUxFU3xDT01QT05FTlRfSU5DTFVERV9UT1BMRVZFTF9ESVJFQ1RPUll8RVJST1JfT05fQUJTT0xVVEVfSU5TVEFMTF9ERVNUSU5BVElPTnxJTkNMVURFX1RPUExFVkVMX0RJUkVDVE9SWXxJTlNUQUxMX0RFRkFVTFRfRElSRUNUT1JZX1BFUk1JU1NJT05TfElOU1RBTExfU0NSSVBUfFBBQ0tBR0lOR19JTlNUQUxMX1BSRUZJWHxTRVRfREVTVERJUnxXQVJOX09OX0FCU09MVVRFX0lOU1RBTExfREVTVElOQVRJT04pfENURVNUXyg/OkJJTkFSWV9ESVJFQ1RPUll8QlVJTERfQ09NTUFORHxCVUlMRF9OQU1FfEJaUl9DT01NQU5EfEJaUl9VUERBVEVfT1BUSU9OU3xDSEFOR0VfSUR8Q0hFQ0tPVVRfQ09NTUFORHxDT05GSUdVUkFUSU9OX1RZUEV8Q09ORklHVVJFX0NPTU1BTkR8Q09WRVJBR0VfQ09NTUFORHxDT1ZFUkFHRV9FWFRSQV9GTEFHU3xDVVJMX09QVElPTlN8Q1VTVE9NXyg/OkNPVkVSQUdFX0VYQ0xVREV8RVJST1JfRVhDRVBUSU9OfEVSUk9SX01BVENIfEVSUk9SX1BPU1RfQ09OVEVYVHxFUlJPUl9QUkVfQ09OVEVYVHxNQVhJTVVNX0ZBSUxFRF9URVNUX09VVFBVVF9TSVpFfE1BWElNVU1fTlVNQkVSX09GXyg/OkVSUk9SU3xXQVJOSU5HUyl8TUFYSU1VTV9QQVNTRURfVEVTVF9PVVRQVVRfU0laRXxNRU1DSEVDS19JR05PUkV8UE9TVF9NRU1DSEVDS3xQT1NUX1RFU1R8UFJFX01FTUNIRUNLfFBSRV9URVNUfFRFU1RTX0lHTk9SRXxXQVJOSU5HX0VYQ0VQVElPTnxXQVJOSU5HX01BVENIKXxDVlNfQ0hFQ0tPVVR8Q1ZTX0NPTU1BTkR8Q1ZTX1VQREFURV9PUFRJT05TfERST1BfTE9DQVRJT058RFJPUF9NRVRIT0R8RFJPUF9TSVRFfERST1BfU0lURV9DREFTSHxEUk9QX1NJVEVfUEFTU1dPUkR8RFJPUF9TSVRFX1VTRVJ8RVhUUkFfQ09WRVJBR0VfR0xPQnxHSVRfQ09NTUFORHxHSVRfSU5JVF9TVUJNT0RVTEVTfEdJVF9VUERBVEVfQ1VTVE9NfEdJVF9VUERBVEVfT1BUSU9OU3xIR19DT01NQU5EfEhHX1VQREFURV9PUFRJT05TfExBQkVMU19GT1JfU1VCUFJPSkVDVFN8TUVNT1JZQ0hFQ0tfKD86Q09NTUFORHxDT01NQU5EX09QVElPTlN8U0FOSVRJWkVSX09QVElPTlN8U1VQUFJFU1NJT05TX0ZJTEV8VFlQRSl8TklHSFRMWV9TVEFSVF9USU1FfFA0X0NMSUVOVHxQNF9DT01NQU5EfFA0X09QVElPTlN8UDRfVVBEQVRFX09QVElPTlN8UlVOX0NVUlJFTlRfU0NSSVBUfFNDUF9DT01NQU5EfFNJVEV8U09VUkNFX0RJUkVDVE9SWXxTVUJNSVRfVVJMfFNWTl9DT01NQU5EfFNWTl9PUFRJT05TfFNWTl9VUERBVEVfT1BUSU9OU3xURVNUX0xPQUR8VEVTVF9USU1FT1VUfFRSSUdHRVJfU0lURXxVUERBVEVfQ09NTUFORHxVUERBVEVfT1BUSU9OU3xVUERBVEVfVkVSU0lPTl9PTkxZfFVTRV9MQVVOQ0hFUlMpfENZR1dJTnxFTlZ8RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSHxHSFMtTVVMVEl8SU9TfExJQlJBUllfT1VUUFVUX1BBVEh8TUlOR1d8TVNWQyg/OjEwfDExfDEyfDE0fDYwfDcwfDcxfDgwfDkwfF9JREV8X1RPT0xTRVRfVkVSU0lPTnxfVkVSU0lPTik/fE1TWVN8UFJPSkVDVF8oPzpCSU5BUllfRElSfERFU0NSSVBUSU9OfEhPTUVQQUdFX1VSTHxOQU1FfFNPVVJDRV9ESVJ8VkVSU0lPTnxWRVJTSU9OXyg/Ok1BSk9SfE1JTk9SfFBBVENIfFRXRUFLKSl8VU5JWHxXSU4zMnxXSU5DRXxXSU5ET1dTX1BIT05FfFdJTkRPV1NfU1RPUkV8WENPREV8WENPREVfVkVSU0lPTikpXFxiLyxcbiAgICBwcm9wZXJ0eTpcbiAgICAgIC9cXGIoPzpjeHhfXFx3K3woPzpBUkNISVZFX09VVFBVVF8oPzpESVJFQ1RPUll8TkFNRSl8Q09NUElMRV9ERUZJTklUSU9OU3xDT01QSUxFX1BEQl9OQU1FfENPTVBJTEVfUERCX09VVFBVVF9ESVJFQ1RPUll8RVhDTFVERV9GUk9NX0RFRkFVTFRfQlVJTER8SU1QT1JURURfKD86SU1QTElCfExJQk5BTUV8TElOS19ERVBFTkRFTlRfTElCUkFSSUVTfExJTktfSU5URVJGQUNFX0xBTkdVQUdFU3xMSU5LX0lOVEVSRkFDRV9MSUJSQVJJRVN8TElOS19JTlRFUkZBQ0VfTVVMVElQTElDSVRZfExPQ0FUSU9OfE5PX1NPTkFNRXxPQkpFQ1RTfFNPTkFNRSl8SU5URVJQUk9DRURVUkFMX09QVElNSVpBVElPTnxMSUJSQVJZX09VVFBVVF9ESVJFQ1RPUll8TElCUkFSWV9PVVRQVVRfTkFNRXxMSU5LX0ZMQUdTfExJTktfSU5URVJGQUNFX0xJQlJBUklFU3xMSU5LX0lOVEVSRkFDRV9NVUxUSVBMSUNJVFl8TE9DQVRJT058TUFQX0lNUE9SVEVEX0NPTkZJR3xPU1hfQVJDSElURUNUVVJFU3xPVVRQVVRfTkFNRXxQREJfTkFNRXxQREJfT1VUUFVUX0RJUkVDVE9SWXxSVU5USU1FX09VVFBVVF9ESVJFQ1RPUll8UlVOVElNRV9PVVRQVVRfTkFNRXxTVEFUSUNfTElCUkFSWV9GTEFHU3xWU19DU0hBUlB8VlNfRE9UTkVUX1JFRkVSRU5DRVBST1B8VlNfRE9UTkVUX1JFRkVSRU5DRXxWU19HTE9CQUxfU0VDVElPTl9QT1NUfFZTX0dMT0JBTF9TRUNUSU9OX1BSRXxWU19HTE9CQUx8WENPREVfQVRUUklCVVRFKV9cXHcrfFxcdytfKD86Q0xBTkdfVElEWXxDT01QSUxFUl9MQVVOQ0hFUnxDUFBDSEVDS3xDUFBMSU5UfElOQ0xVREVfV0hBVF9ZT1VfVVNFfE9VVFBVVF9OQU1FfFBPU1RGSVh8VklTSUJJTElUWV9QUkVTRVQpfEFCU1RSQUNUfEFERElUSU9OQUxfTUFLRV9DTEVBTl9GSUxFU3xBRFZBTkNFRHxBTElBU0VEX1RBUkdFVHxBTExPV19EVVBMSUNBVEVfQ1VTVE9NX1RBUkdFVFN8QU5EUk9JRF8oPzpBTlRfQURESVRJT05BTF9PUFRJT05TfEFQSXxBUElfTUlOfEFSQ0h8QVNTRVRTX0RJUkVDVE9SSUVTfEdVSXxKQVJfREVQRU5ERU5DSUVTfE5BVElWRV9MSUJfREVQRU5ERU5DSUVTfE5BVElWRV9MSUJfRElSRUNUT1JJRVN8UFJPQ0VTU19NQVh8UFJPR1VBUkR8UFJPR1VBUkRfQ09ORklHX1BBVEh8U0VDVVJFX1BST1BTX1BBVEh8U0tJUF9BTlRfU1RFUHxTVExfVFlQRSl8QVJDSElWRV9PVVRQVVRfRElSRUNUT1JZfEFUVEFDSEVEX0ZJTEVTfEFUVEFDSEVEX0ZJTEVTX09OX0ZBSUx8QVVUT0dFTl8oPzpCVUlMRF9ESVJ8T1JJR0lOX0RFUEVORFN8UEFSQUxMRUx8U09VUkNFX0dST1VQfFRBUkdFVFNfRk9MREVSfFRBUkdFVF9ERVBFTkRTKXxBVVRPTU9DfEFVVE9NT0NfKD86Q09NUElMRVJfUFJFREVGSU5FU3xERVBFTkRfRklMVEVSU3xFWEVDVVRBQkxFfE1BQ1JPX05BTUVTfE1PQ19PUFRJT05TfFNPVVJDRV9HUk9VUHxUQVJHRVRTX0ZPTERFUil8QVVUT1JDQ3xBVVRPUkNDX0VYRUNVVEFCTEV8QVVUT1JDQ19PUFRJT05TfEFVVE9SQ0NfU09VUkNFX0dST1VQfEFVVE9VSUN8QVVUT1VJQ19FWEVDVVRBQkxFfEFVVE9VSUNfT1BUSU9OU3xBVVRPVUlDX1NFQVJDSF9QQVRIU3xCSU5BUllfRElSfEJVSUxEU1lTVEVNX1RBUkdFVFN8QlVJTERfUlBBVEh8QlVJTERfUlBBVEhfVVNFX09SSUdJTnxCVUlMRF9XSVRIX0lOU1RBTExfTkFNRV9ESVJ8QlVJTERfV0lUSF9JTlNUQUxMX1JQQVRIfEJVTkRMRXxCVU5ETEVfRVhURU5TSU9OfENBQ0hFX1ZBUklBQkxFU3xDTEVBTl9OT19DVVNUT018Q09NTU9OX0xBTkdVQUdFX1JVTlRJTUV8Q09NUEFUSUJMRV9JTlRFUkZBQ0VfKD86Qk9PTHxOVU1CRVJfTUFYfE5VTUJFUl9NSU58U1RSSU5HKXxDT01QSUxFXyg/OkRFRklOSVRJT05TfEZFQVRVUkVTfEZMQUdTfE9QVElPTlN8UERCX05BTUV8UERCX09VVFBVVF9ESVJFQ1RPUlkpfENPU1R8Q1BBQ0tfREVTS1RPUF9TSE9SVENVVFN8Q1BBQ0tfTkVWRVJfT1ZFUldSSVRFfENQQUNLX1BFUk1BTkVOVHxDUEFDS19TVEFSVFVQX1NIT1JUQ1VUU3xDUEFDS19TVEFSVF9NRU5VX1NIT1JUQ1VUU3xDUEFDS19XSVhfQUNMfENST1NTQ09NUElMSU5HX0VNVUxBVE9SfENVREFfRVhURU5TSU9OU3xDVURBX1BUWF9DT01QSUxBVElPTnxDVURBX1JFU09MVkVfREVWSUNFX1NZTUJPTFN8Q1VEQV9TRVBBUkFCTEVfQ09NUElMQVRJT058Q1VEQV9TVEFOREFSRHxDVURBX1NUQU5EQVJEX1JFUVVJUkVEfENYWF9FWFRFTlNJT05TfENYWF9TVEFOREFSRHxDWFhfU1RBTkRBUkRfUkVRVUlSRUR8Q19FWFRFTlNJT05TfENfU1RBTkRBUkR8Q19TVEFOREFSRF9SRVFVSVJFRHxERUJVR19DT05GSUdVUkFUSU9OU3xERUZJTkVfU1lNQk9MfERFRklOSVRJT05TfERFUEVORFN8REVQTE9ZTUVOVF9BRERJVElPTkFMX0ZJTEVTfERFUExPWU1FTlRfUkVNT1RFX0RJUkVDVE9SWXxESVNBQkxFRHxESVNBQkxFRF9GRUFUVVJFU3xFQ0xJUFNFX0VYVFJBX0NQUk9KRUNUX0NPTlRFTlRTfEVDTElQU0VfRVhUUkFfTkFUVVJFU3xFTkFCTEVEX0ZFQVRVUkVTfEVOQUJMRURfTEFOR1VBR0VTfEVOQUJMRV9FWFBPUlRTfEVOVklST05NRU5UfEVYQ0xVREVfRlJPTV9BTEx8RVhDTFVERV9GUk9NX0RFRkFVTFRfQlVJTER8RVhQT1JUX05BTUV8RVhQT1JUX1BST1BFUlRJRVN8RVhURVJOQUxfT0JKRUNUfEVjaG9TdHJpbmd8RkFJTF9SRUdVTEFSX0VYUFJFU1NJT058RklORF9MSUJSQVJZX1VTRV9MSUIzMl9QQVRIU3xGSU5EX0xJQlJBUllfVVNFX0xJQjY0X1BBVEhTfEZJTkRfTElCUkFSWV9VU0VfTElCWDMyX1BBVEhTfEZJTkRfTElCUkFSWV9VU0VfT1BFTkJTRF9WRVJTSU9OSU5HfEZJWFRVUkVTX0NMRUFOVVB8RklYVFVSRVNfUkVRVUlSRUR8RklYVFVSRVNfU0VUVVB8Rk9MREVSfEZSQU1FV09SS3xGb3J0cmFuX0ZPUk1BVHxGb3J0cmFuX01PRFVMRV9ESVJFQ1RPUll8R0VORVJBVEVEfEdFTkVSQVRPUl9GSUxFX05BTUV8R0VORVJBVE9SX0lTX01VTFRJX0NPTkZJR3xHSFNfSU5URUdSSVRZX0FQUHxHSFNfTk9fU09VUkNFX0dST1VQX0ZJTEV8R0xPQkFMX0RFUEVORFNfREVCVUdfTU9ERXxHTE9CQUxfREVQRU5EU19OT19DWUNMRVN8R05VdG9NU3xIQVNfQ1hYfEhFQURFUl9GSUxFX09OTFl8SEVMUFNUUklOR3xJTVBMSUNJVF9ERVBFTkRTX0lOQ0xVREVfVFJBTlNGT1JNfElNUE9SVEVEfElNUE9SVEVEXyg/OkNPTU1PTl9MQU5HVUFHRV9SVU5USU1FfENPTkZJR1VSQVRJT05TfEdMT0JBTHxJTVBMSUJ8TElCTkFNRXxMSU5LX0RFUEVOREVOVF9MSUJSQVJJRVN8TElOS19JTlRFUkZBQ0VfKD86TEFOR1VBR0VTfExJQlJBUklFU3xNVUxUSVBMSUNJVFkpfExPQ0FUSU9OfE5PX1NPTkFNRXxPQkpFQ1RTfFNPTkFNRSl8SU1QT1JUX1BSRUZJWHxJTVBPUlRfU1VGRklYfElOQ0xVREVfRElSRUNUT1JJRVN8SU5DTFVERV9SRUdVTEFSX0VYUFJFU1NJT058SU5TVEFMTF9OQU1FX0RJUnxJTlNUQUxMX1JQQVRIfElOU1RBTExfUlBBVEhfVVNFX0xJTktfUEFUSHxJTlRFUkZBQ0VfKD86QVVUT1VJQ19PUFRJT05TfENPTVBJTEVfREVGSU5JVElPTlN8Q09NUElMRV9GRUFUVVJFU3xDT01QSUxFX09QVElPTlN8SU5DTFVERV9ESVJFQ1RPUklFU3xMSU5LX0RFUEVORFN8TElOS19ESVJFQ1RPUklFU3xMSU5LX0xJQlJBUklFU3xMSU5LX09QVElPTlN8UE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERXxTT1VSQ0VTfFNZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTKXxJTlRFUlBST0NFRFVSQUxfT1BUSU1JWkFUSU9OfElOX1RSWV9DT01QSUxFfElPU19JTlNUQUxMX0NPTUJJTkVEfEpPQl9QT09MU3xKT0JfUE9PTF9DT01QSUxFfEpPQl9QT09MX0xJTkt8S0VFUF9FWFRFTlNJT058TEFCRUxTfExBTkdVQUdFfExJQlJBUllfT1VUUFVUX0RJUkVDVE9SWXxMSU5LRVJfTEFOR1VBR0V8TElOS18oPzpERVBFTkRTfERFUEVORFNfTk9fU0hBUkVEfERJUkVDVE9SSUVTfEZMQUdTfElOVEVSRkFDRV9MSUJSQVJJRVN8SU5URVJGQUNFX01VTFRJUExJQ0lUWXxMSUJSQVJJRVN8T1BUSU9OU3xTRUFSQ0hfRU5EX1NUQVRJQ3xTRUFSQ0hfU1RBUlRfU1RBVElDfFdIQVRfWU9VX1VTRSl8TElTVEZJTEVfU1RBQ0t8TE9DQVRJT058TUFDT1NYX0JVTkRMRXxNQUNPU1hfQlVORExFX0lORk9fUExJU1R8TUFDT1NYX0ZSQU1FV09SS19JTkZPX1BMSVNUfE1BQ09TWF9QQUNLQUdFX0xPQ0FUSU9OfE1BQ09TWF9SUEFUSHxNQUNST1N8TUFOVUFMTFlfQURERURfREVQRU5ERU5DSUVTfE1FQVNVUkVNRU5UfE1PRElGSUVEfE5BTUV8Tk9fU09OQU1FfE5PX1NZU1RFTV9GUk9NX0lNUE9SVEVEfE9CSkVDVF9ERVBFTkRTfE9CSkVDVF9PVVRQVVRTfE9TWF9BUkNISVRFQ1RVUkVTfE9VVFBVVF9OQU1FfFBBQ0tBR0VTX0ZPVU5EfFBBQ0tBR0VTX05PVF9GT1VORHxQQVJFTlRfRElSRUNUT1JZfFBBU1NfUkVHVUxBUl9FWFBSRVNTSU9OfFBEQl9OQU1FfFBEQl9PVVRQVVRfRElSRUNUT1JZfFBPU0lUSU9OX0lOREVQRU5ERU5UX0NPREV8UE9TVF9JTlNUQUxMX1NDUklQVHxQUkVERUZJTkVEX1RBUkdFVFNfRk9MREVSfFBSRUZJWHxQUkVfSU5TVEFMTF9TQ1JJUFR8UFJJVkFURV9IRUFERVJ8UFJPQ0VTU09SU3xQUk9DRVNTT1JfQUZGSU5JVFl8UFJPSkVDVF9MQUJFTHxQVUJMSUNfSEVBREVSfFJFUE9SVF9VTkRFRklORURfUFJPUEVSVElFU3xSRVFVSVJFRF9GSUxFU3xSRVNPVVJDRXxSRVNPVVJDRV9MT0NLfFJVTEVfTEFVTkNIX0NPTVBJTEV8UlVMRV9MQVVOQ0hfQ1VTVE9NfFJVTEVfTEFVTkNIX0xJTkt8UlVMRV9NRVNTQUdFU3xSVU5USU1FX09VVFBVVF9ESVJFQ1RPUll8UlVOX1NFUklBTHxTS0lQX0FVVE9HRU58U0tJUF9BVVRPTU9DfFNLSVBfQVVUT1JDQ3xTS0lQX0FVVE9VSUN8U0tJUF9CVUlMRF9SUEFUSHxTS0lQX1JFVFVSTl9DT0RFfFNPVVJDRVN8U09VUkNFX0RJUnxTT1ZFUlNJT058U1RBVElDX0xJQlJBUllfRkxBR1N8U1RBVElDX0xJQlJBUllfT1BUSU9OU3xTVFJJTkdTfFNVQkRJUkVDVE9SSUVTfFNVRkZJWHxTWU1CT0xJQ3xUQVJHRVRfQVJDSElWRVNfTUFZX0JFX1NIQVJFRF9MSUJTfFRBUkdFVF9NRVNTQUdFU3xUQVJHRVRfU1VQUE9SVFNfU0hBUkVEX0xJQlN8VEVTVFN8VEVTVF9JTkNMVURFX0ZJTEV8VEVTVF9JTkNMVURFX0ZJTEVTfFRJTUVPVVR8VElNRU9VVF9BRlRFUl9NQVRDSHxUWVBFfFVTRV9GT0xERVJTfFZBTFVFfFZBUklBQkxFU3xWRVJTSU9OfFZJU0lCSUxJVFlfSU5MSU5FU19ISURERU58VlNfKD86Q09ORklHVVJBVElPTl9UWVBFfENPUFlfVE9fT1VUX0RJUnxERUJVR0dFUl8oPzpDT01NQU5EfENPTU1BTkRfQVJHVU1FTlRTfEVOVklST05NRU5UfFdPUktJTkdfRElSRUNUT1JZKXxERVBMT1lNRU5UX0NPTlRFTlR8REVQTE9ZTUVOVF9MT0NBVElPTnxET1RORVRfUkVGRVJFTkNFU3xET1RORVRfUkVGRVJFTkNFU19DT1BZX0xPQ0FMfEdMT0JBTF9LRVlXT1JEfEdMT0JBTF9QUk9KRUNUX1RZUEVTfEdMT0JBTF9ST09UTkFNRVNQQUNFfElOQ0xVREVfSU5fVlNJWHxJT1RfU1RBUlRVUF9UQVNLfEtFWVdPUkR8UkVTT1VSQ0VfR0VORVJBVE9SfFNDQ19BVVhQQVRIfFNDQ19MT0NBTFBBVEh8U0NDX1BST0pFQ1ROQU1FfFNDQ19QUk9WSURFUnxTREtfUkVGRVJFTkNFU3xTSEFERVJfKD86RElTQUJMRV9PUFRJTUlaQVRJT05TfEVOQUJMRV9ERUJVR3xFTlRSWVBPSU5UfEZMQUdTfE1PREVMfE9CSkVDVF9GSUxFX05BTUV8T1VUUFVUX0hFQURFUl9GSUxFfFRZUEV8VkFSSUFCTEVfTkFNRSl8U1RBUlRVUF9QUk9KRUNUfFRPT0xfT1ZFUlJJREV8VVNFUl9QUk9QU3xXSU5SVF9DT01QT05FTlR8V0lOUlRfRVhURU5TSU9OU3xXSU5SVF9SRUZFUkVOQ0VTfFhBTUxfVFlQRSl8V0lMTF9GQUlMfFdJTjMyX0VYRUNVVEFCTEV8V0lORE9XU19FWFBPUlRfQUxMX1NZTUJPTFN8V09SS0lOR19ESVJFQ1RPUll8V1JBUF9FWENMVURFfFhDT0RFXyg/OkVNSVRfRUZGRUNUSVZFX1BMQVRGT1JNX05BTUV8RVhQTElDSVRfRklMRV9UWVBFfEZJTEVfQVRUUklCVVRFU3xMQVNUX0tOT1dOX0ZJTEVfVFlQRXxQUk9EVUNUX1RZUEV8U0NIRU1FXyg/OkFERFJFU1NfU0FOSVRJWkVSfEFERFJFU1NfU0FOSVRJWkVSX1VTRV9BRlRFUl9SRVRVUk58QVJHVU1FTlRTfERJU0FCTEVfTUFJTl9USFJFQURfQ0hFQ0tFUnxEWU5BTUlDX0xJQlJBUllfTE9BRFN8RFlOQU1JQ19MSU5LRVJfQVBJX1VTQUdFfEVOVklST05NRU5UfEVYRUNVVEFCTEV8R1VBUkRfTUFMTE9DfE1BSU5fVEhSRUFEX0NIRUNLRVJfU1RPUHxNQUxMT0NfR1VBUkRfRURHRVN8TUFMTE9DX1NDUklCQkxFfE1BTExPQ19TVEFDS3xUSFJFQURfU0FOSVRJWkVSKD86X1NUT1ApP3xVTkRFRklORURfQkVIQVZJT1VSX1NBTklUSVpFUig/Ol9TVE9QKT98Wk9NQklFX09CSkVDVFMpKXxYQ1RFU1QpXFxiLyxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmFkZF9jb21waWxlX2RlZmluaXRpb25zfGFkZF9jb21waWxlX29wdGlvbnN8YWRkX2N1c3RvbV9jb21tYW5kfGFkZF9jdXN0b21fdGFyZ2V0fGFkZF9kZWZpbml0aW9uc3xhZGRfZGVwZW5kZW5jaWVzfGFkZF9leGVjdXRhYmxlfGFkZF9saWJyYXJ5fGFkZF9saW5rX29wdGlvbnN8YWRkX3N1YmRpcmVjdG9yeXxhZGRfdGVzdHxhdXhfc291cmNlX2RpcmVjdG9yeXxicmVha3xidWlsZF9jb21tYW5kfGJ1aWxkX25hbWV8Y21ha2VfaG9zdF9zeXN0ZW1faW5mb3JtYXRpb258Y21ha2VfbWluaW11bV9yZXF1aXJlZHxjbWFrZV9wYXJzZV9hcmd1bWVudHN8Y21ha2VfcG9saWN5fGNvbmZpZ3VyZV9maWxlfGNvbnRpbnVlfGNyZWF0ZV90ZXN0X3NvdXJjZWxpc3R8Y3Rlc3RfYnVpbGR8Y3Rlc3RfY29uZmlndXJlfGN0ZXN0X2NvdmVyYWdlfGN0ZXN0X2VtcHR5X2JpbmFyeV9kaXJlY3Rvcnl8Y3Rlc3RfbWVtY2hlY2t8Y3Rlc3RfcmVhZF9jdXN0b21fZmlsZXN8Y3Rlc3RfcnVuX3NjcmlwdHxjdGVzdF9zbGVlcHxjdGVzdF9zdGFydHxjdGVzdF9zdWJtaXR8Y3Rlc3RfdGVzdHxjdGVzdF91cGRhdGV8Y3Rlc3RfdXBsb2FkfGRlZmluZV9wcm9wZXJ0eXxlbHNlfGVsc2VpZnxlbmFibGVfbGFuZ3VhZ2V8ZW5hYmxlX3Rlc3Rpbmd8ZW5kZm9yZWFjaHxlbmRmdW5jdGlvbnxlbmRpZnxlbmRtYWNyb3xlbmR3aGlsZXxleGVjX3Byb2dyYW18ZXhlY3V0ZV9wcm9jZXNzfGV4cG9ydHxleHBvcnRfbGlicmFyeV9kZXBlbmRlbmNpZXN8ZmlsZXxmaW5kX2ZpbGV8ZmluZF9saWJyYXJ5fGZpbmRfcGFja2FnZXxmaW5kX3BhdGh8ZmluZF9wcm9ncmFtfGZsdGtfd3JhcF91aXxmb3JlYWNofGZ1bmN0aW9ufGdldF9jbWFrZV9wcm9wZXJ0eXxnZXRfZGlyZWN0b3J5X3Byb3BlcnR5fGdldF9maWxlbmFtZV9jb21wb25lbnR8Z2V0X3Byb3BlcnR5fGdldF9zb3VyY2VfZmlsZV9wcm9wZXJ0eXxnZXRfdGFyZ2V0X3Byb3BlcnR5fGdldF90ZXN0X3Byb3BlcnR5fGlmfGluY2x1ZGV8aW5jbHVkZV9kaXJlY3Rvcmllc3xpbmNsdWRlX2V4dGVybmFsX21zcHJvamVjdHxpbmNsdWRlX2d1YXJkfGluY2x1ZGVfcmVndWxhcl9leHByZXNzaW9ufGluc3RhbGx8aW5zdGFsbF9maWxlc3xpbnN0YWxsX3Byb2dyYW1zfGluc3RhbGxfdGFyZ2V0c3xsaW5rX2RpcmVjdG9yaWVzfGxpbmtfbGlicmFyaWVzfGxpc3R8bG9hZF9jYWNoZXxsb2FkX2NvbW1hbmR8bWFjcm98bWFrZV9kaXJlY3Rvcnl8bWFya19hc19hZHZhbmNlZHxtYXRofG1lc3NhZ2V8b3B0aW9ufG91dHB1dF9yZXF1aXJlZF9maWxlc3xwcm9qZWN0fHF0X3dyYXBfY3BwfHF0X3dyYXBfdWl8cmVtb3ZlfHJlbW92ZV9kZWZpbml0aW9uc3xyZXR1cm58c2VwYXJhdGVfYXJndW1lbnRzfHNldHxzZXRfZGlyZWN0b3J5X3Byb3BlcnRpZXN8c2V0X3Byb3BlcnR5fHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllc3xzZXRfdGFyZ2V0X3Byb3BlcnRpZXN8c2V0X3Rlc3RzX3Byb3BlcnRpZXN8c2l0ZV9uYW1lfHNvdXJjZV9ncm91cHxzdHJpbmd8c3ViZGlyX2RlcGVuZHN8c3ViZGlyc3x0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9uc3x0YXJnZXRfY29tcGlsZV9mZWF0dXJlc3x0YXJnZXRfY29tcGlsZV9vcHRpb25zfHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzfHRhcmdldF9saW5rX2RpcmVjdG9yaWVzfHRhcmdldF9saW5rX2xpYnJhcmllc3x0YXJnZXRfbGlua19vcHRpb25zfHRhcmdldF9zb3VyY2VzfHRyeV9jb21waWxlfHRyeV9ydW58dW5zZXR8dXNlX21hbmdsZWRfbWVzYXx1dGlsaXR5X3NvdXJjZXx2YXJpYWJsZV9yZXF1aXJlc3x2YXJpYWJsZV93YXRjaHx3aGlsZXx3cml0ZV9maWxlKSg/PVxccypcXCgpXFxiLyxcbiAgICBib29sZWFuOiAvXFxiKD86RkFMU0V8T0ZGfE9OfFRSVUUpXFxiLyxcbiAgICBuYW1lc3BhY2U6XG4gICAgICAvXFxiKD86SU5URVJGQUNFfFBSSVZBVEV8UFJPUEVSVElFU3xQVUJMSUN8U0hBUkVEfFNUQVRJQ3xUQVJHRVRfT0JKRUNUUylcXGIvLFxuICAgIG9wZXJhdG9yOlxuICAgICAgL1xcYig/OkFORHxERUZJTkVEfEVRVUFMfEdSRUFURVJ8TEVTU3xNQVRDSEVTfE5PVHxPUnxTVFJFUVVBTHxTVFJHUkVBVEVSfFNUUkxFU1N8VkVSU0lPTl9FUVVBTHxWRVJTSU9OX0dSRUFURVJ8VkVSU0lPTl9MRVNTKVxcYi8sXG4gICAgaW5zZXJ0ZWQ6IHtcbiAgICAgIHBhdHRlcm46IC9cXGJcXHcrOjpcXHcrXFxiLyxcbiAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZSdcbiAgICB9LFxuICAgIG51bWJlcjogL1xcYlxcZCsoPzpcXC5cXGQrKSpcXGIvLFxuICAgIGZ1bmN0aW9uOiAvXFxiW2Etel9dXFx3Kig/PVxccypcXCgpXFxiL2ksXG4gICAgcHVuY3R1YXRpb246IC9bKCk+fV18XFwkWzx7XS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29ib2xcbmNvYm9sLmRpc3BsYXlOYW1lID0gJ2NvYm9sJ1xuY29ib2wuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBjb2JvbChQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuY29ib2wgPSB7XG4gICAgY29tbWVudDoge1xuICAgICAgcGF0dGVybjogL1xcKj4uKnwoXlsgXFx0XSopXFwqLiovbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogL1t4emduXT8oPzpcIig/OlteXFxyXFxuXCJdfFwiXCIpKlwiKD8hXCIpfCcoPzpbXlxcclxcbiddfCcnKSonKD8hJykpL2ksXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIGxldmVsOiB7XG4gICAgICBwYXR0ZXJuOiAvKF5bIFxcdF0qKVxcZCtcXGIvbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBhbGlhczogJ251bWJlcidcbiAgICB9LFxuICAgICdjbGFzcy1uYW1lJzoge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FudGxyL2dyYW1tYXJzLXY0L2Jsb2IvNDJlZGQ1YjY4N2QxODNiNWZhNjc5ZTg1OGE4MjI5N2JkMjcxNDFlNy9jb2JvbDg1L0NvYm9sODUuZzQjTDEwMTVcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oXFxicGljKD86dHVyZSk/XFxzKykoPzooPzpbLVxcdyQvLDoqKzw+XXxcXC4oPyFcXHN8JCkpKD86XFwoXFxkK1xcKSk/KSsvaSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgbnVtYmVyOiB7XG4gICAgICAgICAgcGF0dGVybjogLyhcXCgpXFxkKy8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwdW5jdHVhdGlvbjogL1soKV0vXG4gICAgICB9XG4gICAgfSxcbiAgICBrZXl3b3JkOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvKF58W15cXHctXSkoPzpBQk9SVHxBQ0NFUFR8QUNDRVNTfEFERHxBRERSRVNTfEFEVkFOQ0lOR3xBRlRFUnxBTElHTkVEfEFMTHxBTFBIQUJFVHxBTFBIQUJFVElDfEFMUEhBQkVUSUMtTE9XRVJ8QUxQSEFCRVRJQy1VUFBFUnxBTFBIQU5VTUVSSUN8QUxQSEFOVU1FUklDLUVESVRFRHxBTFNPfEFMVEVSfEFMVEVSTkFURXxBTll8QVJFfEFSRUF8QVJFQVN8QVN8QVNDRU5ESU5HfEFTQ0lJfEFTU0lHTnxBU1NPQ0lBVEVELURBVEF8QVNTT0NJQVRFRC1EQVRBLUxFTkdUSHxBVHxBVFRSSUJVVEV8QVVUSE9SfEFVVE98QVVUTy1TS0lQfEJBQ0tHUk9VTkQtQ09MT1J8QkFDS0dST1VORC1DT0xPVVJ8QkFTSVN8QkVFUHxCRUZPUkV8QkVHSU5OSU5HfEJFTEx8QklOQVJZfEJJVHxCTEFOS3xCTElOS3xCTE9DS3xCT1RUT018Qk9VTkRTfEJZfEJZRlVOQ1RJT058QllUSVRMRXxDQUxMfENBTkNFTHxDQVBBQkxFfENDU1ZFUlNJT058Q0R8Q0Z8Q0h8Q0hBSU5JTkd8Q0hBTkdFRHxDSEFOTkVMfENIQVJBQ1RFUnxDSEFSQUNURVJTfENMQVNTfENMQVNTLUlEfENMT0NLLVVOSVRTfENMT1NFfENMT1NFLURJU1BPU0lUSU9OfENPQk9MfENPREV8Q09ERS1TRVR8Q09MfENPTExBVElOR3xDT0xVTU58Q09NLVJFR3xDT01NQXxDT01NSVRNRU5UfENPTU1PTnxDT01NVU5JQ0FUSU9OfENPTVB8Q09NUC0xfENPTVAtMnxDT01QLTN8Q09NUC00fENPTVAtNXxDT01QVVRBVElPTkFMfENPTVBVVEFUSU9OQUwtMXxDT01QVVRBVElPTkFMLTJ8Q09NUFVUQVRJT05BTC0zfENPTVBVVEFUSU9OQUwtNHxDT01QVVRBVElPTkFMLTV8Q09NUFVURXxDT05GSUdVUkFUSU9OfENPTlRBSU5TfENPTlRFTlR8Q09OVElOVUV8Q09OVFJPTHxDT05UUk9MLVBPSU5UfENPTlRST0xTfENPTlZFTlRJT058Q09OVkVSVElOR3xDT1BZfENPUlJ8Q09SUkVTUE9ORElOR3xDT1VOVHxDUlVOQ0h8Q1VSUkVOQ1l8Q1VSU09SfERBVEF8REFUQS1CQVNFfERBVEV8REFURS1DT01QSUxFRHxEQVRFLVdSSVRURU58REFZfERBWS1PRi1XRUVLfERCQ1N8REV8REVCVUctQ09OVEVOVFN8REVCVUctSVRFTXxERUJVRy1MSU5FfERFQlVHLU5BTUV8REVCVUctU1VCLTF8REVCVUctU1VCLTJ8REVCVUctU1VCLTN8REVCVUdHSU5HfERFQ0lNQUwtUE9JTlR8REVDTEFSQVRJVkVTfERFRkFVTFR8REVGQVVMVC1ESVNQTEFZfERFRklOSVRJT058REVMRVRFfERFTElNSVRFRHxERUxJTUlURVJ8REVQRU5ESU5HfERFU0NFTkRJTkd8REVTVElOQVRJT058REVUQUlMfERGSFJFU1B8REZIVkFMVUV8RElTQUJMRXxESVNLfERJU1BMQVl8RElTUExBWS0xfERJVklERXxESVZJU0lPTnxET05UQ0FSRXxET1VCTEV8RE9XTnxEVVBMSUNBVEVTfERZTkFNSUN8RUJDRElDfEVHQ1N8RUdJfEVMU0V8RU1JfEVNUFRZLUNIRUNLfEVOQUJMRXxFTkR8RU5ELUFDQ0VQVHxFTkQtQUREfEVORC1DQUxMfEVORC1DT01QVVRFfEVORC1ERUxFVEV8RU5ELURJVklERXxFTkQtRVZBTFVBVEV8RU5ELUlGfEVORC1NVUxUSVBMWXxFTkQtT0YtUEFHRXxFTkQtUEVSRk9STXxFTkQtUkVBRHxFTkQtUkVDRUlWRXxFTkQtUkVUVVJOfEVORC1SRVdSSVRFfEVORC1TRUFSQ0h8RU5ELVNUQVJUfEVORC1TVFJJTkd8RU5ELVNVQlRSQUNUfEVORC1VTlNUUklOR3xFTkQtV1JJVEV8RU5ESU5HfEVOVEVSfEVOVFJZfEVOVFJZLVBST0NFRFVSRXxFTlZJUk9OTUVOVHxFT0x8RU9QfEVPU3xFUkFTRXxFUlJPUnxFU0NBUEV8RVNJfEVWQUxVQVRFfEVWRU5UfEVWRVJZfEVYQ0VQVElPTnxFWENMVVNJVkV8RVhISUJJVHxFWElUfEVYUE9SVHxFWFRFTkR8RVhURU5ERUR8RVhURVJOQUx8RkR8RklMRXxGSUxFLUNPTlRST0x8RklMTEVSfEZJTkFMfEZJUlNUfEZPT1RJTkd8Rk9SfEZPUkVHUk9VTkQtQ09MT1J8Rk9SRUdST1VORC1DT0xPVVJ8RlJPTXxGVUxMfEZVTkNUSU9OfEZVTkNUSU9OLVBPSU5URVJ8RlVOQ1RJT05OQU1FfEdFTkVSQVRFfEdJVklOR3xHTE9CQUx8R098R09CQUNLfEdSSUR8R1JPVVB8SEVBRElOR3xISUdILVZBTFVFfEhJR0gtVkFMVUVTfEhJR0hMSUdIVHxJLU98SS1PLUNPTlRST0x8SUR8SURFTlRJRklDQVRJT058SUZ8SU1QTElDSVR8SU1QT1JUfElOfElOREVYfElOREVYRUR8SU5ESUNBVEV8SU5JVElBTHxJTklUSUFMSVpFfElOSVRJQVRFfElOUFVUfElOUFVULU9VVFBVVHxJTlNQRUNUfElOU1RBTExBVElPTnxJTlRFR0VSfElOVE98SU5WQUxJRHxJTlZPS0V8SVN8SlVTVHxKVVNUSUZJRUR8S0FOSkl8S0VQVHxLRVl8S0VZQk9BUkR8TEFCRUx8TEFOR1VBR0V8TEFTVHxMQnxMRHxMRUFESU5HfExFRlR8TEVGVExJTkV8TEVOR1RIfExFTkdUSC1DSEVDS3xMSUJBQ0NFU1N8TElCUEFSQU1FVEVSfExJQlJBUll8TElNSVR8TElNSVRTfExJTkFHRXxMSU5BR0UtQ09VTlRFUnxMSU5FfExJTkUtQ09VTlRFUnxMSU5FU3xMSU5LQUdFfExJU1R8TE9DQUx8TE9DQUwtU1RPUkFHRXxMT0NLfExPTkctREFURXxMT05HLVRJTUV8TE9XLVZBTFVFfExPVy1WQUxVRVN8TE9XRVJ8TE9XTElHSFR8TUVNT1JZfE1FUkdFfE1FU1NBR0V8TU1ERFlZWVl8TU9ERXxNT0RVTEVTfE1PUkUtTEFCRUxTfE1PVkV8TVVMVElQTEV8TVVMVElQTFl8TkFNRUR8TkFUSU9OQUx8TkFUSU9OQUwtRURJVEVEfE5BVElWRXxORUdBVElWRXxORVRXT1JLfE5FWFR8Tk98Tk8tRUNIT3xOVUxMfE5VTExTfE5VTUJFUnxOVU1FUklDfE5VTUVSSUMtREFURXxOVU1FUklDLUVESVRFRHxOVU1FUklDLVRJTUV8T0JKRUNULUNPTVBVVEVSfE9DQ1VSU3xPRFR8T0Z8T0ZGfE9NSVRURUR8T058T1BFTnxPUFRJT05BTHxPUkRFUnxPUkRFUkxZfE9SR0FOSVpBVElPTnxPVEhFUnxPVVRQVVR8T1ZFUkZMT1d8T1ZFUkxJTkV8T1dOfFBBQ0tFRC1ERUNJTUFMfFBBRERJTkd8UEFHRXxQQUdFLUNPVU5URVJ8UEFTU1dPUkR8UEVSRk9STXxQRnxQSHxQSUN8UElDVFVSRXxQTFVTfFBPSU5URVJ8UE9SVHxQT1NJVElPTnxQT1NJVElWRXxQUklOVEVSfFBSSU5USU5HfFBSSVZBVEV8UFJPQ0VEVVJFfFBST0NFRFVSRS1QT0lOVEVSfFBST0NFRFVSRVN8UFJPQ0VFRHxQUk9DRVNTfFBST0dSQU18UFJPR1JBTS1JRHxQUk9HUkFNLUxJQlJBUll8UFJPTVBUfFBVUkdFfFFVRVVFfFFVT1RFfFFVT1RFU3xSQU5ET018UkR8UkVBRHxSRUFERVJ8UkVBTHxSRUNFSVZFfFJFQ0VJVkVEfFJFQ09SRHxSRUNPUkRJTkd8UkVDT1JEU3xSRUNVUlNJVkV8UkVERUZJTkVTfFJFRUx8UkVGfFJFRkVSRU5DRXxSRUZFUkVOQ0VTfFJFTEFUSVZFfFJFTEVBU0V8UkVNQUlOREVSfFJFTUFSS1N8UkVNT1RFfFJFTU9WQUx8UkVNT1ZFfFJFTkFNRVN8UkVQTEFDRXxSRVBMQUNJTkd8UkVQT1JUfFJFUE9SVElOR3xSRVBPUlRTfFJFUVVJUkVEfFJFUlVOfFJFU0VSVkV8UkVTRVR8UkVUVVJOfFJFVFVSTi1DT0RFfFJFVFVSTklOR3xSRVZFUlNFLVZJREVPfFJFVkVSU0VEfFJFV0lORHxSRVdSSVRFfFJGfFJIfFJJR0hUfFJPVU5ERUR8UlVOfFNBTUV8U0FWRXxTQ1JFRU58U0R8U0VBUkNIfFNFQ1RJT058U0VDVVJFfFNFQ1VSSVRZfFNFR01FTlR8U0VHTUVOVC1MSU1JVHxTRUxFQ1R8U0VORHxTRU5URU5DRXxTRVBBUkFURXxTRVFVRU5DRXxTRVFVRU5USUFMfFNFVHxTSEFSRUR8U0hBUkVEQllBTEx8U0hBUkVEQllSVU5VTklUfFNIQVJJTkd8U0hJRlQtSU58U0hJRlQtT1VUfFNIT1JULURBVEV8U0lHTnxTSVpFfFNPUlR8U09SVC1DT05UUk9MfFNPUlQtQ09SRS1TSVpFfFNPUlQtRklMRS1TSVpFfFNPUlQtTUVSR0V8U09SVC1NRVNTQUdFfFNPUlQtTU9ERS1TSVpFfFNPUlQtUkVUVVJOfFNPVVJDRXxTT1VSQ0UtQ09NUFVURVJ8U1BBQ0V8U1BBQ0VTfFNQRUNJQUwtTkFNRVN8U1RBTkRBUkR8U1RBTkRBUkQtMXxTVEFOREFSRC0yfFNUQVJUfFNUQVRVU3xTVE9QfFNUUklOR3xTVUItUVVFVUUtMXxTVUItUVVFVUUtMnxTVUItUVVFVUUtM3xTVUJUUkFDVHxTVU18U1VQUFJFU1N8U1lNQk9MfFNZTUJPTElDfFNZTkN8U1lOQ0hST05JWkVEfFRBQkxFfFRBTExZfFRBTExZSU5HfFRBUEV8VEFTS3xURVJNSU5BTHxURVJNSU5BVEV8VEVTVHxURVhUfFRIRU58VEhSRUFEfFRIUkVBRC1MT0NBTHxUSFJPVUdIfFRIUlV8VElNRXxUSU1FUnxUSU1FU3xUSVRMRXxUT3xUT0RBWVMtREFURXxUT0RBWVMtTkFNRXxUT1B8VFJBSUxJTkd8VFJVTkNBVEVEfFRZUEV8VFlQRURFRnxVTkRFUkxJTkV8VU5JVHxVTlNUUklOR3xVTlRJTHxVUHxVUE9OfFVTQUdFfFVTRXxVU0lOR3xWQUxVRXxWQUxVRVN8VkFSWUlOR3xWSVJUVUFMfFdBSVR8V0hFTnxXSEVOLUNPTVBJTEVEfFdJVEh8V09SRFN8V09SS0lORy1TVE9SQUdFfFdSSVRFfFlFQVJ8WVlZWURERHxZWVlZTU1ERHxaRVJPLUZJTEx8WkVST0VTfFpFUk9TKSg/IVtcXHctXSkvaSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIGJvb2xlYW46IHtcbiAgICAgIHBhdHRlcm46IC8oXnxbXlxcdy1dKSg/OmZhbHNlfHRydWUpKD8hW1xcdy1dKS9pLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH0sXG4gICAgbnVtYmVyOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvKF58W15cXHctXSkoPzpbKy1dPyg/Oig/OlxcZCsoPzpbLixdXFxkKyk/fFsuLF1cXGQrKSg/OmVbKy1dP1xcZCspP3x6ZXJvKSkoPyFbXFx3LV0pL2ksXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBvcGVyYXRvcjogW1xuICAgICAgLzw+fFs8Pl09P3xbPSsqLyZdLyxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLyhefFteXFx3LV0pKD86LXxhbmR8ZXF1YWx8Z3JlYXRlcnxsZXNzfG5vdHxvcnx0aGFuKSg/IVtcXHctXSkvaSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgcHVuY3R1YXRpb246IC9bLjosKCldL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb2ZmZWVzY3JpcHRcbmNvZmZlZXNjcmlwdC5kaXNwbGF5TmFtZSA9ICdjb2ZmZWVzY3JpcHQnXG5jb2ZmZWVzY3JpcHQuYWxpYXNlcyA9IFsnY29mZmVlJ11cbmZ1bmN0aW9uIGNvZmZlZXNjcmlwdChQcmlzbSkge1xuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIC8vIElnbm9yZSBjb21tZW50cyBzdGFydGluZyB3aXRoIHsgdG8gcHJpdmlsZWdlIHN0cmluZyBpbnRlcnBvbGF0aW9uIGhpZ2hsaWdodGluZ1xuICAgIHZhciBjb21tZW50ID0gLyMoPyFcXHspLisvXG4gICAgdmFyIGludGVycG9sYXRpb24gPSB7XG4gICAgICBwYXR0ZXJuOiAvI1xce1tefV0rXFx9LyxcbiAgICAgIGFsaWFzOiAndmFyaWFibGUnXG4gICAgfVxuICAgIFByaXNtLmxhbmd1YWdlcy5jb2ZmZWVzY3JpcHQgPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdqYXZhc2NyaXB0Jywge1xuICAgICAgY29tbWVudDogY29tbWVudCxcbiAgICAgIHN0cmluZzogW1xuICAgICAgICAvLyBTdHJpbmdzIGFyZSBtdWx0aWxpbmVcbiAgICAgICAge1xuICAgICAgICAgIHBhdHRlcm46IC8nKD86XFxcXFtcXHNcXFNdfFteXFxcXCddKSonLyxcbiAgICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIFN0cmluZ3MgYXJlIG11bHRpbGluZVxuICAgICAgICAgIHBhdHRlcm46IC9cIig/OlxcXFxbXFxzXFxTXXxbXlxcXFxcIl0pKlwiLyxcbiAgICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0aW9uOiBpbnRlcnBvbGF0aW9uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAga2V5d29yZDpcbiAgICAgICAgL1xcYig/OmFuZHxicmVha3xieXxjYXRjaHxjbGFzc3xjb250aW51ZXxkZWJ1Z2dlcnxkZWxldGV8ZG98ZWFjaHxlbHNlfGV4dGVuZHxleHRlbmRzfGZhbHNlfGZpbmFsbHl8Zm9yfGlmfGlufGluc3RhbmNlb2Z8aXN8aXNudHxsZXR8bG9vcHxuYW1lc3BhY2V8bmV3fG5vfG5vdHxudWxsfG9mfG9mZnxvbnxvcnxvd258cmV0dXJufHN1cGVyfHN3aXRjaHx0aGVufHRoaXN8dGhyb3d8dHJ1ZXx0cnl8dHlwZW9mfHVuZGVmaW5lZHx1bmxlc3N8dW50aWx8d2hlbnx3aGlsZXx3aW5kb3d8d2l0aHx5ZXN8eWllbGQpXFxiLyxcbiAgICAgICdjbGFzcy1tZW1iZXInOiB7XG4gICAgICAgIHBhdHRlcm46IC9AKD8hXFxkKVxcdysvLFxuICAgICAgICBhbGlhczogJ3ZhcmlhYmxlJ1xuICAgICAgfVxuICAgIH0pXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnY29mZmVlc2NyaXB0JywgJ2NvbW1lbnQnLCB7XG4gICAgICAnbXVsdGlsaW5lLWNvbW1lbnQnOiB7XG4gICAgICAgIHBhdHRlcm46IC8jIyNbXFxzXFxTXSs/IyMjLyxcbiAgICAgICAgYWxpYXM6ICdjb21tZW50J1xuICAgICAgfSxcbiAgICAgIC8vIEJsb2NrIHJlZ2V4cCBjYW4gY29udGFpbiBjb21tZW50cyBhbmQgaW50ZXJwb2xhdGlvblxuICAgICAgJ2Jsb2NrLXJlZ2V4Jzoge1xuICAgICAgICBwYXR0ZXJuOiAvXFwvezN9W1xcc1xcU10qP1xcL3szfS8sXG4gICAgICAgIGFsaWFzOiAncmVnZXgnLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBjb21tZW50OiBjb21tZW50LFxuICAgICAgICAgIGludGVycG9sYXRpb246IGludGVycG9sYXRpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnY29mZmVlc2NyaXB0JywgJ3N0cmluZycsIHtcbiAgICAgICdpbmxpbmUtamF2YXNjcmlwdCc6IHtcbiAgICAgICAgcGF0dGVybjogL2AoPzpcXFxcW1xcc1xcU118W15cXFxcYF0pKmAvLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBkZWxpbWl0ZXI6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IC9eYHxgJC8sXG4gICAgICAgICAgICBhbGlhczogJ3B1bmN0dWF0aW9uJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2NyaXB0OiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvW1xcc1xcU10rLyxcbiAgICAgICAgICAgIGFsaWFzOiAnbGFuZ3VhZ2UtamF2YXNjcmlwdCcsXG4gICAgICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQmxvY2sgc3RyaW5nc1xuICAgICAgJ211bHRpbGluZS1zdHJpbmcnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXR0ZXJuOiAvJycnW1xcc1xcU10qPycnJy8sXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnc3RyaW5nJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjogL1wiXCJcIltcXHNcXFNdKj9cIlwiXCIvLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgICBhbGlhczogJ3N0cmluZycsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBpbnRlcnBvbGF0aW9uOiBpbnRlcnBvbGF0aW9uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSlcbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdjb2ZmZWVzY3JpcHQnLCAna2V5d29yZCcsIHtcbiAgICAgIC8vIE9iamVjdCBwcm9wZXJ0eVxuICAgICAgcHJvcGVydHk6IC8oPyFcXGQpXFx3Kyg/PVxccyo6KD8hOikpL1xuICAgIH0pXG4gICAgZGVsZXRlIFByaXNtLmxhbmd1YWdlcy5jb2ZmZWVzY3JpcHRbJ3RlbXBsYXRlLXN0cmluZyddXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmNvZmZlZSA9IFByaXNtLmxhbmd1YWdlcy5jb2ZmZWVzY3JpcHRcbiAgfSkoUHJpc20pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjb25jdXJuYXNcbmNvbmN1cm5hcy5kaXNwbGF5TmFtZSA9ICdjb25jdXJuYXMnXG5jb25jdXJuYXMuYWxpYXNlcyA9IFsnY29uYyddXG5mdW5jdGlvbiBjb25jdXJuYXMoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmNvbmN1cm5hcyA9IHtcbiAgICBjb21tZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvKF58W15cXFxcXSkoPzpcXC9cXCpbXFxzXFxTXSo/KD86XFwqXFwvfCQpfFxcL1xcLy4qKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBsYW5nZXh0OiB7XG4gICAgICBwYXR0ZXJuOiAvXFxiXFx3K1xccypcXHxcXHxbXFxzXFxTXSs/XFx8XFx8LyxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICAnY2xhc3MtbmFtZSc6IC9eXFx3Ky8sXG4gICAgICAgIHN0cmluZzoge1xuICAgICAgICAgIHBhdHRlcm46IC8oXlxccypcXHxcXHwpW1xcc1xcU10rKD89XFx8XFx8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHVuY3R1YXRpb246IC9cXHxcXHwvXG4gICAgICB9XG4gICAgfSxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgcGF0dGVybjogLygoPzpefFxccylkZWZbIFxcdF0rKVthLXpBLVpfXVxcdyooPz1cXHMqXFwoKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgfSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmFic3RyYWN0fGFjdG9yfGFsc298YW5ub3RhdGlvbnxhc3NlcnR8YXN5bmN8YXdhaXR8Ym9vbHxib29sZWFufGJyZWFrfGJ5dGV8Y2FzZXxjYXRjaHxjaGFuZ2VkfGNoYXJ8Y2xhc3N8Y2xvc2VkfGNvbnN0YW50fGNvbnRpbnVlfGRlZnxkZWZhdWx0fGRlbHxkb3VibGV8ZWxpZnxlbHNlfGVudW18ZXZlcnl8ZXh0ZW5kc3xmYWxzZXxmaW5hbGx5fGZsb2F0fGZvcnxmcm9tfGdsb2JhbHxncHVkZWZ8Z3B1a2VybmVsfGlmfGltcG9ydHxpbnxpbml0fGluamVjdHxpbnR8bGFtYmRhfGxvY2FsfGxvbmd8bG9vcHxtYXRjaHxuZXd8bm9kZWZhdWx0fG51bGx8b2Z8b25jaGFuZ2V8b3BlbnxvdXR8b3ZlcnJpZGV8cGFja2FnZXxwYXJmb3J8cGFyZm9yc3luY3xwb3N0fHByZXxwcml2YXRlfHByb3RlY3RlZHxwcm92aWRlfHByb3ZpZGVyfHB1YmxpY3xyZXR1cm58c2hhcmVkfHNob3J0fHNpbmdsZXxzaXplX3R8c2l6ZW9mfHN1cGVyfHN5bmN8dGhpc3x0aHJvd3x0cmFpdHx0cmFuc3x0cmFuc2llbnR8dHJ1ZXx0cnl8dHlwZWRlZnx1bmNoZWNrZWR8dXNpbmd8dmFsfHZhcnx2b2lkfHdoaWxlfHdpdGgpXFxiLyxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvLFxuICAgIG51bWJlcjpcbiAgICAgIC9cXGIwYlswMV1bMDFfXSpMP1xcYnxcXGIweCg/OltcXGRhLWZfXSpcXC4pP1tcXGRhLWZfcCstXStcXGJ8KD86XFxiXFxkW1xcZF9dKig/OlxcLltcXGRfXSopP3xcXEJcXC5cXGRbXFxkX10qKSg/OmVbKy1dP1xcZFtcXGRfXSopP1tkZmxzXT8vaSxcbiAgICBwdW5jdHVhdGlvbjogL1t7fVtcXF07KCksLjpdLyxcbiAgICBvcGVyYXRvcjpcbiAgICAgIC88PT18Pj09fD0+fC0+fDwtfDw+fCY9PXwmPD58XFw/Oj98XFwuXFw/fFxcK1xcK3wtLXxbLSsqLz08Pl09P3xbIV5+XXxcXGIoPzphbmR8YXN8YmFuZHxib3J8Ynhvcnxjb21wfGlzfGlzbm90fG1vZHxvcilcXGI9Py8sXG4gICAgYW5ub3RhdGlvbjoge1xuICAgICAgcGF0dGVybjogL0AoPzpcXHcrOik/KD86XFx3K3xcXFtbXlxcXV0rXFxdKT8vLFxuICAgICAgYWxpYXM6ICdidWlsdGluJ1xuICAgIH1cbiAgfVxuICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdjb25jdXJuYXMnLCAnbGFuZ2V4dCcsIHtcbiAgICAncmVnZXgtbGl0ZXJhbCc6IHtcbiAgICAgIHBhdHRlcm46IC9cXGJyKFwifCcpKD86XFxcXC58KD8hXFwxKVteXFxcXFxcclxcbl0pKlxcMS8sXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgICAvKCg/Ol58W15cXFxcXSkoPzpcXFxcezJ9KSopXFx7KD86W157fV18XFx7KD86W157fV18XFx7W159XSpcXH0pKlxcfSkrXFx9LyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmNvbmN1cm5hc1xuICAgICAgICB9LFxuICAgICAgICByZWdleDogL1tcXHNcXFNdKy9cbiAgICAgIH1cbiAgICB9LFxuICAgICdzdHJpbmctbGl0ZXJhbCc6IHtcbiAgICAgIHBhdHRlcm46IC8oPzpcXEJ8XFxicykoXCJ8JykoPzpcXFxcLnwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgIC8oKD86XnxbXlxcXFxdKSg/OlxcXFx7Mn0pKilcXHsoPzpbXnt9XXxcXHsoPzpbXnt9XXxcXHtbXn1dKlxcfSkqXFx9KStcXH0vLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMuY29uY3VybmFzXG4gICAgICAgIH0sXG4gICAgICAgIHN0cmluZzogL1tcXHNcXFNdKy9cbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIFByaXNtLmxhbmd1YWdlcy5jb25jID0gUHJpc20ubGFuZ3VhZ2VzLmNvbmN1cm5hc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY29xXG5jb3EuZGlzcGxheU5hbWUgPSAnY29xJ1xuY29xLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gY29xKFByaXNtKSB7XG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2NvcS9jb3FcbiAgICB2YXIgY29tbWVudFNvdXJjZSA9IC9cXChcXCooPzpbXigqXXxcXCgoPyFcXCopfFxcKig/IVxcKSl8PHNlbGY+KSpcXCpcXCkvLnNvdXJjZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7XG4gICAgICBjb21tZW50U291cmNlID0gY29tbWVudFNvdXJjZS5yZXBsYWNlKC88c2VsZj4vZywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY29tbWVudFNvdXJjZVxuICAgICAgfSlcbiAgICB9XG4gICAgY29tbWVudFNvdXJjZSA9IGNvbW1lbnRTb3VyY2UucmVwbGFjZSgvPHNlbGY+L2csICdbXScpXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmNvcSA9IHtcbiAgICAgIGNvbW1lbnQ6IFJlZ0V4cChjb21tZW50U291cmNlKSxcbiAgICAgIHN0cmluZzoge1xuICAgICAgICBwYXR0ZXJuOiAvXCIoPzpbXlwiXXxcIlwiKSpcIig/IVwiKS8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZTogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgICAgLyNcXFsoPzpbXlxcW1xcXShcIl18XCIoPzpbXlwiXXxcIlwiKSpcIig/IVwiKXxcXCgoPyFcXCopfDxjb21tZW50PikqXFxdLy5zb3VyY2UucmVwbGFjZShcbiAgICAgICAgICAgICAgLzxjb21tZW50Pi9nLFxuICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1lbnRTb3VyY2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnYXR0ci1uYW1lJyxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgIGNvbW1lbnQ6IFJlZ0V4cChjb21tZW50U291cmNlKSxcbiAgICAgICAgICAgIHN0cmluZzoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvXCIoPzpbXlwiXXxcIlwiKSpcIig/IVwiKS8sXG4gICAgICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZXJhdG9yOiAvPS8sXG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogL14jXFxbfFxcXSR8WywoKV0vXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgIC9cXGIoPzpDdW11bGF0aXZlfEdsb2JhbHxMb2NhbHxNb25vbW9ycGhpY3xOb25DdW11bGF0aXZlfFBvbHltb3JwaGljfFByaXZhdGV8UHJvZ3JhbSlcXGIvLFxuICAgICAgICAgIGFsaWFzOiAnYXR0ci1uYW1lJ1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAga2V5d29yZDpcbiAgICAgICAgL1xcYig/OkFib3J0fEFib3V0fEFkZHxBZG1pdHxBZG1pdHRlZHxBbGx8QXJndW1lbnRzfEFzfEFzc3VtcHRpb25zfEF4aW9tfEF4aW9tc3xCYWNrfEJhY2tUb3xCYWNrdHJhY2V8QmluT3B8QmluT3BTcGVjfEJpblJlbHxCaW5kfEJsYWNrbGlzdHxDYW5vbmljYWx8Q2FzZXxDZHxDaGVja3xDbGFzc3xDbGFzc2VzfENsb3NlfENvRml4cG9pbnR8Q29JbmR1Y3RpdmV8Q29lcmNpb258Q29lcmNpb25zfENvbGxlY3Rpb258Q29tYmluZWR8Q29tcHV0ZXxDb25qZWN0dXJlfENvbmplY3R1cmVzfENvbnN0YW50fENvbnN0YW50c3xDb25zdHJhaW50fENvbnN0cnVjdG9yc3xDb250ZXh0fENvcm9sbGFyeXxDcmVhdGV8Q3N0T3B8Q3VzdG9tfEN1dHxEZWJ1Z3xEZWNsYXJlfERlZmluZWR8RGVmaW5pdGlvbnxEZWxpbWl0fERlcGVuZGVuY2llc3xEZXBlbmRlbnR8RGVyaXZlfERpZmZzfERyb3B8RWxpbWluYXRpb258RW5kfEVudHJ5fEVxdWFsaXR5fEV2YWx8RXhhbXBsZXxFeGlzdGVudGlhbHxFeGlzdGVudGlhbHN8RXhpc3Rpbmd8RXhwb3J0fEV4dGVybnxFeHRyYWN0aW9ufEZhY3R8RmFpbHxGaWVsZHxGaWxlfEZpcnN0b3JkZXJ8Rml4cG9pbnR8RmxhZ3N8Rm9jdXN8RnJvbXxGdW5jbGFzc3xGdW5jdGlvbnxGdW5jdGlvbmFsfEdDfEdlbmVyYWxpemFibGV8R29hbHxHcmFifEdyYW1tYXJ8R3JhcGh8R3VhcmRlZHxIYXNrZWxsfEhlYXB8SGlkZXxIaW50fEhpbnREYnxIaW50c3xIeXBvdGhlc2VzfEh5cG90aGVzaXN8SUZ8SWRlbnRpdHl8SW1tZWRpYXRlfEltcGxpY2l0fEltcGxpY2l0c3xJbXBvcnR8SW5jbHVkZXxJbmR1Y3Rpb258SW5kdWN0aXZlfEluZml4fEluZm98SW5pdGlhbHxJbmpUeXB8SW5saW5lfEluc3BlY3R8SW5zdGFuY2V8SW5zdGFuY2VzfEludHJvfEludHJvc3xJbnZlcnNpb258SW52ZXJzaW9uX2NsZWFyfEpTT058TGFuZ3VhZ2V8TGVmdHxMZW1tYXxMZXR8TGlhfExpYnJhcmllc3xMaWJyYXJ5fExvYWR8TG9hZFBhdGh8TG9jYXRlfEx0YWN8THRhYzJ8TUx8TWF0Y2h8TWV0aG9kfE1pbmltYWxpdHl8TW9kdWxlfE1vZHVsZXN8TW9ycGhpc218TmV4dHxOb0lubGluZXxOb3RhdGlvbnxOdW1iZXJ8T0NhbWx8T2JsaWdhdGlvbnxPYmxpZ2F0aW9uc3xPcGFxdWV8T3BlbnxPcHRpbWl6ZXxQYXJhbWV0ZXJ8UGFyYW1ldGVyc3xQYXJhbWV0cmljfFBhdGh8UGF0aHN8UHJlbmV4fFByZXRlcm18UHJpbWl0aXZlfFByaW50fFByb2ZpbGV8UHJvamVjdGlvbnN8UHJvb2Z8UHJvcHxQcm9wQmluT3B8UHJvcE9wfFByb3BVT3B8UHJvcGVydHl8UHJvcG9zaXRpb258UHdkfFFlZHxRdWl0fFJlY3xSZWNvcmR8UmVjdXJzaXZlfFJlZGlyZWN0fFJlZHVjdGlvbnxSZWdpc3RlcnxSZWxhdGlvbnxSZW1hcmt8UmVtb3ZlfFJlcXVpcmV8UmVzZXJ2ZWR8UmVzZXR8UmVzb2x2ZXxSZXN0YXJ0fFJld3JpdGV8UmlnaHR8UmluZ3xSaW5nc3xTUHJvcHxTYXR1cmF0ZXxTYXZlfFNjaGVtZXxTY29wZXxTY29wZXN8U2VhcmNofFNlYXJjaEhlYWR8U2VhcmNoUGF0dGVybnxTZWFyY2hSZXdyaXRlfFNlY3Rpb258U2VwYXJhdGV8U2V0fFNldG9pZHxTaG93fFNpZ25hdHVyZXN8U29sdmV8U29sdmVyfFNvcnR8U29ydGNsYXNzfFNvcnRlZHxTcGVjfFN0ZXB8U3RyYXRlZ2llc3xTdHJhdGVneXxTdHJpbmd8U3RydWN0dXJlfFN1YkNsYXNzfFN1YmdyYXBofFN1Y2hUaGF0fFRhY3RpY3xUZXJtfFRlc3RDb21waWxlfFRoZW9yZW18VGltZXxUaW1lb3V0fFRvfFRyYW5zcGFyZW50fFR5cGV8VHlwZWNsYXNzZXN8VHlwZXN8VHlwaW5nfFVuT3B8VW5PcFNwZWN8VW5kZWxpbWl0fFVuZG98VW5mb2N1c3xVbmZvY3VzZWR8VW5mb2xkfFVuaXZlcnNlfFVuaXZlcnNlc3xVbnNoZWx2ZXxWYXJpYWJsZXxWYXJpYWJsZXN8VmFyaWFudHxWZXJib3NlfFZpZXd8VmlzaWJpbGl0eXxaaWZ5fF98YXBwbHl8YXN8YXR8Ynl8Y29maXh8ZWxzZXxlbmR8ZXhpc3RzfGV4aXN0czJ8Zml4fGZvcnxmb3JhbGx8ZnVufGlmfGlufGxldHxtYXRjaHxtZWFzdXJlfG1vdmV8cmVtb3ZlZHxyZXR1cm58c3RydWN0fHRoZW58dXNpbmd8d2Z8d2hlcmV8d2l0aClcXGIvLFxuICAgICAgbnVtYmVyOlxuICAgICAgICAvXFxiKD86MHhbYS1mMC05XVthLWYwLTlfXSooPzpcXC5bYS1mMC05X10rKT8oPzpwWystXT9cXGRbXFxkX10qKT98XFxkW1xcZF9dKig/OlxcLltcXGRfXSspPyg/OmVbKy1dP1xcZFtcXGRfXSopPylcXGIvaSxcbiAgICAgIHB1bmN0OiB7XG4gICAgICAgIHBhdHRlcm46IC9AXFx7fFxce1xcfHxcXFs9fDo+LyxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICBvcGVyYXRvcjpcbiAgICAgICAgL1xcL1xcXFx8XFxcXFxcL3xcXC57MiwzfXw6ezEsMn09fFxcKlxcKnxbLT1dPnw8KD86LT4/fFsrOj0+XXw8Oil8Pig/Oj18LT4pfFxcfFstfF0/fFstISUmKisvPD0+P0BefiddLyxcbiAgICAgIHB1bmN0dWF0aW9uOiAvXFwuXFwofGBcXCh8QFxce3xgXFx7fFxce1xcfHxcXFs9fDo+fFs6Liw7KCl7fVxcW1xcXV0vXG4gICAgfVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIHJlZnJhY3RvclJ1YnkgPSByZXF1aXJlKCcuL3J1YnkuanMnKVxubW9kdWxlLmV4cG9ydHMgPSBjcnlzdGFsXG5jcnlzdGFsLmRpc3BsYXlOYW1lID0gJ2NyeXN0YWwnXG5jcnlzdGFsLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gY3J5c3RhbChQcmlzbSkge1xuICBQcmlzbS5yZWdpc3RlcihyZWZyYWN0b3JSdWJ5KVxuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIFByaXNtLmxhbmd1YWdlcy5jcnlzdGFsID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgncnVieScsIHtcbiAgICAgIGtleXdvcmQ6IFtcbiAgICAgICAgL1xcYig/Ol9fRElSX198X19FTkRfTElORV9ffF9fRklMRV9ffF9fTElORV9ffGFic3RyYWN0fGFsaWFzfGFubm90YXRpb258YXN8YXNtfGJlZ2lufGJyZWFrfGNhc2V8Y2xhc3N8ZGVmfGRvfGVsc2V8ZWxzaWZ8ZW5kfGVuc3VyZXxlbnVtfGV4dGVuZHxmb3J8ZnVufGlmfGlmZGVmfGluY2x1ZGV8aW5zdGFuY2Vfc2l6ZW9mfGxpYnxtYWNyb3xtb2R1bGV8bmV4dHxvZnxvdXR8cG9pbnRlcm9mfHByaXZhdGV8cHJvdGVjdGVkfHB0cnxyZXF1aXJlfHJlc2N1ZXxyZXR1cm58c2VsZWN0fHNlbGZ8c2l6ZW9mfHN0cnVjdHxzdXBlcnx0aGVufHR5cGV8dHlwZW9mfHVuZGVmfHVuaW5pdGlhbGl6ZWR8dW5pb258dW5sZXNzfHVudGlsfHdoZW58d2hpbGV8d2l0aHx5aWVsZClcXGIvLFxuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjogLyhcXC5cXHMqKSg/OmlzX2F8cmVzcG9uZHNfdG8pXFw/LyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBudW1iZXI6XG4gICAgICAgIC9cXGIoPzowYlswMV9dKlswMV18MG9bMC03X10qWzAtN118MHhbXFxkYS1mQS1GX10qW1xcZGEtZkEtRl18KD86XFxkKD86W1xcZF9dKlxcZCk/KSg/OlxcLltcXGRfXSpcXGQpPyg/OltlRV1bKy1dP1tcXGRfXSpcXGQpPykoPzpfKD86W3VpZl0oPzo4fDE2fDMyfDY0KSk/KT9cXGIvLFxuICAgICAgb3BlcmF0b3I6IFsvLT4vLCBQcmlzbS5sYW5ndWFnZXMucnVieS5vcGVyYXRvcl0sXG4gICAgICBwdW5jdHVhdGlvbjogL1soKXt9W1xcXS4sO1xcXFxdL1xuICAgIH0pXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnY3J5c3RhbCcsICdzdHJpbmctbGl0ZXJhbCcsIHtcbiAgICAgIGF0dHJpYnV0ZToge1xuICAgICAgICBwYXR0ZXJuOiAvQFxcWy4qP1xcXS8sXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGRlbGltaXRlcjoge1xuICAgICAgICAgICAgcGF0dGVybjogL15AXFxbfFxcXSQvLFxuICAgICAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGF0dHJpYnV0ZToge1xuICAgICAgICAgICAgcGF0dGVybjogL14oXFxzKilcXHcrLyxcbiAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgICBhbGlhczogJ2NsYXNzLW5hbWUnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvXFxTKD86W1xcc1xcU10qXFxTKT8vLFxuICAgICAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMuY3J5c3RhbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGV4cGFuc2lvbjoge1xuICAgICAgICBwYXR0ZXJuOiAvXFx7KD86XFx7Lio/XFx9fCUuKj8lKVxcfS8sXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IC9eKFxcey4pW1xcc1xcU10rKD89LlxcfSQpLyxcbiAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5jcnlzdGFsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWxpbWl0ZXI6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IC9eXFx7W1xceyVdfFtcXH0lXVxcfSQvLFxuICAgICAgICAgICAgYWxpYXM6ICdvcGVyYXRvcidcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjaGFyOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLycoPzpbXlxcXFxcXHJcXG5dezEsMn18XFxcXCg/Oi58dSg/OltBLUZhLWYwLTldezEsNH18XFx7W0EtRmEtZjAtOV17MSw2fVxcfSkpKScvLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH1cbiAgICB9KVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIHJlZnJhY3RvckNzaGFycCA9IHJlcXVpcmUoJy4vY3NoYXJwLmpzJylcbm1vZHVsZS5leHBvcnRzID0gY3NodG1sXG5jc2h0bWwuZGlzcGxheU5hbWUgPSAnY3NodG1sJ1xuY3NodG1sLmFsaWFzZXMgPSBbJ3Jhem9yJ11cbmZ1bmN0aW9uIGNzaHRtbChQcmlzbSkge1xuICBQcmlzbS5yZWdpc3RlcihyZWZyYWN0b3JDc2hhcnApXG4gIC8vIERvY3M6XG4gIC8vIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2FzcG5ldC9jb3JlL3Jhem9yLXBhZ2VzLz92aWV3PWFzcG5ldGNvcmUtNS4wJnRhYnM9dmlzdWFsLXN0dWRpb1xuICAvLyBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9hc3BuZXQvY29yZS9tdmMvdmlld3MvcmF6b3I/dmlldz1hc3BuZXRjb3JlLTUuMFxuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIHZhciBjb21tZW50TGlrZSA9IC9cXC8oPyFbLypdKXxcXC9cXC8uKltcXHJcXG5dfFxcL1xcKlteKl0qKD86XFwqKD8hXFwvKVteKl0qKSpcXCpcXC8vXG4gICAgICAuc291cmNlXG4gICAgdmFyIHN0cmluZ0xpa2UgPVxuICAgICAgL0AoPyFcIil8XCIoPzpbXlxcclxcblxcXFxcIl18XFxcXC4pKlwifEBcIig/OlteXFxcXFwiXXxcIlwifFxcXFxbXFxzXFxTXSkqXCIoPyFcIikvLnNvdXJjZSArXG4gICAgICAnfCcgK1xuICAgICAgLycoPzooPzpbXlxcclxcbidcXFxcXXxcXFxcLnxcXFxcW1V1eF1bXFxkYS1mQS1GXXsxLDh9KSd8KD89W15cXFxcXSg/IScpKSkvLnNvdXJjZVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXN0ZWQgcGF0dGVybiB3aGVyZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHN0cmluZyBgPDxzZWxmPj5gIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBwYXR0ZXJuIGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXR0ZXJuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoTG9nMlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbmVzdGVkKHBhdHRlcm4sIGRlcHRoTG9nMikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXB0aExvZzI7IGkrKykge1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC88c2VsZj4vZywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAnKD86JyArIHBhdHRlcm4gKyAnKSdcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXR0ZXJuXG4gICAgICAgIC5yZXBsYWNlKC88c2VsZj4vZywgJ1teXFxcXHNcXFxcU10nKVxuICAgICAgICAucmVwbGFjZSgvPHN0cj4vZywgJyg/OicgKyBzdHJpbmdMaWtlICsgJyknKVxuICAgICAgICAucmVwbGFjZSgvPGNvbW1lbnQ+L2csICcoPzonICsgY29tbWVudExpa2UgKyAnKScpXG4gICAgfVxuICAgIHZhciByb3VuZCA9IG5lc3RlZCgvXFwoKD86W14oKSdcIkAvXXw8c3RyPnw8Y29tbWVudD58PHNlbGY+KSpcXCkvLnNvdXJjZSwgMilcbiAgICB2YXIgc3F1YXJlID0gbmVzdGVkKC9cXFsoPzpbXlxcW1xcXSdcIkAvXXw8c3RyPnw8Y29tbWVudD58PHNlbGY+KSpcXF0vLnNvdXJjZSwgMilcbiAgICB2YXIgY3VybHkgPSBuZXN0ZWQoL1xceyg/Oltee30nXCJAL118PHN0cj58PGNvbW1lbnQ+fDxzZWxmPikqXFx9Ly5zb3VyY2UsIDIpXG4gICAgdmFyIGFuZ2xlID0gbmVzdGVkKC88KD86W148PidcIkAvXXw8c3RyPnw8Y29tbWVudD58PHNlbGY+KSo+Ly5zb3VyY2UsIDIpIC8vIE5vdGUgYWJvdXQgdGhlIGFib3ZlIGJyYWNrZXQgcGF0dGVybnM6XG4gICAgLy8gVGhleSBhbGwgaWdub3JlIEhUTUwgZXhwcmVzc2lvbnMgdGhhdCBtaWdodCBiZSBpbiB0aGUgQyMgY29kZS4gVGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZSBIVE1MIChsaWtlIHN0cmluZ3MgYW5kXG4gICAgLy8gY29tbWVudHMpIGlzIHBhcnNlZCBkaWZmZXJlbnRseS4gVGhpcyBpcyBhIGh1Z2UgcHJvYmxlbSBiZWNhdXNlIEhUTUwgbWlnaHQgY29udGFpbiBicmFja2V0cyBhbmQgcXVvdGVzIHdoaWNoXG4gICAgLy8gbWVzc2VzIHVwIHRoZSBicmFja2V0IGFuZCBzdHJpbmcgY291bnRpbmcgaW1wbGVtZW50ZWQgYnkgdGhlIGFib3ZlIHBhdHRlcm5zLlxuICAgIC8vXG4gICAgLy8gVGhpcyBwcm9ibGVtIGlzIG5vdCBmaXhhYmxlIGJlY2F1c2UgMSkgSFRNTCBleHByZXNzaW9uIGFyZSBoaWdobHkgY29udGV4dCBzZW5zaXRpdmUgYW5kIHZlcnkgZGlmZmljdWx0IHRvIGRldGVjdFxuICAgIC8vIGFuZCAyKSB0aGV5IHJlcXVpcmUgb25lIGNhcHR1cmluZyBncm91cCBhdCBldmVyeSBuZXN0ZWQgbGV2ZWwuIFNlZSB0aGUgYHRhZ1JlZ2lvbmAgcGF0dGVybiB0byBhZG1pcmUgdGhlXG4gICAgLy8gY29tcGxleGl0eSBvZiBhbiBIVE1MIGV4cHJlc3Npb24uXG4gICAgLy9cbiAgICAvLyBUbyBzb21ld2hhdCBhbGxldmlhdGUgdGhlIHByb2JsZW0gYSBiaXQsIHRoZSBwYXR0ZXJucyBmb3IgY2hhcmFjdGVycyAoZS5nLiAnYScpIGlzIHZlcnkgcGVybWlzc2l2ZSwgaXQgYWxzb1xuICAgIC8vIGFsbG93cyBpbnZhbGlkIGNoYXJhY3RlcnMgdG8gc3VwcG9ydCBIVE1MIGV4cHJlc3Npb25zIGxpa2UgdGhpczogPHA+VGhhdCdzIGl0ITwvcD4uXG4gICAgdmFyIHRhZ0F0dHJzID1cbiAgICAgIC8oPzpcXHMoPzpcXHMqW15cXHM+XFwvPV0rKD86XFxzKj1cXHMqKD86XCJbXlwiXSpcInwnW14nXSonfFteXFxzJ1wiPj1dKyg/PVtcXHM+XSkpfCg/PVtcXHMvPl0pKSkrKT8vXG4gICAgICAgIC5zb3VyY2VcbiAgICB2YXIgdGFnQ29udGVudCA9IC8oPyFcXGQpW15cXHM+XFwvPSQ8JV0rLy5zb3VyY2UgKyB0YWdBdHRycyArIC9cXHMqXFwvPz4vLnNvdXJjZVxuICAgIHZhciB0YWdSZWdpb24gPVxuICAgICAgL1xcQkA/Ly5zb3VyY2UgK1xuICAgICAgJyg/OicgK1xuICAgICAgLzwoW2EtekEtWl1bXFx3Ol0qKS8uc291cmNlICtcbiAgICAgIHRhZ0F0dHJzICtcbiAgICAgIC9cXHMqPi8uc291cmNlICtcbiAgICAgICcoPzonICtcbiAgICAgICgvW148XS8uc291cmNlICtcbiAgICAgICAgJ3wnICsgLy8gYWxsIHRhZ3MgdGhhdCBhcmUgbm90IHRoZSBzdGFydCB0YWdcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9zdHJpY3RcbiAgICAgICAgLzxcXC8/KD8hXFwxXFxiKS8uc291cmNlICtcbiAgICAgICAgdGFnQ29udGVudCArXG4gICAgICAgICd8JyArIC8vIG5lc3RlZCBzdGFydCB0YWdcbiAgICAgICAgbmVzdGVkKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvc3RyaWN0XG4gICAgICAgICAgLzxcXDEvLnNvdXJjZSArXG4gICAgICAgICAgICB0YWdBdHRycyArXG4gICAgICAgICAgICAvXFxzKj4vLnNvdXJjZSArXG4gICAgICAgICAgICAnKD86JyArXG4gICAgICAgICAgICAoL1tePF0vLnNvdXJjZSArXG4gICAgICAgICAgICAgICd8JyArIC8vIGFsbCB0YWdzIHRoYXQgYXJlIG5vdCB0aGUgc3RhcnQgdGFnXG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvc3RyaWN0XG4gICAgICAgICAgICAgIC88XFwvPyg/IVxcMVxcYikvLnNvdXJjZSArXG4gICAgICAgICAgICAgIHRhZ0NvbnRlbnQgK1xuICAgICAgICAgICAgICAnfCcgK1xuICAgICAgICAgICAgICAnPHNlbGY+JykgK1xuICAgICAgICAgICAgJykqJyArIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvc3RyaWN0XG4gICAgICAgICAgICAvPFxcL1xcMVxccyo+Ly5zb3VyY2UsXG4gICAgICAgICAgMlxuICAgICAgICApKSArXG4gICAgICAnKSonICsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9zdHJpY3RcbiAgICAgIC88XFwvXFwxXFxzKj4vLnNvdXJjZSArXG4gICAgICAnfCcgK1xuICAgICAgLzwvLnNvdXJjZSArXG4gICAgICB0YWdDb250ZW50ICtcbiAgICAgICcpJyAvLyBOb3cgZm9yIHRoZSBhY3R1YWwgbGFuZ3VhZ2UgZGVmaW5pdGlvbihzKTpcbiAgICAvL1xuICAgIC8vIFJhem9yIGFzIGEgbGFuZ3VhZ2UgaGFzIDIgcGFydHM6XG4gICAgLy8gIDEpIENTSFRNTDogQSBtYXJrdXAtbGlrZSBsYW5ndWFnZSB0aGF0IGhhcyBiZWVuIGV4dGVuZGVkIHdpdGggaW5saW5lIEMjIGNvZGUgZXhwcmVzc2lvbnMgYW5kIGJsb2Nrcy5cbiAgICAvLyAgMikgQyMrSFRNTDogQSB2YXJpYW50IG9mIEMjIHRoYXQgY2FuIGNvbnRhaW4gQ1NIVE1MIHRhZ3MgYXMgZXhwcmVzc2lvbnMuXG4gICAgLy9cbiAgICAvLyBJbiB0aGUgYmVsb3cgY29kZSwgYm90aCBDU0hUTUwgYW5kIEMjK0hUTUwgd2lsbCBiZSBjcmVhdGUgYXMgc2VwYXJhdGUgbGFuZ3VhZ2UgZGVmaW5pdGlvbnMgdGhhdCByZWZlcmVuY2UgZWFjaFxuICAgIC8vIG90aGVyLiBIb3dldmVyLCBvbmx5IENTSFRNTCB3aWxsIGJlIGV4cG9ydGVkIHZpYSBgUHJpc20ubGFuZ3VhZ2VzYC5cbiAgICBQcmlzbS5sYW5ndWFnZXMuY3NodG1sID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnbWFya3VwJywge30pXG4gICAgdmFyIGNzaGFycFdpdGhIdG1sID0gUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZShcbiAgICAgICdjc2hhcnAnLFxuICAgICAgJ3N0cmluZycsXG4gICAgICB7XG4gICAgICAgIGh0bWw6IHtcbiAgICAgICAgICBwYXR0ZXJuOiBSZWdFeHAodGFnUmVnaW9uKSxcbiAgICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMuY3NodG1sXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNzaGFycDogUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnY3NoYXJwJywge30pXG4gICAgICB9XG4gICAgKVxuICAgIHZhciBjcyA9IHtcbiAgICAgIHBhdHRlcm46IC9cXFNbXFxzXFxTXSovLFxuICAgICAgYWxpYXM6ICdsYW5ndWFnZS1jc2hhcnAnLFxuICAgICAgaW5zaWRlOiBjc2hhcnBXaXRoSHRtbFxuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdjc2h0bWwnLCAncHJvbG9nJywge1xuICAgICAgJ3Jhem9yLWNvbW1lbnQnOiB7XG4gICAgICAgIHBhdHRlcm46IC9AXFwqW1xcc1xcU10qP1xcKkAvLFxuICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnY29tbWVudCdcbiAgICAgIH0sXG4gICAgICBibG9jazoge1xuICAgICAgICBwYXR0ZXJuOiBSZWdFeHAoXG4gICAgICAgICAgLyhefFteQF0pQC8uc291cmNlICtcbiAgICAgICAgICAgICcoPzonICtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgLy8gQHsgLi4uIH1cbiAgICAgICAgICAgICAgY3VybHksIC8vIEBjb2RleyAuLi4gfVxuICAgICAgICAgICAgICAvKD86Y29kZXxmdW5jdGlvbnMpXFxzKi8uc291cmNlICsgY3VybHksIC8vIEBmb3IgKC4uLikgeyAuLi4gfVxuICAgICAgICAgICAgICAvKD86Zm9yfGZvcmVhY2h8bG9ja3xzd2l0Y2h8dXNpbmd8d2hpbGUpXFxzKi8uc291cmNlICtcbiAgICAgICAgICAgICAgICByb3VuZCArXG4gICAgICAgICAgICAgICAgL1xccyovLnNvdXJjZSArXG4gICAgICAgICAgICAgICAgY3VybHksIC8vIEBkbyB7IC4uLiB9IHdoaWxlICguLi4pO1xuICAgICAgICAgICAgICAvZG9cXHMqLy5zb3VyY2UgK1xuICAgICAgICAgICAgICAgIGN1cmx5ICtcbiAgICAgICAgICAgICAgICAvXFxzKndoaWxlXFxzKi8uc291cmNlICtcbiAgICAgICAgICAgICAgICByb3VuZCArXG4gICAgICAgICAgICAgICAgLyg/Olxccyo7KT8vLnNvdXJjZSwgLy8gQHRyeSB7IC4uLiB9IGNhdGNoICguLi4pIHsgLi4uIH0gZmluYWxseSB7IC4uLiB9XG4gICAgICAgICAgICAgIC90cnlcXHMqLy5zb3VyY2UgK1xuICAgICAgICAgICAgICAgIGN1cmx5ICtcbiAgICAgICAgICAgICAgICAvXFxzKmNhdGNoXFxzKi8uc291cmNlICtcbiAgICAgICAgICAgICAgICByb3VuZCArXG4gICAgICAgICAgICAgICAgL1xccyovLnNvdXJjZSArXG4gICAgICAgICAgICAgICAgY3VybHkgK1xuICAgICAgICAgICAgICAgIC9cXHMqZmluYWxseVxccyovLnNvdXJjZSArXG4gICAgICAgICAgICAgICAgY3VybHksIC8vIEBpZiAoLi4uKSB7Li4ufSBlbHNlIGlmICguLi4pIHsuLi59IGVsc2Ugey4uLn1cbiAgICAgICAgICAgICAgL2lmXFxzKi8uc291cmNlICtcbiAgICAgICAgICAgICAgICByb3VuZCArXG4gICAgICAgICAgICAgICAgL1xccyovLnNvdXJjZSArXG4gICAgICAgICAgICAgICAgY3VybHkgK1xuICAgICAgICAgICAgICAgICcoPzonICtcbiAgICAgICAgICAgICAgICAvXFxzKmVsc2UvLnNvdXJjZSArXG4gICAgICAgICAgICAgICAgJyg/OicgK1xuICAgICAgICAgICAgICAgIC9cXHMraWZcXHMqLy5zb3VyY2UgK1xuICAgICAgICAgICAgICAgIHJvdW5kICtcbiAgICAgICAgICAgICAgICAnKT8nICtcbiAgICAgICAgICAgICAgICAvXFxzKi8uc291cmNlICtcbiAgICAgICAgICAgICAgICBjdXJseSArXG4gICAgICAgICAgICAgICAgJykqJ1xuICAgICAgICAgICAgXS5qb2luKCd8JykgK1xuICAgICAgICAgICAgJyknXG4gICAgICAgICksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAga2V5d29yZDogL15AXFx3Ki8sXG4gICAgICAgICAgY3NoYXJwOiBjc1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGlyZWN0aXZlOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgL14oWyBcXHRdKilAKD86YWRkVGFnSGVscGVyfGF0dHJpYnV0ZXxpbXBsZW1lbnRzfGluaGVyaXRzfGluamVjdHxsYXlvdXR8bW9kZWx8bmFtZXNwYWNlfHBhZ2V8cHJlc2VydmV3aGl0ZXNwYWNlfHJlbW92ZVRhZ0hlbHBlcnxzZWN0aW9ufHRhZ0hlbHBlclByZWZpeHx1c2luZykoPz1cXHMpLiovbSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICBrZXl3b3JkOiAvXkBcXHcrLyxcbiAgICAgICAgICBjc2hhcnA6IGNzXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB2YWx1ZToge1xuICAgICAgICBwYXR0ZXJuOiBSZWdFeHAoXG4gICAgICAgICAgLyhefFteQF0pQC8uc291cmNlICtcbiAgICAgICAgICAgIC8oPzphd2FpdFxcYlxccyopPy8uc291cmNlICtcbiAgICAgICAgICAgICcoPzonICtcbiAgICAgICAgICAgIC9cXHcrXFxiLy5zb3VyY2UgK1xuICAgICAgICAgICAgJ3wnICtcbiAgICAgICAgICAgIHJvdW5kICtcbiAgICAgICAgICAgICcpJyArXG4gICAgICAgICAgICAnKD86JyArXG4gICAgICAgICAgICAvWz8hXT9cXC5cXHcrXFxiLy5zb3VyY2UgK1xuICAgICAgICAgICAgJ3wnICtcbiAgICAgICAgICAgIHJvdW5kICtcbiAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICBzcXVhcmUgK1xuICAgICAgICAgICAgJ3wnICtcbiAgICAgICAgICAgIGFuZ2xlICtcbiAgICAgICAgICAgIHJvdW5kICtcbiAgICAgICAgICAgICcpKidcbiAgICAgICAgKSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBhbGlhczogJ3ZhcmlhYmxlJyxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAga2V5d29yZDogL15ALyxcbiAgICAgICAgICBjc2hhcnA6IGNzXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnZGVsZWdhdGUtb3BlcmF0b3InOiB7XG4gICAgICAgIHBhdHRlcm46IC8oXnxbXkBdKUAoPz08KS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnb3BlcmF0b3InXG4gICAgICB9XG4gICAgfSlcbiAgICBQcmlzbS5sYW5ndWFnZXMucmF6b3IgPSBQcmlzbS5sYW5ndWFnZXMuY3NodG1sXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gY3NwXG5jc3AuZGlzcGxheU5hbWUgPSAnY3NwJ1xuY3NwLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gY3NwKFByaXNtKSB7XG4gIC8qKlxuICAgKiBPcmlnaW5hbCBieSBTY290dCBIZWxtZS5cbiAgICpcbiAgICogUmVmZXJlbmNlOiBodHRwczovL3Njb3R0aGVsbWUuY28udWsvY3NwLWNoZWF0LXNoZWV0L1xuICAgKlxuICAgKiBTdXBwb3J0cyB0aGUgZm9sbG93aW5nOlxuICAgKiAgLSBodHRwczovL3d3dy53My5vcmcvVFIvQ1NQMS9cbiAgICogIC0gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDIvXG4gICAqICAtIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzL1xuICAgKi9cbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlXG4gICAgICogQHJldHVybnMge1JlZ0V4cH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZShzb3VyY2UpIHtcbiAgICAgIHJldHVybiBSZWdFeHAoXG4gICAgICAgIC8oWyBcXHRdKS8uc291cmNlICsgJyg/OicgKyBzb3VyY2UgKyAnKScgKyAvKD89W1xccztdfCQpLy5zb3VyY2UsXG4gICAgICAgICdpJ1xuICAgICAgKVxuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuY3NwID0ge1xuICAgICAgZGlyZWN0aXZlOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFtcXHM7XSkoPzpiYXNlLXVyaXxibG9jay1hbGwtbWl4ZWQtY29udGVudHwoPzpjaGlsZHxjb25uZWN0fGRlZmF1bHR8Zm9udHxmcmFtZXxpbWd8bWFuaWZlc3R8bWVkaWF8b2JqZWN0fHByZWZldGNofHNjcmlwdHxzdHlsZXx3b3JrZXIpLXNyY3xkaXNvd24tb3BlbmVyfGZvcm0tYWN0aW9ufGZyYW1lLSg/OmFuY2VzdG9yc3xvcHRpb25zKXxpbnB1dC1wcm90ZWN0aW9uKD86LSg/OmNsaXB8c2VsZWN0b3JzKSk/fG5hdmlnYXRlLXRvfHBsdWdpbi10eXBlc3xwb2xpY3ktdXJpfHJlZmVycmVyfHJlZmxlY3RlZC14c3N8cmVwb3J0LSg/OnRvfHVyaSl8cmVxdWlyZS1zcmktZm9yfHNhbmRib3h8KD86c2NyaXB0fHN0eWxlKS1zcmMtKD86YXR0cnxlbGVtKXx1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzKSg/PVtcXHM7XXwkKS9pLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ3Byb3BlcnR5J1xuICAgICAgfSxcbiAgICAgIHNjaGVtZToge1xuICAgICAgICBwYXR0ZXJuOiB2YWx1ZSgvW2Etel1bYS16MC05ListXSo6Ly5zb3VyY2UpLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgbm9uZToge1xuICAgICAgICBwYXR0ZXJuOiB2YWx1ZSgvJ25vbmUnLy5zb3VyY2UpLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgICB9LFxuICAgICAgbm9uY2U6IHtcbiAgICAgICAgcGF0dGVybjogdmFsdWUoLydub25jZS1bLSsvXFx3PV0rJy8uc291cmNlKSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdudW1iZXInXG4gICAgICB9LFxuICAgICAgaGFzaDoge1xuICAgICAgICBwYXR0ZXJuOiB2YWx1ZSgvJ3NoYSg/OjI1NnwzODR8NTEyKS1bLSsvXFx3PV0rJy8uc291cmNlKSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdudW1iZXInXG4gICAgICB9LFxuICAgICAgaG9zdDoge1xuICAgICAgICBwYXR0ZXJuOiB2YWx1ZShcbiAgICAgICAgICAvW2Etel1bYS16MC05ListXSo6XFwvXFwvW15cXHM7LCddKi8uc291cmNlICtcbiAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAvXFwqW15cXHM7LCddKi8uc291cmNlICtcbiAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAvW2EtejAtOS1dKyg/OlxcLlthLXowLTktXSspKyg/OjpbXFxkKl0rKT8oPzpcXC9bXlxcczssJ10qKT8vLnNvdXJjZVxuICAgICAgICApLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ3VybCcsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGltcG9ydGFudDogL1xcKi9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGtleXdvcmQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdHRlcm46IHZhbHVlKC8ndW5zYWZlLVthLXotXSsnLy5zb3VyY2UpLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICd1bnNhZmUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXR0ZXJuOiB2YWx1ZSgvJ1thLXotXSsnLy5zb3VyY2UpLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICdzYWZlJ1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgcHVuY3R1YXRpb246IC87L1xuICAgIH1cbiAgfSkoUHJpc20pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBjc3NFeHRyYXNcbmNzc0V4dHJhcy5kaXNwbGF5TmFtZSA9ICdjc3NFeHRyYXMnXG5jc3NFeHRyYXMuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBjc3NFeHRyYXMoUHJpc20pIHtcbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICB2YXIgc3RyaW5nID0gLyhcInwnKSg/OlxcXFwoPzpcXHJcXG58W1xcc1xcU10pfCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvXG4gICAgdmFyIHNlbGVjdG9ySW5zaWRlXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmNzcy5zZWxlY3RvciA9IHtcbiAgICAgIHBhdHRlcm46IFByaXNtLmxhbmd1YWdlcy5jc3Muc2VsZWN0b3IucGF0dGVybixcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBpbnNpZGU6IChzZWxlY3Rvckluc2lkZSA9IHtcbiAgICAgICAgJ3BzZXVkby1lbGVtZW50JzpcbiAgICAgICAgICAvOig/OmFmdGVyfGJlZm9yZXxmaXJzdC1sZXR0ZXJ8Zmlyc3QtbGluZXxzZWxlY3Rpb24pfDo6Wy1cXHddKy8sXG4gICAgICAgICdwc2V1ZG8tY2xhc3MnOiAvOlstXFx3XSsvLFxuICAgICAgICBjbGFzczogL1xcLlstXFx3XSsvLFxuICAgICAgICBpZDogLyNbLVxcd10rLyxcbiAgICAgICAgYXR0cmlidXRlOiB7XG4gICAgICAgICAgcGF0dGVybjogUmVnRXhwKCdcXFxcWyg/OlteW1xcXFxdXCJcXCddfCcgKyBzdHJpbmcuc291cmNlICsgJykqXFxcXF0nKSxcbiAgICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogL15cXFt8XFxdJC8sXG4gICAgICAgICAgICAnY2FzZS1zZW5zaXRpdml0eSc6IHtcbiAgICAgICAgICAgICAgcGF0dGVybjogLyhcXHMpW3NpXSQvaSxcbiAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWVzcGFjZToge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvXihcXHMqKSg/Oig/IVxccylbLSpcXHdcXHhBMC1cXHVGRkZGXSkqXFx8KD8hPSkvLFxuICAgICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbjogL1xcfCQvXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYXR0ci1uYW1lJzoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvXihcXHMqKSg/Oig/IVxccylbLVxcd1xceEEwLVxcdUZGRkZdKSsvLFxuICAgICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2F0dHItdmFsdWUnOiBbXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhdHRlcm46IC8oPVxccyopKD86KD8hXFxzKVstXFx3XFx4QTAtXFx1RkZGRl0pKyg/PVxccyokKS8sXG4gICAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgb3BlcmF0b3I6IC9bfH4qXiRdPz0vXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnbi10aCc6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvKFxcKFxccyopWystXT9cXGQqW1xcZG5dKD86XFxzKlsrLV1cXHMqXFxkKyk/KD89XFxzKlxcKSkvLFxuICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgICBudW1iZXI6IC9bXFxkbl0rLyxcbiAgICAgICAgICAgICAgb3BlcmF0b3I6IC9bKy1dL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0dGVybjogLyhcXChcXHMqKSg/OmV2ZW58b2RkKSg/PVxccypcXCkpL2ksXG4gICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBjb21iaW5hdG9yOiAvPnxcXCt8fnxcXHxcXHwvLFxuICAgICAgICAvLyB0aGUgYHRhZ2AgdG9rZW4gaGFzIGJlZW4gZXhpc3RlZCBhbmQgcmVtb3ZlZC5cbiAgICAgICAgLy8gYmVjYXVzZSB3ZSBjYW4ndCBmaW5kIGEgcGVyZmVjdCB0b2tlbml6ZSB0byBtYXRjaCBpdC5cbiAgICAgICAgLy8gaWYgeW91IHdhbnQgdG8gYWRkIGl0LCBwbGVhc2UgcmVhZCBodHRwczovL2dpdGh1Yi5jb20vUHJpc21KUy9wcmlzbS9wdWxsLzIzNzMgZmlyc3QuXG4gICAgICAgIHB1bmN0dWF0aW9uOiAvWygpLF0vXG4gICAgICB9KVxuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuY3NzWydhdHJ1bGUnXS5pbnNpZGVbJ3NlbGVjdG9yLWZ1bmN0aW9uLWFyZ3VtZW50J10uaW5zaWRlID1cbiAgICAgIHNlbGVjdG9ySW5zaWRlXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnY3NzJywgJ3Byb3BlcnR5Jywge1xuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvKF58W14tXFx3XFx4QTAtXFx1RkZGRl0pLS0oPyFcXHMpWy1fYS16XFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWy1cXHdcXHhBMC1cXHVGRkZGXSkqL2ksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH1cbiAgICB9KVxuICAgIHZhciB1bml0ID0ge1xuICAgICAgcGF0dGVybjogLyhcXGJcXGQrKSg/OiV8W2Etel0rKD8hW1xcdy1dKSkvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH0gLy8gMTIzIC0xMjMgLjEyMyAtLjEyMyAxMi4zIC0xMi4zXG4gICAgdmFyIG51bWJlciA9IHtcbiAgICAgIHBhdHRlcm46IC8oXnxbXlxcdy4tXSktPyg/OlxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKykvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdjc3MnLCAnZnVuY3Rpb24nLCB7XG4gICAgICBvcGVyYXRvcjoge1xuICAgICAgICBwYXR0ZXJuOiAvKFxccylbK1xcLSpcXC9dKD89XFxzKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICAvLyBDQVJFRlVMIVxuICAgICAgLy8gUHJldmlld2VycyBhbmQgSW5saW5lIGNvbG9yIHVzZSBoZXhjb2RlIGFuZCBjb2xvci5cbiAgICAgIGhleGNvZGU6IHtcbiAgICAgICAgcGF0dGVybjogL1xcQiNbXFxkYS1mXXszLDh9XFxiL2ksXG4gICAgICAgIGFsaWFzOiAnY29sb3InXG4gICAgICB9LFxuICAgICAgY29sb3I6IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgICAvKF58W15cXHctXSkoPzpBbGljZUJsdWV8QW50aXF1ZVdoaXRlfEFxdWF8QXF1YW1hcmluZXxBenVyZXxCZWlnZXxCaXNxdWV8QmxhY2t8QmxhbmNoZWRBbG1vbmR8Qmx1ZXxCbHVlVmlvbGV0fEJyb3dufEJ1cmx5V29vZHxDYWRldEJsdWV8Q2hhcnRyZXVzZXxDaG9jb2xhdGV8Q29yYWx8Q29ybmZsb3dlckJsdWV8Q29ybnNpbGt8Q3JpbXNvbnxDeWFufERhcmtCbHVlfERhcmtDeWFufERhcmtHb2xkZW5Sb2R8RGFya0dyW2FlXXl8RGFya0dyZWVufERhcmtLaGFraXxEYXJrTWFnZW50YXxEYXJrT2xpdmVHcmVlbnxEYXJrT3JhbmdlfERhcmtPcmNoaWR8RGFya1JlZHxEYXJrU2FsbW9ufERhcmtTZWFHcmVlbnxEYXJrU2xhdGVCbHVlfERhcmtTbGF0ZUdyW2FlXXl8RGFya1R1cnF1b2lzZXxEYXJrVmlvbGV0fERlZXBQaW5rfERlZXBTa3lCbHVlfERpbUdyW2FlXXl8RG9kZ2VyQmx1ZXxGaXJlQnJpY2t8RmxvcmFsV2hpdGV8Rm9yZXN0R3JlZW58RnVjaHNpYXxHYWluc2Jvcm98R2hvc3RXaGl0ZXxHb2xkfEdvbGRlblJvZHxHclthZV15fEdyZWVufEdyZWVuWWVsbG93fEhvbmV5RGV3fEhvdFBpbmt8SW5kaWFuUmVkfEluZGlnb3xJdm9yeXxLaGFraXxMYXZlbmRlcnxMYXZlbmRlckJsdXNofExhd25HcmVlbnxMZW1vbkNoaWZmb258TGlnaHRCbHVlfExpZ2h0Q29yYWx8TGlnaHRDeWFufExpZ2h0R29sZGVuUm9kWWVsbG93fExpZ2h0R3JbYWVdeXxMaWdodEdyZWVufExpZ2h0UGlua3xMaWdodFNhbG1vbnxMaWdodFNlYUdyZWVufExpZ2h0U2t5Qmx1ZXxMaWdodFNsYXRlR3JbYWVdeXxMaWdodFN0ZWVsQmx1ZXxMaWdodFllbGxvd3xMaW1lfExpbWVHcmVlbnxMaW5lbnxNYWdlbnRhfE1hcm9vbnxNZWRpdW1BcXVhTWFyaW5lfE1lZGl1bUJsdWV8TWVkaXVtT3JjaGlkfE1lZGl1bVB1cnBsZXxNZWRpdW1TZWFHcmVlbnxNZWRpdW1TbGF0ZUJsdWV8TWVkaXVtU3ByaW5nR3JlZW58TWVkaXVtVHVycXVvaXNlfE1lZGl1bVZpb2xldFJlZHxNaWRuaWdodEJsdWV8TWludENyZWFtfE1pc3R5Um9zZXxNb2NjYXNpbnxOYXZham9XaGl0ZXxOYXZ5fE9sZExhY2V8T2xpdmV8T2xpdmVEcmFifE9yYW5nZXxPcmFuZ2VSZWR8T3JjaGlkfFBhbGVHb2xkZW5Sb2R8UGFsZUdyZWVufFBhbGVUdXJxdW9pc2V8UGFsZVZpb2xldFJlZHxQYXBheWFXaGlwfFBlYWNoUHVmZnxQZXJ1fFBpbmt8UGx1bXxQb3dkZXJCbHVlfFB1cnBsZXxSZWR8Um9zeUJyb3dufFJveWFsQmx1ZXxTYWRkbGVCcm93bnxTYWxtb258U2FuZHlCcm93bnxTZWFHcmVlbnxTZWFTaGVsbHxTaWVubmF8U2lsdmVyfFNreUJsdWV8U2xhdGVCbHVlfFNsYXRlR3JbYWVdeXxTbm93fFNwcmluZ0dyZWVufFN0ZWVsQmx1ZXxUYW58VGVhbHxUaGlzdGxlfFRvbWF0b3xUcmFuc3BhcmVudHxUdXJxdW9pc2V8VmlvbGV0fFdoZWF0fFdoaXRlfFdoaXRlU21va2V8WWVsbG93fFllbGxvd0dyZWVuKSg/IVtcXHctXSkvaSxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgICAgL1xcYig/OmhzbHxyZ2IpXFwoXFxzKlxcZHsxLDN9XFxzKixcXHMqXFxkezEsM30lP1xccyosXFxzKlxcZHsxLDN9JT9cXHMqXFwpXFxCfFxcYig/OmhzbHxyZ2IpYVxcKFxccypcXGR7MSwzfVxccyosXFxzKlxcZHsxLDN9JT9cXHMqLFxccypcXGR7MSwzfSU/XFxzKixcXHMqKD86MHwwP1xcLlxcZCt8MSlcXHMqXFwpXFxCL2ksXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICB1bml0OiB1bml0LFxuICAgICAgICAgICAgbnVtYmVyOiBudW1iZXIsXG4gICAgICAgICAgICBmdW5jdGlvbjogL1tcXHctXSsoPz1cXCgpLyxcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvWygpLF0vXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgLy8gaXQncyBpbXBvcnRhbnQgdGhhdCB0aGVyZSBpcyBubyBib3VuZGFyeSBhc3NlcnRpb24gYWZ0ZXIgdGhlIGhleCBkaWdpdHNcbiAgICAgIGVudGl0eTogL1xcXFxbXFxkYS1mXXsxLDh9L2ksXG4gICAgICB1bml0OiB1bml0LFxuICAgICAgbnVtYmVyOiBudW1iZXJcbiAgICB9KVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNzdlxuY3N2LmRpc3BsYXlOYW1lID0gJ2NzdidcbmNzdi5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGNzdihQcmlzbSkge1xuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDE4MFxuICBQcmlzbS5sYW5ndWFnZXMuY3N2ID0ge1xuICAgIHZhbHVlOiAvW15cXHJcXG4sXCJdK3xcIig/OlteXCJdfFwiXCIpKlwiKD8hXCIpLyxcbiAgICBwdW5jdHVhdGlvbjogLywvXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGN5cGhlclxuY3lwaGVyLmRpc3BsYXlOYW1lID0gJ2N5cGhlcidcbmN5cGhlci5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGN5cGhlcihQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuY3lwaGVyID0ge1xuICAgIC8vIGh0dHBzOi8vbmVvNGouY29tL2RvY3MvY3lwaGVyLW1hbnVhbC9jdXJyZW50L3N5bnRheC9jb21tZW50cy9cbiAgICBjb21tZW50OiAvXFwvXFwvLiovLFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogL1wiKD86W15cIlxcXFxcXHJcXG5dfFxcXFwuKSpcInwnKD86W14nXFxcXFxcclxcbl18XFxcXC4pKicvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICAnY2xhc3MtbmFtZSc6IHtcbiAgICAgIHBhdHRlcm46IC8oOlxccyopKD86XFx3K3xgKD86W15gXFxcXFxcclxcbl0pKmApKD89XFxzKlt7KTpdKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICByZWxhdGlvbnNoaXA6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oLVxcW1xccyooPzpcXHcrXFxzKnxgKD86W15gXFxcXFxcclxcbl0pKmBcXHMqKT86XFxzKnxcXHxcXHMqOlxccyopKD86XFx3K3xgKD86W15gXFxcXFxcclxcbl0pKmApLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBhbGlhczogJ3Byb3BlcnR5J1xuICAgIH0sXG4gICAgaWRlbnRpZmllcjoge1xuICAgICAgcGF0dGVybjogL2AoPzpbXmBcXFxcXFxyXFxuXSkqYC8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHZhcmlhYmxlOiAvXFwkXFx3Ky8sXG4gICAgLy8gaHR0cHM6Ly9uZW80ai5jb20vZG9jcy9jeXBoZXItbWFudWFsL2N1cnJlbnQvc3ludGF4L3Jlc2VydmVkL1xuICAgIGtleXdvcmQ6XG4gICAgICAvXFxiKD86QUREfEFMTHxBTkR8QVN8QVNDfEFTQ0VORElOR3xBU1NFUlR8Qll8Q0FMTHxDQVNFfENPTU1JVHxDT05TVFJBSU5UfENPTlRBSU5TfENSRUFURXxDU1Z8REVMRVRFfERFU0N8REVTQ0VORElOR3xERVRBQ0h8RElTVElOQ1R8RE98RFJPUHxFTFNFfEVORHxFTkRTfEVYSVNUU3xGT1J8Rk9SRUFDSHxJTnxJTkRFWHxJU3xKT0lOfEtFWXxMSU1JVHxMT0FEfE1BTkRBVE9SWXxNQVRDSHxNRVJHRXxOT0RFfE5PVHxPRnxPTnxPUFRJT05BTHxPUnxPUkRFUig/PVxccytCWSl8UEVSSU9ESUN8UkVNT1ZFfFJFUVVJUkV8UkVUVVJOfFNDQUxBUnxTQ0FOfFNFVHxTS0lQfFNUQVJUfFNUQVJUU3xUSEVOfFVOSU9OfFVOSVFVRXxVTldJTkR8VVNJTkd8V0hFTnxXSEVSRXxXSVRIfFhPUnxZSUVMRClcXGIvaSxcbiAgICBmdW5jdGlvbjogL1xcYlxcdytcXGIoPz1cXHMqXFwoKS8sXG4gICAgYm9vbGVhbjogL1xcYig/OmZhbHNlfG51bGx8dHJ1ZSlcXGIvaSxcbiAgICBudW1iZXI6IC9cXGIoPzoweFtcXGRhLWZBLUZdK3xcXGQrKD86XFwuXFxkKyk/KD86W2VFXVsrLV0/XFxkKyk/KVxcYi8sXG4gICAgLy8gaHR0cHM6Ly9uZW80ai5jb20vZG9jcy9jeXBoZXItbWFudWFsL2N1cnJlbnQvc3ludGF4L29wZXJhdG9ycy9cbiAgICBvcGVyYXRvcjogLzp8PC0tP3wtLT8+P3w8Pnw9fj98Wzw+XT0/fFsrKi8lXnxdfFxcLlxcLlxcLj8vLFxuICAgIHB1bmN0dWF0aW9uOiAvWygpW1xcXXt9LDsuXS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZFxuZC5kaXNwbGF5TmFtZSA9ICdkJ1xuZC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGQoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmQgPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdjbGlrZScsIHtcbiAgICBjb21tZW50OiBbXG4gICAgICB7XG4gICAgICAgIC8vIFNoZWJhbmdcbiAgICAgICAgcGF0dGVybjogL15cXHMqIyEuKy8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogUmVnRXhwKFxuICAgICAgICAgIC8oXnxbXlxcXFxdKS8uc291cmNlICtcbiAgICAgICAgICAgICcoPzonICtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgLy8gLysgY29tbWVudCArL1xuICAgICAgICAgICAgICAvLyBBbGxvdyBvbmUgbGV2ZWwgb2YgbmVzdGluZ1xuICAgICAgICAgICAgICAvXFwvXFwrKD86XFwvXFwrKD86W14rXXxcXCsoPyFcXC8pKSpcXCtcXC98KD8hXFwvXFwrKVtcXHNcXFNdKSo/XFwrXFwvLy5zb3VyY2UsIC8vIC8vIGNvbW1lbnRcbiAgICAgICAgICAgICAgL1xcL1xcLy4qLy5zb3VyY2UsIC8vIC8qIGNvbW1lbnQgKi9cbiAgICAgICAgICAgICAgL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vLnNvdXJjZVxuICAgICAgICAgICAgXS5qb2luKCd8JykgK1xuICAgICAgICAgICAgJyknXG4gICAgICAgICksXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgc3RyaW5nOiBbXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IFJlZ0V4cChcbiAgICAgICAgICBbXG4gICAgICAgICAgICAvLyByXCJcIiwgeFwiXCJcbiAgICAgICAgICAgIC9cXGJbcnhdXCIoPzpcXFxcW1xcc1xcU118W15cXFxcXCJdKSpcIltjd2RdPy8uc291cmNlLCAvLyBxXCJbXVwiLCBxXCIoKVwiLCBxXCI8PlwiLCBxXCJ7fVwiXG4gICAgICAgICAgICAvXFxicVwiKD86XFxbW1xcc1xcU10qP1xcXXxcXChbXFxzXFxTXSo/XFwpfDxbXFxzXFxTXSo/PnxcXHtbXFxzXFxTXSo/XFx9KVwiLy5zb3VyY2UsIC8vIHFcIklERU5UXG4gICAgICAgICAgICAvLyAuLi5cbiAgICAgICAgICAgIC8vIElERU5UXCJcbiAgICAgICAgICAgIC9cXGJxXCIoKD8hXFxkKVxcdyspJFtcXHNcXFNdKj9eXFwxXCIvLnNvdXJjZSwgLy8gcVwiLy9cIiwgcVwifHxcIiwgZXRjLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9zdHJpY3RcbiAgICAgICAgICAgIC9cXGJxXCIoLilbXFxzXFxTXSo/XFwyXCIvLnNvdXJjZSwgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9zdHJpY3RcbiAgICAgICAgICAgIC8oW1wiYF0pKD86XFxcXFtcXHNcXFNdfCg/IVxcMylbXlxcXFxdKSpcXDNbY3dkXT8vLnNvdXJjZVxuICAgICAgICAgIF0uam9pbignfCcpLFxuICAgICAgICAgICdtJ1xuICAgICAgICApLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC9cXGJxXFx7KD86XFx7W157fV0qXFx9fFtee31dKSpcXH0vLFxuICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgIGFsaWFzOiAndG9rZW4tc3RyaW5nJ1xuICAgICAgfVxuICAgIF0sXG4gICAgLy8gSW4gb3JkZXI6ICQsIGtleXdvcmRzIGFuZCBzcGVjaWFsIHRva2VucywgZ2xvYmFsbHkgZGVmaW5lZCBzeW1ib2xzXG4gICAga2V5d29yZDpcbiAgICAgIC9cXCR8XFxiKD86X18oPzooPzpEQVRFfEVPRnxGSUxFfEZVTkNUSU9OfExJTkV8TU9EVUxFfFBSRVRUWV9GVU5DVElPTnxUSU1FU1RBTVB8VElNRXxWRU5ET1J8VkVSU0lPTilfX3xnc2hhcmVkfHBhcmFtZXRlcnN8dHJhaXRzfHZlY3Rvcil8YWJzdHJhY3R8YWxpYXN8YWxpZ258YXNtfGFzc2VydHxhdXRvfGJvZHl8Ym9vbHxicmVha3xieXRlfGNhc2V8Y2FzdHxjYXRjaHxjZG91YmxlfGNlbnR8Y2Zsb2F0fGNoYXJ8Y2xhc3N8Y29uc3R8Y29udGludWV8Y3JlYWx8ZGNoYXJ8ZGVidWd8ZGVmYXVsdHxkZWxlZ2F0ZXxkZWxldGV8ZGVwcmVjYXRlZHxkb3xkb3VibGV8ZHN0cmluZ3xlbHNlfGVudW18ZXhwb3J0fGV4dGVybnxmYWxzZXxmaW5hbHxmaW5hbGx5fGZsb2F0fGZvcnxmb3JlYWNofGZvcmVhY2hfcmV2ZXJzZXxmdW5jdGlvbnxnb3RvfGlkb3VibGV8aWZ8aWZsb2F0fGltbXV0YWJsZXxpbXBvcnR8aW5vdXR8aW50fGludGVyZmFjZXxpbnZhcmlhbnR8aXJlYWx8bGF6eXxsb25nfG1hY3JvfG1peGlufG1vZHVsZXxuZXd8bm90aHJvd3xudWxsfG91dHxvdmVycmlkZXxwYWNrYWdlfHByYWdtYXxwcml2YXRlfHByb3RlY3RlZHxwdHJkaWZmX3R8cHVibGljfHB1cmV8cmVhbHxyZWZ8cmV0dXJufHNjb3BlfHNoYXJlZHxzaG9ydHxzaXplX3R8c3RhdGljfHN0cmluZ3xzdHJ1Y3R8c3VwZXJ8c3dpdGNofHN5bmNocm9uaXplZHx0ZW1wbGF0ZXx0aGlzfHRocm93fHRydWV8dHJ5fHR5cGVkZWZ8dHlwZWlkfHR5cGVvZnx1Ynl0ZXx1Y2VudHx1aW50fHVsb25nfHVuaW9ufHVuaXR0ZXN0fHVzaG9ydHx2ZXJzaW9ufHZvaWR8dm9sYXRpbGV8d2NoYXJ8d2hpbGV8d2l0aHx3c3RyaW5nKVxcYi8sXG4gICAgbnVtYmVyOiBbXG4gICAgICAvLyBUaGUgbG9va2JlaGluZCBhbmQgdGhlIG5lZ2F0aXZlIGxvb2stYWhlYWQgdHJ5IHRvIHByZXZlbnQgYmFkIGhpZ2hsaWdodGluZyBvZiB0aGUgLi4gb3BlcmF0b3JcbiAgICAgIC8vIEhleGFkZWNpbWFsIG51bWJlcnMgbXVzdCBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBleHBvbmVudCBcImVcIlxuICAgICAgL1xcYjB4XFwuP1thLWZcXGRfXSsoPzooPyFcXC5cXC4pXFwuW2EtZlxcZF9dKik/KD86cFsrLV0/W2EtZlxcZF9dKyk/W3VsZmldezAsNH0vaSxcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvKCg/OlxcLlxcLik/KSg/OlxcYjBiXFwuP3xcXGJ8XFwuKVxcZFtcXGRfXSooPzooPyFcXC5cXC4pXFwuW1xcZF9dKik/KD86ZVsrLV0/XFxkW1xcZF9dKik/W3VsZmldezAsNH0vaSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfVxuICAgIF0sXG4gICAgb3BlcmF0b3I6XG4gICAgICAvXFx8W3w9XT98JlsmPV0/fFxcK1srPV0/fC1bLT1dP3xcXC4/XFwuXFwufD1bPj1dP3whKD86aVtuc11cXGJ8PD4/PT98Pj0/fD0pP3xcXGJpW25zXVxcYnwoPzo8Wzw+XT98Pj4/Pj98XFxeXFxefFsqXFwvJV5+XSk9Py9cbiAgfSlcbiAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnZCcsICdzdHJpbmcnLCB7XG4gICAgLy8gQ2hhcmFjdGVyc1xuICAgIC8vICdhJywgJ1xcXFwnLCAnXFxuJywgJ1xceEZGJywgJ1xcMzc3JywgJ1xcdUZGRkYnLCAnXFxVMDAxMEZGRkYnLCAnXFxxdW90J1xuICAgIGNoYXI6IC8nKD86XFxcXCg/OlxcV3xcXHcrKXxbXlxcXFxdKScvXG4gIH0pXG4gIFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoJ2QnLCAna2V5d29yZCcsIHtcbiAgICBwcm9wZXJ0eTogL1xcQkBcXHcqL1xuICB9KVxuICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdkJywgJ2Z1bmN0aW9uJywge1xuICAgIHJlZ2lzdGVyOiB7XG4gICAgICAvLyBJYXNtIHJlZ2lzdGVyc1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgL1xcYig/OltBQkNEXVtMSFhdfEU/KD86QlB8REl8U0l8U1ApfFtCU11QTHxbRUNTREdGXVN8Q1JbMDIzNF18W0RTXUlMfERSWzAxMjM2N118RVtBQkNEXVh8WD9NTVswLTddfFIoPzoxWzAtNV18Wzg5XSlbQldEXT98UltBQkNEXVh8UltCU11QfFJbRFNdSXxUUlszLTddfFhNTSg/OjFbMC01XXxbODldKXxZTU0oPzoxWzAtNV18XFxkKSlcXGJ8XFxiU1QoPzpcXChbMC03XVxcKXxcXGIpLyxcbiAgICAgIGFsaWFzOiAndmFyaWFibGUnXG4gICAgfVxuICB9KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZGFydFxuZGFydC5kaXNwbGF5TmFtZSA9ICdkYXJ0J1xuZGFydC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGRhcnQoUHJpc20pIHtcbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICB2YXIga2V5d29yZHMgPSBbXG4gICAgICAvXFxiKD86YXN5bmN8c3luY3x5aWVsZClcXCovLFxuICAgICAgL1xcYig/OmFic3RyYWN0fGFzc2VydHxhc3luY3xhd2FpdHxicmVha3xjYXNlfGNhdGNofGNsYXNzfGNvbnN0fGNvbnRpbnVlfGNvdmFyaWFudHxkZWZhdWx0fGRlZmVycmVkfGRvfGR5bmFtaWN8ZWxzZXxlbnVtfGV4cG9ydHxleHRlbmRzfGV4dGVuc2lvbnxleHRlcm5hbHxmYWN0b3J5fGZpbmFsfGZpbmFsbHl8Zm9yfGdldHxoaWRlfGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGludGVyZmFjZXxsaWJyYXJ5fG1peGlufG5ld3xudWxsfG9ufG9wZXJhdG9yfHBhcnR8cmV0aHJvd3xyZXR1cm58c2V0fHNob3d8c3RhdGljfHN1cGVyfHN3aXRjaHxzeW5jfHRoaXN8dGhyb3d8dHJ5fHR5cGVkZWZ8dmFyfHZvaWR8d2hpbGV8d2l0aHx5aWVsZClcXGIvXG4gICAgXSAvLyBIYW5kbGVzIG5hbWVkIGltcG9ydHMsIHN1Y2ggYXMgaHR0cC5DbGllbnRcbiAgICB2YXIgcGFja2FnZVByZWZpeCA9IC8oXnxbXlxcdy5dKSg/OlthLXpdXFx3KlxccypcXC5cXHMqKSooPzpbQS1aXVxcdypcXHMqXFwuXFxzKikqL1xuICAgICAgLnNvdXJjZSAvLyBiYXNlZCBvbiB0aGUgZGFydCBuYW1pbmcgY29udmVudGlvbnNcbiAgICB2YXIgY2xhc3NOYW1lID0ge1xuICAgICAgcGF0dGVybjogUmVnRXhwKHBhY2thZ2VQcmVmaXggKyAvW0EtWl0oPzpbXFxkX0EtWl0qW2Etel1cXHcqKT9cXGIvLnNvdXJjZSksXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIG5hbWVzcGFjZToge1xuICAgICAgICAgIHBhdHRlcm46IC9eW2Etel1cXHcqKD86XFxzKlxcLlxccypbYS16XVxcdyopKig/OlxccypcXC4pPy8sXG4gICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICBwdW5jdHVhdGlvbjogL1xcLi9cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgUHJpc20ubGFuZ3VhZ2VzLmRhcnQgPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdjbGlrZScsIHtcbiAgICAgICdjbGFzcy1uYW1lJzogW1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICAvLyB2YXJpYWJsZXMgYW5kIHBhcmFtZXRlcnNcbiAgICAgICAgICAvLyB0aGlzIHRvIHN1cHBvcnQgY2xhc3MgbmFtZXMgKG9yIGdlbmVyaWMgcGFyYW1ldGVycykgd2hpY2ggZG8gbm90IGNvbnRhaW4gYSBsb3dlciBjYXNlIGxldHRlciAoYWxzbyB3b3JrcyBmb3IgbWV0aG9kcylcbiAgICAgICAgICBwYXR0ZXJuOiBSZWdFeHAoXG4gICAgICAgICAgICBwYWNrYWdlUHJlZml4ICsgL1tBLVpdXFx3Kig/PVxccytcXHcrXFxzKls7LD0oKV0pLy5zb3VyY2VcbiAgICAgICAgICApLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgaW5zaWRlOiBjbGFzc05hbWUuaW5zaWRlXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBrZXl3b3JkOiBrZXl3b3JkcyxcbiAgICAgIG9wZXJhdG9yOlxuICAgICAgICAvXFxiaXMhfFxcYig/OmFzfGlzKVxcYnxcXCtcXCt8LS18JiZ8XFx8XFx8fDw8PT98Pj49P3x+KD86XFwvPT8pP3xbK1xcLSpcXC8lJl58PSE8Pl09P3xcXD8vXG4gICAgfSlcbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdkYXJ0JywgJ3N0cmluZycsIHtcbiAgICAgICdzdHJpbmctbGl0ZXJhbCc6IHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvcj8oPzooXCJcIlwifCcnJylbXFxzXFxTXSo/XFwxfChbXCInXSkoPzpcXFxcLnwoPyFcXDIpW15cXFxcXFxyXFxuXSkqXFwyKD8hXFwyKSkvLFxuICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgICAgIC8oKD86XnxbXlxcXFxdKSg/OlxcXFx7Mn0pKilcXCQoPzpcXHcrfFxceyg/Oltee31dfFxce1tee31dKlxcfSkqXFx9KS8sXG4gICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvXlxcJFxcez98XFx9JC8sXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAvW1xcc1xcU10rLyxcbiAgICAgICAgICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5kYXJ0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmluZzogL1tcXHNcXFNdKy9cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHN0cmluZzogdW5kZWZpbmVkXG4gICAgfSlcbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdkYXJ0JywgJ2NsYXNzLW5hbWUnLCB7XG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwYXR0ZXJuOiAvQFxcdysvLFxuICAgICAgICBhbGlhczogJ2Z1bmN0aW9uJ1xuICAgICAgfVxuICAgIH0pXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnZGFydCcsICdjbGFzcy1uYW1lJywge1xuICAgICAgZ2VuZXJpY3M6IHtcbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvPCg/OltcXHdcXHMsLiY/XXw8KD86W1xcd1xccywuJj9dfDwoPzpbXFx3XFxzLC4mP118PFtcXHdcXHMsLiY/XSo+KSo+KSo+KSo+LyxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgJ2NsYXNzLW5hbWUnOiBjbGFzc05hbWUsXG4gICAgICAgICAga2V5d29yZDoga2V5d29yZHMsXG4gICAgICAgICAgcHVuY3R1YXRpb246IC9bPD4oKSwuOl0vLFxuICAgICAgICAgIG9wZXJhdG9yOiAvWz8mfF0vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRhdGF3ZWF2ZVxuZGF0YXdlYXZlLmRpc3BsYXlOYW1lID0gJ2RhdGF3ZWF2ZSdcbmRhdGF3ZWF2ZS5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGRhdGF3ZWF2ZShQcmlzbSkge1xuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIFByaXNtLmxhbmd1YWdlcy5kYXRhd2VhdmUgPSB7XG4gICAgICB1cmw6IC9cXGJbQS1aYS16XSs6XFwvXFwvW1xcdy86Lj89Ji1dK3xcXGJ1cm46W1xcdzouPz0mLV0rLyxcbiAgICAgIHByb3BlcnR5OiB7XG4gICAgICAgIHBhdHRlcm46IC8oPzpcXGJcXHcrIyk/KD86XCIoPzpcXFxcLnxbXlxcXFxcIlxcclxcbl0pKlwifFxcYlxcdyspKD89XFxzKls6QF0pLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9LFxuICAgICAgc3RyaW5nOiB7XG4gICAgICAgIHBhdHRlcm46IC8oW1wiJ2BdKSg/OlxcXFxbXFxzXFxTXXwoPyFcXDEpW15cXFxcXSkqXFwxLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9LFxuICAgICAgJ21pbWUtdHlwZSc6XG4gICAgICAgIC9cXGIoPzphcHBsaWNhdGlvbnxhdWRpb3xpbWFnZXxtdWx0aXBhcnR8dGV4dHx2aWRlbylcXC9bXFx3Ky1dKy8sXG4gICAgICBkYXRlOiB7XG4gICAgICAgIHBhdHRlcm46IC9cXHxbXFx3OistXStcXHwvLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH0sXG4gICAgICBjb21tZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXR0ZXJuOiAvKF58W15cXFxcXSlcXC9cXCpbXFxzXFxTXSo/KD86XFwqXFwvfCQpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjogLyhefFteXFxcXDpdKVxcL1xcLy4qLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgcmVnZXg6IHtcbiAgICAgICAgcGF0dGVybjogL1xcLyg/OlteXFxcXFxcL1xcclxcbl18XFxcXFteXFxyXFxuXSkrXFwvLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9LFxuICAgICAga2V5d29yZDpcbiAgICAgICAgL1xcYig/OmFuZHxhc3xhdHxjYXNlfGRvfGVsc2V8ZnVufGlmfGlucHV0fGlzfG1hdGNofG5vdHxuc3xudWxsfG9yfG91dHB1dHx0eXBlfHVubGVzc3x1cGRhdGV8dXNpbmd8dmFyKVxcYi8sXG4gICAgICBmdW5jdGlvbjogL1xcYltBLVpfXVxcdyooPz1cXHMqXFwoKS9pLFxuICAgICAgbnVtYmVyOiAvLT9cXGJcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/XFxiL2ksXG4gICAgICBwdW5jdHVhdGlvbjogL1t7fVtcXF07KCksLjpAXS8sXG4gICAgICBvcGVyYXRvcjogLzw8fD4+fC0+fFs8Pn49XT0/fCE9fC0tPy0/fFxcK1xcKz98IXxcXD8vLFxuICAgICAgYm9vbGVhbjogL1xcYig/OmZhbHNlfHRydWUpXFxiL1xuICAgIH1cbiAgfSkoUHJpc20pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBkYXhcbmRheC5kaXNwbGF5TmFtZSA9ICdkYXgnXG5kYXguYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBkYXgoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmRheCA9IHtcbiAgICBjb21tZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvKF58W15cXFxcXSkoPzpcXC9cXCpbXFxzXFxTXSo/XFwqXFwvfCg/Oi0tfFxcL1xcLykuKikvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgIH0sXG4gICAgJ2RhdGEtZmllbGQnOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvJyg/OlteJ118JycpKicoPyEnKSg/OlxcW1sgXFx3XFx4QTAtXFx1RkZGRl0rXFxdKT98XFx3K1xcW1sgXFx3XFx4QTAtXFx1RkZGRl0rXFxdLyxcbiAgICAgIGFsaWFzOiAnc3ltYm9sJ1xuICAgIH0sXG4gICAgbWVhc3VyZToge1xuICAgICAgcGF0dGVybjogL1xcW1sgXFx3XFx4QTAtXFx1RkZGRl0rXFxdLyxcbiAgICAgIGFsaWFzOiAnY29uc3RhbnQnXG4gICAgfSxcbiAgICBzdHJpbmc6IHtcbiAgICAgIHBhdHRlcm46IC9cIig/OlteXCJdfFwiXCIpKlwiKD8hXCIpLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgZnVuY3Rpb246XG4gICAgICAvXFxiKD86QUJTfEFDT1N8QUNPU0h8QUNPVHxBQ09USHxBRERDT0xVTU5TfEFERE1JU1NJTkdJVEVNU3xBTEx8QUxMQ1JPU1NGSUxURVJFRHxBTExFWENFUFR8QUxMTk9CTEFOS1JPV3xBTExTRUxFQ1RFRHxBTkR8QVBQUk9YSU1BVEVESVNUSU5DVENPVU5UfEFTSU58QVNJTkh8QVRBTnxBVEFOSHxBVkVSQUdFfEFWRVJBR0VBfEFWRVJBR0VYfEJFVEFcXC5ESVNUfEJFVEFcXC5JTlZ8QkxBTkt8Q0FMQ1VMQVRFfENBTENVTEFURVRBQkxFfENBTEVOREFSfENBTEVOREFSQVVUT3xDRUlMSU5HfENISVNRXFwuRElTVHxDSElTUVxcLkRJU1RcXC5SVHxDSElTUVxcLklOVnxDSElTUVxcLklOVlxcLlJUfENMT1NJTkdCQUxBTkNFTU9OVEh8Q0xPU0lOR0JBTEFOQ0VRVUFSVEVSfENMT1NJTkdCQUxBTkNFWUVBUnxDT0FMRVNDRXxDT01CSU58Q09NQklOQXxDT01CSU5FVkFMVUVTfENPTkNBVEVOQVRFfENPTkNBVEVOQVRFWHxDT05GSURFTkNFXFwuTk9STXxDT05GSURFTkNFXFwuVHxDT05UQUlOU3xDT05UQUlOU1JPV3xDT05UQUlOU1NUUklOR3xDT05UQUlOU1NUUklOR0VYQUNUfENPTlZFUlR8Q09TfENPU0h8Q09UfENPVEh8Q09VTlR8Q09VTlRBfENPVU5UQVh8Q09VTlRCTEFOS3xDT1VOVFJPV1N8Q09VTlRYfENST1NTRklMVEVSfENST1NTSk9JTnxDVVJSRU5DWXxDVVJSRU5UR1JPVVB8Q1VTVE9NREFUQXxEQVRBVEFCTEV8REFURXxEQVRFQUREfERBVEVESUZGfERBVEVTQkVUV0VFTnxEQVRFU0lOUEVSSU9EfERBVEVTTVREfERBVEVTUVREfERBVEVTWVREfERBVEVWQUxVRXxEQVl8REVHUkVFU3xERVRBSUxST1dTfERJU1RJTkNUfERJU1RJTkNUQ09VTlR8RElTVElOQ1RDT1VOVE5PQkxBTkt8RElWSURFfEVBUkxJRVJ8RUFSTElFU1R8RURBVEV8RU5ET0ZNT05USHxFTkRPRlFVQVJURVJ8RU5ET0ZZRUFSfEVPTU9OVEh8RVJST1J8RVZFTnxFWEFDVHxFWENFUFR8RVhQfEVYUE9OXFwuRElTVHxGQUNUfEZBTFNFfEZJTFRFUnxGSUxURVJTfEZJTkR8RklSU1REQVRFfEZJUlNUTk9OQkxBTkt8RklSU1ROT05CTEFOS1ZBTFVFfEZJWEVEfEZMT09SfEZPUk1BVHxHQ0R8R0VORVJBVEV8R0VORVJBVEVBTEx8R0VORVJBVEVTRVJJRVN8R0VPTUVBTnxHRU9NRUFOWHxHUk9VUEJZfEhBU09ORUZJTFRFUnxIQVNPTkVWQUxVRXxIT1VSfElGfElGXFwuRUFHRVJ8SUZFUlJPUnxJR05PUkV8SU5UfElOVEVSU0VDVHxJU0JMQU5LfElTQ1JPU1NGSUxURVJFRHxJU0VNUFRZfElTRVJST1J8SVNFVkVOfElTRklMVEVSRUR8SVNJTlNDT1BFfElTTE9HSUNBTHxJU05PTlRFWFR8SVNOVU1CRVJ8SVNPXFwuQ0VJTElOR3xJU09ERHxJU09OT1JBRlRFUnxJU1NFTEVDVEVETUVBU1VSRXxJU1NVQlRPVEFMfElTVEVYVHxLRUVQRklMVEVSU3xLRVlXT1JETUFUQ0h8TEFTVERBVEV8TEFTVE5PTkJMQU5LfExBU1ROT05CTEFOS1ZBTFVFfExDTXxMRUZUfExFTnxMTnxMT0d8TE9HMTB8TE9PS1VQVkFMVUV8TE9XRVJ8TUFYfE1BWEF8TUFYWHxNRURJQU58TUVESUFOWHxNSUR8TUlOfE1JTkF8TUlOVVRFfE1JTlh8TU9EfE1PTlRIfE1ST1VORHxOQVRVUkFMSU5ORVJKT0lOfE5BVFVSQUxMRUZUT1VURVJKT0lOfE5FWFREQVl8TkVYVE1PTlRIfE5FWFRRVUFSVEVSfE5FWFRZRUFSfE5PTlZJU1VBTHxOT1JNXFwuRElTVHxOT1JNXFwuSU5WfE5PUk1cXC5TXFwuRElTVHxOT1JNXFwuU1xcLklOVnxOT1R8Tk9XfE9ERHxPUEVOSU5HQkFMQU5DRU1PTlRIfE9QRU5JTkdCQUxBTkNFUVVBUlRFUnxPUEVOSU5HQkFMQU5DRVlFQVJ8T1J8UEFSQUxMRUxQRVJJT0R8UEFUSHxQQVRIQ09OVEFJTlN8UEFUSElURU18UEFUSElURU1SRVZFUlNFfFBBVEhMRU5HVEh8UEVSQ0VOVElMRVxcLkVYQ3xQRVJDRU5USUxFXFwuSU5DfFBFUkNFTlRJTEVYXFwuRVhDfFBFUkNFTlRJTEVYXFwuSU5DfFBFUk1VVHxQSXxQT0lTU09OXFwuRElTVHxQT1dFUnxQUkVWSU9VU0RBWXxQUkVWSU9VU01PTlRIfFBSRVZJT1VTUVVBUlRFUnxQUkVWSU9VU1lFQVJ8UFJPRFVDVHxQUk9EVUNUWHxRVUFSVEVSfFFVT1RJRU5UfFJBRElBTlN8UkFORHxSQU5EQkVUV0VFTnxSQU5LXFwuRVF8UkFOS1h8UkVMQVRFRHxSRUxBVEVEVEFCTEV8UkVNT1ZFRklMVEVSU3xSRVBMQUNFfFJFUFR8UklHSFR8Uk9MTFVQfFJPTExVUEFERElTU1VCVE9UQUx8Uk9MTFVQR1JPVVB8Uk9MTFVQSVNTVUJUT1RBTHxST1VORHxST1VORERPV058Uk9VTkRVUHxST1d8U0FNRVBFUklPRExBU1RZRUFSfFNBTVBMRXxTRUFSQ0h8U0VDT05EfFNFTEVDVENPTFVNTlN8U0VMRUNURURNRUFTVVJFfFNFTEVDVEVETUVBU1VSRUZPUk1BVFNUUklOR3xTRUxFQ1RFRE1FQVNVUkVOQU1FfFNFTEVDVEVEVkFMVUV8U0lHTnxTSU58U0lOSHxTUVJUfFNRUlRQSXxTVEFSVE9GTU9OVEh8U1RBUlRPRlFVQVJURVJ8U1RBUlRPRllFQVJ8U1RERVZcXC5QfFNUREVWXFwuU3xTVERFVlhcXC5QfFNUREVWWFxcLlN8U1VCU1RJVFVURXxTVUJTVElUVVRFV0lUSElOREVYfFNVTXxTVU1NQVJJWkV8U1VNTUFSSVpFQ09MVU1OU3xTVU1YfFNXSVRDSHxUXFwuRElTVHxUXFwuRElTVFxcLjJUfFRcXC5ESVNUXFwuUlR8VFxcLklOVnxUXFwuSU5WXFwuMlR8VEFOfFRBTkh8VElNRXxUSU1FVkFMVUV8VE9EQVl8VE9QTnxUT1BOUEVSTEVWRUx8VE9QTlNLSVB8VE9UQUxNVER8VE9UQUxRVER8VE9UQUxZVER8VFJFQVRBU3xUUklNfFRSVUV8VFJVTkN8VU5JQ0hBUnxVTklDT0RFfFVOSU9OfFVQUEVSfFVTRVJFTEFUSU9OU0hJUHxVU0VSTkFNRXxVU0VST0JKRUNUSUR8VVNFUlBSSU5DSVBBTE5BTUV8VVRDTk9XfFVUQ1RPREFZfFZBTFVFfFZBTFVFU3xWQVJcXC5QfFZBUlxcLlN8VkFSWFxcLlB8VkFSWFxcLlN8V0VFS0RBWXxXRUVLTlVNfFhJUlJ8WE5QVnxZRUFSfFlFQVJGUkFDKSg/PVxccypcXCgpL2ksXG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzpERUZJTkV8RVZBTFVBVEV8TUVBU1VSRXxPUkRFUlxccytCWXxSRVRVUk58VkFSfFNUQVJUXFxzK0FUfEFTQ3xERVNDKVxcYi9pLFxuICAgIGJvb2xlYW46IHtcbiAgICAgIHBhdHRlcm46IC9cXGIoPzpGQUxTRXxOVUxMfFRSVUUpXFxiL2ksXG4gICAgICBhbGlhczogJ2NvbnN0YW50J1xuICAgIH0sXG4gICAgbnVtYmVyOiAvXFxiXFxkKyg/OlxcLlxcZCopP3xcXEJcXC5cXGQrXFxiLyxcbiAgICBvcGVyYXRvcjogLzo9fFstKypcXC89Xl18JiY/fFxcfFxcfHw8KD86PT4/fDx8Pik/fD5bPj1dP3xcXGIoPzpJTnxOT1QpXFxiL2ksXG4gICAgcHVuY3R1YXRpb246IC9bO1xcW1xcXSgpe31gLC5dL1xuICB9XG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBkaGFsbFxuZGhhbGwuZGlzcGxheU5hbWUgPSAnZGhhbGwnXG5kaGFsbC5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGRoYWxsKFByaXNtKSB7XG4gIC8vIEFCTkYgZ3JhbW1hcjpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RoYWxsLWxhbmcvZGhhbGwtbGFuZy9ibG9iL21hc3Rlci9zdGFuZGFyZC9kaGFsbC5hYm5mXG4gIFByaXNtLmxhbmd1YWdlcy5kaGFsbCA9IHtcbiAgICAvLyBNdWx0aS1saW5lIGNvbW1lbnRzIGNhbiBiZSBuZXN0ZWQuIEUuZy4gey0gZm9vIHstIGJhciAtfSAtfVxuICAgIC8vIFRoZSBtdWx0aS1saW5lIHBhdHRlcm4gaXMgZXNzZW50aWFsbHkgdGhpczpcbiAgICAvLyAgIFxcey0oPzpbXi17XXwtKD8hXFx9KXxcXHsoPyEtKXw8U0VMRj4pKi1cXH1cbiAgICBjb21tZW50OlxuICAgICAgLy0tLip8XFx7LSg/OlteLXtdfC0oPyFcXH0pfFxceyg/IS0pfFxcey0oPzpbXi17XXwtKD8hXFx9KXxcXHsoPyEtKSkqLVxcfSkqLVxcfS8sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvXCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifCcnKD86W14nXXwnKD8hJyl8JycnfCcnXFwkXFx7KSonJyg/ISd8XFwkKS8sXG4gICAgICBncmVlZHk6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgICAgIHBhdHRlcm46IC9cXCRcXHtbXnt9XSpcXH0vLFxuICAgICAgICAgIGluc2lkZToge1xuICAgICAgICAgICAgZXhwcmVzc2lvbjoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF5cXCRcXHspW1xcc1xcU10rKD89XFx9JCkvLFxuICAgICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgICAgICBhbGlhczogJ2xhbmd1YWdlLWRoYWxsJyxcbiAgICAgICAgICAgICAgaW5zaWRlOiBudWxsIC8vIHNlZSBibG93XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHVuY3R1YXRpb246IC9cXCRcXHt8XFx9L1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIHBhdHRlcm46IC9gW15gXSpgLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgdXJsOiB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGhhbGwtbGFuZy9kaGFsbC1sYW5nL2Jsb2IvNWZkZThlZjFiZWFkNmZiNGU5OTlkM2MxZmZlNzA0NGNkMDE5ZDYzYS9zdGFuZGFyZC9kaGFsbC5hYm5mI0w1OTZcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9cXGJodHRwcz86XFwvXFwvW1xcdy46JSEkJicqKzs9QH4tXSsoPzpcXC9bXFx3LjolISQmJyorOz1Afi1dKikqKD86XFw/Wy8/XFx3LjolISQmJyorOz1Afi1dKik/LyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgZW52OiB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGhhbGwtbGFuZy9kaGFsbC1sYW5nL2Jsb2IvNWZkZThlZjFiZWFkNmZiNGU5OTlkM2MxZmZlNzA0NGNkMDE5ZDYzYS9zdGFuZGFyZC9kaGFsbC5hYm5mI0w2NjFcbiAgICAgIHBhdHRlcm46IC9cXGJlbnY6KD86KD8hXFxkKVxcdyt8XCIoPzpbXlwiXFxcXD1dfFxcXFwuKSpcIikvLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIGZ1bmN0aW9uOiAvXmVudi8sXG4gICAgICAgIG9wZXJhdG9yOiAvXjovLFxuICAgICAgICB2YXJpYWJsZTogL1tcXHNcXFNdKy9cbiAgICAgIH1cbiAgICB9LFxuICAgIGhhc2g6IHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGFsbC1sYW5nL2RoYWxsLWxhbmcvYmxvYi81ZmRlOGVmMWJlYWQ2ZmI0ZTk5OWQzYzFmZmU3MDQ0Y2QwMTlkNjNhL3N0YW5kYXJkL2RoYWxsLmFibmYjTDcyNVxuICAgICAgcGF0dGVybjogL1xcYnNoYTI1NjpbXFxkYS1mQS1GXXs2NH1cXGIvLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIGZ1bmN0aW9uOiAvc2hhMjU2LyxcbiAgICAgICAgb3BlcmF0b3I6IC86LyxcbiAgICAgICAgbnVtYmVyOiAvW1xcZGEtZkEtRl17NjR9L1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RoYWxsLWxhbmcvZGhhbGwtbGFuZy9ibG9iLzVmZGU4ZWYxYmVhZDZmYjRlOTk5ZDNjMWZmZTcwNDRjZDAxOWQ2M2Evc3RhbmRhcmQvZGhhbGwuYWJuZiNMMzU5XG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzphc3xhc3NlcnR8ZWxzZXxmb3JhbGx8aWZ8aW58bGV0fG1lcmdlfG1pc3Npbmd8dGhlbnx0b01hcHx1c2luZ3x3aXRoKVxcYnxcXHUyMjAwLyxcbiAgICBidWlsdGluOiAvXFxiKD86Tm9uZXxTb21lKVxcYi8sXG4gICAgYm9vbGVhbjogL1xcYig/OkZhbHNlfFRydWUpXFxiLyxcbiAgICBudW1iZXI6XG4gICAgICAvXFxiTmFOXFxifC0/XFxiSW5maW5pdHlcXGJ8WystXT9cXGIoPzoweFtcXGRhLWZBLUZdK3xcXGQrKD86XFwuXFxkKyk/KD86ZVsrLV0/XFxkKyk/KVxcYi8sXG4gICAgb3BlcmF0b3I6XG4gICAgICAvXFwvXFxcXHxcXC9cXC9cXFxcXFxcXHwmJnxcXHxcXHx8PT09fFshPV09fFxcL1xcL3wtPnxcXCtcXCt8Ojp8WysqI0A9Oj88PnxcXFxcXFx1MjIyN1xcdTJhNTNcXHUyMjYxXFx1MmFmZFxcdTAzYmJcXHUyMTkyXS8sXG4gICAgcHVuY3R1YXRpb246IC9cXC5cXC58W3t9XFxbXFxdKCksLi9dLyxcbiAgICAvLyB3ZSdsbCBqdXN0IGFzc3VtZSB0aGF0IGV2ZXJ5IGNhcGl0YWwgd29yZCBsZWZ0IGlzIGEgdHlwZSBuYW1lXG4gICAgJ2NsYXNzLW5hbWUnOiAvXFxiW0EtWl1cXHcqXFxiL1xuICB9XG4gIFByaXNtLmxhbmd1YWdlcy5kaGFsbC5zdHJpbmcuaW5zaWRlLmludGVycG9sYXRpb24uaW5zaWRlLmV4cHJlc3Npb24uaW5zaWRlID1cbiAgICBQcmlzbS5sYW5ndWFnZXMuZGhhbGxcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcbmRpZmYuZGlzcGxheU5hbWUgPSAnZGlmZidcbmRpZmYuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBkaWZmKFByaXNtKSB7XG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgUHJpc20ubGFuZ3VhZ2VzLmRpZmYgPSB7XG4gICAgICBjb29yZDogW1xuICAgICAgICAvLyBNYXRjaCBhbGwga2luZHMgb2YgY29vcmQgbGluZXMgKHByZWZpeGVkIGJ5IFwiKysrXCIsIFwiLS0tXCIgb3IgXCIqKipcIikuXG4gICAgICAgIC9eKD86XFwqezN9fC17M318XFwrezN9KS4qJC9tLCAvLyBNYXRjaCBcIkBAIC4uLiBAQFwiIGNvb3JkIGxpbmVzIGluIHVuaWZpZWQgZGlmZi5cbiAgICAgICAgL15AQC4qQEAkL20sIC8vIE1hdGNoIGNvb3JkIGxpbmVzIGluIG5vcm1hbCBkaWZmIChzdGFydHMgd2l0aCBhIG51bWJlcikuXG4gICAgICAgIC9eXFxkLiokL21cbiAgICAgIF0gLy8gZGVsZXRlZCwgaW5zZXJ0ZWQsIHVuY2hhbmdlZCwgZGlmZlxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIG1hcCBmcm9tIHRoZSBuYW1lIG9mIGEgYmxvY2sgdG8gaXRzIGxpbmUgcHJlZml4LlxuICAgICAqXG4gICAgICogQHR5cGUge09iamVjdDxzdHJpbmcsIHN0cmluZz59XG4gICAgICovXG4gICAgdmFyIFBSRUZJWEVTID0ge1xuICAgICAgJ2RlbGV0ZWQtc2lnbic6ICctJyxcbiAgICAgICdkZWxldGVkLWFycm93JzogJzwnLFxuICAgICAgJ2luc2VydGVkLXNpZ24nOiAnKycsXG4gICAgICAnaW5zZXJ0ZWQtYXJyb3cnOiAnPicsXG4gICAgICB1bmNoYW5nZWQ6ICcgJyxcbiAgICAgIGRpZmY6ICchJ1xuICAgIH0gLy8gYWRkIGEgdG9rZW4gZm9yIGVhY2ggcHJlZml4XG4gICAgT2JqZWN0LmtleXMoUFJFRklYRVMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBwcmVmaXggPSBQUkVGSVhFU1tuYW1lXVxuICAgICAgdmFyIGFsaWFzID0gW11cbiAgICAgIGlmICghL15cXHcrJC8udGVzdChuYW1lKSkge1xuICAgICAgICAvLyBcImRlbGV0ZWQtc2lnblwiIC0+IFwiZGVsZXRlZFwiXG4gICAgICAgIGFsaWFzLnB1c2goL1xcdysvLmV4ZWMobmFtZSlbMF0pXG4gICAgICB9XG4gICAgICBpZiAobmFtZSA9PT0gJ2RpZmYnKSB7XG4gICAgICAgIGFsaWFzLnB1c2goJ2JvbGQnKVxuICAgICAgfVxuICAgICAgUHJpc20ubGFuZ3VhZ2VzLmRpZmZbbmFtZV0gPSB7XG4gICAgICAgIHBhdHRlcm46IFJlZ0V4cChcbiAgICAgICAgICAnXig/OlsnICsgcHJlZml4ICsgJ10uKig/Olxcclxcbj98XFxufCg/IVtcXFxcc1xcXFxTXSkpKSsnLFxuICAgICAgICAgICdtJ1xuICAgICAgICApLFxuICAgICAgICBhbGlhczogYWxpYXMsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGxpbmU6IHtcbiAgICAgICAgICAgIHBhdHRlcm46IC8oLikoPz1bXFxzXFxTXSkuKig/Olxcclxcbj98XFxuKT8vLFxuICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICBwYXR0ZXJuOiAvW1xcc1xcU10vLFxuICAgICAgICAgICAgYWxpYXM6IC9cXHcrLy5leGVjKG5hbWUpWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkgLy8gbWFrZSBwcmVmaXhlcyBhdmFpbGFibGUgdG8gRGlmZiBwbHVnaW5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJpc20ubGFuZ3VhZ2VzLmRpZmYsICdQUkVGSVhFUycsIHtcbiAgICAgIHZhbHVlOiBQUkVGSVhFU1xuICAgIH0pXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgcmVmcmFjdG9yTWFya3VwVGVtcGxhdGluZyA9IHJlcXVpcmUoJy4vbWFya3VwLXRlbXBsYXRpbmcuanMnKVxubW9kdWxlLmV4cG9ydHMgPSBkamFuZ29cbmRqYW5nby5kaXNwbGF5TmFtZSA9ICdkamFuZ28nXG5kamFuZ28uYWxpYXNlcyA9IFsnamluamEyJ11cbmZ1bmN0aW9uIGRqYW5nbyhQcmlzbSkge1xuICBQcmlzbS5yZWdpc3RlcihyZWZyYWN0b3JNYXJrdXBUZW1wbGF0aW5nKVxuICAvLyBEamFuZ28vSmluamEyIHN5bnRheCBkZWZpbml0aW9uIGZvciBQcmlzbS5qcyA8aHR0cDovL3ByaXNtanMuY29tPiBzeW50YXggaGlnaGxpZ2h0ZXIuXG4gIC8vIE1vc3RseSBpdCB3b3JrcyBPSyBidXQgY2FuIHBhaW50IGNvZGUgaW5jb3JyZWN0bHkgb24gY29tcGxleCBodG1sL3RlbXBsYXRlIHRhZyBjb21iaW5hdGlvbnMuXG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgUHJpc20ubGFuZ3VhZ2VzLmRqYW5nbyA9IHtcbiAgICAgIGNvbW1lbnQ6IC9eXFx7I1tcXHNcXFNdKj8jXFx9JC8sXG4gICAgICB0YWc6IHtcbiAgICAgICAgcGF0dGVybjogLyheXFx7JVsrLV0/XFxzKilcXHcrLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgICAgfSxcbiAgICAgIGRlbGltaXRlcjoge1xuICAgICAgICBwYXR0ZXJuOiAvXlxce1t7JV1bKy1dP3xbKy1dP1t9JV1cXH0kLyxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH0sXG4gICAgICBzdHJpbmc6IHtcbiAgICAgICAgcGF0dGVybjogLyhcInwnKSg/OlxcXFwufCg/IVxcMSlbXlxcXFxcXHJcXG5dKSpcXDEvLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgcGF0dGVybjogLyhcXHwpXFx3Ky8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnZnVuY3Rpb24nXG4gICAgICB9LFxuICAgICAgdGVzdDoge1xuICAgICAgICBwYXR0ZXJuOiAvKFxcYmlzXFxzKyg/Om5vdFxccyspPykoPyFub3RcXGIpXFx3Ky8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnZnVuY3Rpb24nXG4gICAgICB9LFxuICAgICAgZnVuY3Rpb246IC9cXGJbYS16X11cXHcrKD89XFxzKlxcKCkvaSxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC9cXGIoPzphbmR8YXN8Ynl8ZWxzZXxmb3J8aWZ8aW1wb3J0fGlufGlzfGxvb3B8bm90fG9yfHJlY3Vyc2l2ZXx3aXRofHdpdGhvdXQpXFxiLyxcbiAgICAgIG9wZXJhdG9yOiAvWy0rJT1dPT98IT18XFwqXFwqPz0/fFxcL1xcLz89P3w8Wzw9Pl0/fD5bPT5dP3xbJnxefl0vLFxuICAgICAgbnVtYmVyOiAvXFxiXFxkKyg/OlxcLlxcZCspP1xcYi8sXG4gICAgICBib29sZWFuOiAvW0ZmXWFsc2V8W05uXW9uZXxbVHRdcnVlLyxcbiAgICAgIHZhcmlhYmxlOiAvXFxiXFx3K1xcYi8sXG4gICAgICBwdW5jdHVhdGlvbjogL1t7fVtcXF0oKSwuOjtdL1xuICAgIH1cbiAgICB2YXIgcGF0dGVybiA9IC9cXHtcXHtbXFxzXFxTXSo/XFx9XFx9fFxceyVbXFxzXFxTXSo/JVxcfXxcXHsjW1xcc1xcU10qPyNcXH0vZ1xuICAgIHZhciBtYXJrdXBUZW1wbGF0aW5nID0gUHJpc20ubGFuZ3VhZ2VzWydtYXJrdXAtdGVtcGxhdGluZyddXG4gICAgUHJpc20uaG9va3MuYWRkKCdiZWZvcmUtdG9rZW5pemUnLCBmdW5jdGlvbiAoZW52KSB7XG4gICAgICBtYXJrdXBUZW1wbGF0aW5nLmJ1aWxkUGxhY2Vob2xkZXJzKGVudiwgJ2RqYW5nbycsIHBhdHRlcm4pXG4gICAgfSlcbiAgICBQcmlzbS5ob29rcy5hZGQoJ2FmdGVyLXRva2VuaXplJywgZnVuY3Rpb24gKGVudikge1xuICAgICAgbWFya3VwVGVtcGxhdGluZy50b2tlbml6ZVBsYWNlaG9sZGVycyhlbnYsICdkamFuZ28nKVxuICAgIH0pIC8vIEFkZCBhbiBKaW5qYTIgYWxpYXNcbiAgICBQcmlzbS5sYW5ndWFnZXMuamluamEyID0gUHJpc20ubGFuZ3VhZ2VzLmRqYW5nb1xuICAgIFByaXNtLmhvb2tzLmFkZCgnYmVmb3JlLXRva2VuaXplJywgZnVuY3Rpb24gKGVudikge1xuICAgICAgbWFya3VwVGVtcGxhdGluZy5idWlsZFBsYWNlaG9sZGVycyhlbnYsICdqaW5qYTInLCBwYXR0ZXJuKVxuICAgIH0pXG4gICAgUHJpc20uaG9va3MuYWRkKCdhZnRlci10b2tlbml6ZScsIGZ1bmN0aW9uIChlbnYpIHtcbiAgICAgIG1hcmt1cFRlbXBsYXRpbmcudG9rZW5pemVQbGFjZWhvbGRlcnMoZW52LCAnamluamEyJylcbiAgICB9KVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRuc1pvbmVGaWxlXG5kbnNab25lRmlsZS5kaXNwbGF5TmFtZSA9ICdkbnNab25lRmlsZSdcbmRuc1pvbmVGaWxlLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gZG5zWm9uZUZpbGUoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzWydkbnMtem9uZS1maWxlJ10gPSB7XG4gICAgY29tbWVudDogLzsuKi8sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvXCIoPzpcXFxcLnxbXlwiXFxcXFxcclxcbl0pKlwiLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgdmFyaWFibGU6IFtcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogLyheXFwkT1JJR0lOWyBcXHRdKylcXFMrL20sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC8oXnxcXHMpQCg/PVxcc3wkKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgIGtleXdvcmQ6IC9eXFwkKD86SU5DTFVERXxPUklHSU58VFRMKSg/PVxcc3wkKS9tLFxuICAgIGNsYXNzOiB7XG4gICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTAzNSNwYWdlLTEzXG4gICAgICBwYXR0ZXJuOiAvKF58XFxzKSg/OkNIfENTfEhTfElOKSg/PVxcc3wkKS8sXG4gICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgYWxpYXM6ICdrZXl3b3JkJ1xuICAgIH0sXG4gICAgdHlwZToge1xuICAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9ETlNfcmVjb3JkX3R5cGVzXG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvKF58XFxzKSg/OkF8QTZ8QUFBQXxBRlNEQnxBUEx8QVRNQXxDQUF8Q0ROU0tFWXxDRFN8Q0VSVHxDTkFNRXxESENJRHxETFZ8RE5BTUV8RE5TS0VZfERTfEVJRHxHSUR8R1BPU3xISU5GT3xISVB8SVBTRUNLRVl8SVNETnxLRVl8S1h8TE9DfE1BSUxBfE1BSUxCfE1CfE1EfE1GfE1HfE1JTkZPfE1SfE1YfE5BUFRSfE5CfE5CU1RBVHxOSU1MT0N8TklORk98TlN8TlNBUHxOU0FQLVBUUnxOU0VDfE5TRUMzfE5TRUMzUEFSQU18TlVMTHxOWFR8T1BFTlBHUEtFWXxQVFJ8UFh8UktFWXxSUHxSUlNJR3xSVHxTSUd8U0lOS3xTTUlNRUF8U09BfFNQRnxTUlZ8U1NIRlB8VEF8VEtFWXxUTFNBfFRTSUd8VFhUfFVJRHxVSU5GT3xVTlNQRUN8VVJJfFdLU3xYMjUpKD89XFxzfCQpLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgfSxcbiAgICBwdW5jdHVhdGlvbjogL1soKV0vXG4gIH1cbiAgUHJpc20ubGFuZ3VhZ2VzWydkbnMtem9uZSddID0gUHJpc20ubGFuZ3VhZ2VzWydkbnMtem9uZS1maWxlJ11cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRvY2tlclxuZG9ja2VyLmRpc3BsYXlOYW1lID0gJ2RvY2tlcidcbmRvY2tlci5hbGlhc2VzID0gWydkb2NrZXJmaWxlJ11cbmZ1bmN0aW9uIGRvY2tlcihQcmlzbSkge1xuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIC8vIE1hbnkgb2YgdGhlIGZvbGxvd2luZyByZWdleGVzIHdpbGwgY29udGFpbiBuZWdhdGVkIGxvb2thaGVhZHMgbGlrZSBgWyBcXHRdKyg/IVsgXFx0XSlgLiBUaGlzIGlzIGEgdHJpY2sgdG8gZW5zdXJlXG4gICAgLy8gdGhhdCBxdWFudGlmaWVycyBiZWhhdmUgKmF0b21pY2FsbHkqLiBBdG9taWMgcXVhbnRpZmllcnMgYXJlIG5lY2Vzc2FyeSB0byBwcmV2ZW50IGV4cG9uZW50aWFsIGJhY2t0cmFja2luZy5cbiAgICB2YXIgc3BhY2VBZnRlckJhY2tTbGFzaCA9XG4gICAgICAvXFxcXFtcXHJcXG5dKD86XFxzfFxcXFxbXFxyXFxuXXwjLiooPyEuKSkqKD8hW1xccyNdfFxcXFxbXFxyXFxuXSkvLnNvdXJjZSAvLyBBdCBsZWFzdCBvbmUgc3BhY2UsIGNvbW1lbnQsIG9yIGxpbmUgYnJlYWtcbiAgICB2YXIgc3BhY2UgPSAvKD86WyBcXHRdKyg/IVsgXFx0XSkoPzo8U1BfQlM+KT98PFNQX0JTPikvLnNvdXJjZS5yZXBsYWNlKFxuICAgICAgLzxTUF9CUz4vZyxcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHNwYWNlQWZ0ZXJCYWNrU2xhc2hcbiAgICAgIH1cbiAgICApXG4gICAgdmFyIHN0cmluZyA9XG4gICAgICAvXCIoPzpbXlwiXFxcXFxcclxcbl18XFxcXCg/OlxcclxcbnxbXFxzXFxTXSkpKlwifCcoPzpbXidcXFxcXFxyXFxuXXxcXFxcKD86XFxyXFxufFtcXHNcXFNdKSkqJy9cbiAgICAgICAgLnNvdXJjZVxuICAgIHZhciBvcHRpb24gPSAvLS1bXFx3LV0rPSg/OjxTVFI+fCg/IVtcIiddKSg/OlteXFxzXFxcXF18XFxcXC4pKykvLnNvdXJjZS5yZXBsYWNlKFxuICAgICAgLzxTVFI+L2csXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmdcbiAgICAgIH1cbiAgICApXG4gICAgdmFyIHN0cmluZ1J1bGUgPSB7XG4gICAgICBwYXR0ZXJuOiBSZWdFeHAoc3RyaW5nKSxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH1cbiAgICB2YXIgY29tbWVudFJ1bGUgPSB7XG4gICAgICBwYXR0ZXJuOiAvKF5bIFxcdF0qKSMuKi9tLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZsYWdzXG4gICAgICogQHJldHVybnMge1JlZ0V4cH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZShzb3VyY2UsIGZsYWdzKSB7XG4gICAgICBzb3VyY2UgPSBzb3VyY2VcbiAgICAgICAgLnJlcGxhY2UoLzxPUFQ+L2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICAgIH0pXG4gICAgICAgIC5yZXBsYWNlKC88U1A+L2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3BhY2VcbiAgICAgICAgfSlcbiAgICAgIHJldHVybiBSZWdFeHAoc291cmNlLCBmbGFncylcbiAgICB9XG4gICAgUHJpc20ubGFuZ3VhZ2VzLmRvY2tlciA9IHtcbiAgICAgIGluc3RydWN0aW9uOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyheWyBcXHRdKikoPzpBRER8QVJHfENNRHxDT1BZfEVOVFJZUE9JTlR8RU5WfEVYUE9TRXxGUk9NfEhFQUxUSENIRUNLfExBQkVMfE1BSU5UQUlORVJ8T05CVUlMRHxSVU58U0hFTEx8U1RPUFNJR05BTHxVU0VSfFZPTFVNRXxXT1JLRElSKSg/PVxccykoPzpcXFxcLnxbXlxcclxcblxcXFxdKSooPzpcXFxcJCg/Olxcc3wjLiokKSooPyFbXFxzI10pKD86XFxcXC58W15cXHJcXG5cXFxcXSkqKSovaW0sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcGF0dGVybjogcmUoXG4gICAgICAgICAgICAgIC8oXig/Ok9OQlVJTEQ8U1A+KT9cXHcrPFNQPik8T1BUPig/OjxTUD48T1BUPikqLy5zb3VyY2UsXG4gICAgICAgICAgICAgICdpJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgICAgcHJvcGVydHk6IHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKS0tW1xcdy1dKy8sXG4gICAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzdHJpbmc6IFtcbiAgICAgICAgICAgICAgICBzdHJpbmdSdWxlLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHBhdHRlcm46IC8oPSkoPyFbXCInXSkoPzpbXlxcc1xcXFxdfFxcXFwuKSsvLFxuICAgICAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgb3BlcmF0b3I6IC9cXFxcJC9tLFxuICAgICAgICAgICAgICBwdW5jdHVhdGlvbjogLz0vXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXl3b3JkOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvYnVpbGRlci8jaGVhbHRoY2hlY2tcbiAgICAgICAgICAgICAgcGF0dGVybjogcmUoXG4gICAgICAgICAgICAgICAgLyheKD86T05CVUlMRDxTUD4pP0hFQUxUSENIRUNLPFNQPig/OjxPUFQ+PFNQPikqKSg/OkNNRHxOT05FKVxcYi9cbiAgICAgICAgICAgICAgICAgIC5zb3VyY2UsXG4gICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9idWlsZGVyLyNmcm9tXG4gICAgICAgICAgICAgIHBhdHRlcm46IHJlKFxuICAgICAgICAgICAgICAgIC8oXig/Ok9OQlVJTEQ8U1A+KT9GUk9NPFNQPig/OjxPUFQ+PFNQPikqKD8hLS0pW14gXFx0XFxcXF0rPFNQPilBUy9cbiAgICAgICAgICAgICAgICAgIC5zb3VyY2UsXG4gICAgICAgICAgICAgICAgJ2knXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9idWlsZGVyLyNvbmJ1aWxkXG4gICAgICAgICAgICAgIHBhdHRlcm46IHJlKC8oXk9OQlVJTEQ8U1A+KVxcdysvLnNvdXJjZSwgJ2knKSxcbiAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvXlxcdysvLFxuICAgICAgICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGNvbW1lbnQ6IGNvbW1lbnRSdWxlLFxuICAgICAgICAgIHN0cmluZzogc3RyaW5nUnVsZSxcbiAgICAgICAgICB2YXJpYWJsZTogL1xcJCg/Olxcdyt8XFx7W157fVwiJ1xcXFxdKlxcfSkvLFxuICAgICAgICAgIG9wZXJhdG9yOiAvXFxcXCQvbVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY29tbWVudDogY29tbWVudFJ1bGVcbiAgICB9XG4gICAgUHJpc20ubGFuZ3VhZ2VzLmRvY2tlcmZpbGUgPSBQcmlzbS5sYW5ndWFnZXMuZG9ja2VyXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZG90XG5kb3QuZGlzcGxheU5hbWUgPSAnZG90J1xuZG90LmFsaWFzZXMgPSBbJ2d2J11cbmZ1bmN0aW9uIGRvdChQcmlzbSkge1xuICAvLyBodHRwczovL3d3dy5ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sXG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgdmFyIElEID1cbiAgICAgICcoPzonICtcbiAgICAgIFtcbiAgICAgICAgLy8gYW4gaWRlbnRpZmllclxuICAgICAgICAvW2EtekEtWl9cXHg4MC1cXHVGRkZGXVtcXHdcXHg4MC1cXHVGRkZGXSovLnNvdXJjZSwgLy8gYSBudW1iZXJcbiAgICAgICAgLy0/KD86XFwuXFxkK3xcXGQrKD86XFwuXFxkKik/KS8uc291cmNlLCAvLyBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nXG4gICAgICAgIC9cIlteXCJcXFxcXSooPzpcXFxcW1xcc1xcU11bXlwiXFxcXF0qKSpcIi8uc291cmNlLCAvLyBIVE1MLWxpa2Ugc3RyaW5nXG4gICAgICAgIC88KD86W148Pl18KD8hPCEtLSk8KD86W148PlwiJ118XCJbXlwiXSpcInwnW14nXSonKSs+fDwhLS0oPzpbXi1dfC0oPyEtPikpKi0tPikqPi9cbiAgICAgICAgICAuc291cmNlXG4gICAgICBdLmpvaW4oJ3wnKSArXG4gICAgICAnKSdcbiAgICB2YXIgSURJbnNpZGUgPSB7XG4gICAgICBtYXJrdXA6IHtcbiAgICAgICAgcGF0dGVybjogLyhePClbXFxzXFxTXSsoPz0+JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogWydsYW5ndWFnZS1tYXJrdXAnLCAnbGFuZ3VhZ2UtaHRtbCcsICdsYW5ndWFnZS14bWwnXSxcbiAgICAgICAgaW5zaWRlOiBQcmlzbS5sYW5ndWFnZXMubWFya3VwXG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxhZ3NcbiAgICAgKiBAcmV0dXJucyB7UmVnRXhwfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdpdGhJRChzb3VyY2UsIGZsYWdzKSB7XG4gICAgICByZXR1cm4gUmVnRXhwKFxuICAgICAgICBzb3VyY2UucmVwbGFjZSgvPElEPi9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIElEXG4gICAgICAgIH0pLFxuICAgICAgICBmbGFnc1xuICAgICAgKVxuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuZG90ID0ge1xuICAgICAgY29tbWVudDoge1xuICAgICAgICBwYXR0ZXJuOiAvXFwvXFwvLip8XFwvXFwqW1xcc1xcU10qP1xcKlxcL3xeIy4qL20sXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSxcbiAgICAgICdncmFwaC1uYW1lJzoge1xuICAgICAgICBwYXR0ZXJuOiB3aXRoSUQoXG4gICAgICAgICAgLyhcXGIoPzpkaWdyYXBofGdyYXBofHN1YmdyYXBoKVsgXFx0XFxyXFxuXSspPElEPi8uc291cmNlLFxuICAgICAgICAgICdpJ1xuICAgICAgICApLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZScsXG4gICAgICAgIGluc2lkZTogSURJbnNpZGVcbiAgICAgIH0sXG4gICAgICAnYXR0ci12YWx1ZSc6IHtcbiAgICAgICAgcGF0dGVybjogd2l0aElEKC8oPVsgXFx0XFxyXFxuXSopPElEPi8uc291cmNlKSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBpbnNpZGU6IElESW5zaWRlXG4gICAgICB9LFxuICAgICAgJ2F0dHItbmFtZSc6IHtcbiAgICAgICAgcGF0dGVybjogd2l0aElEKC8oW1xcWzssIFxcdFxcclxcbl0pPElEPig/PVsgXFx0XFxyXFxuXSo9KS8uc291cmNlKSxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBpbnNpZGU6IElESW5zaWRlXG4gICAgICB9LFxuICAgICAga2V5d29yZDogL1xcYig/OmRpZ3JhcGh8ZWRnZXxncmFwaHxub2RlfHN0cmljdHxzdWJncmFwaClcXGIvaSxcbiAgICAgICdjb21wYXNzLXBvaW50Jzoge1xuICAgICAgICBwYXR0ZXJuOiAvKDpbIFxcdFxcclxcbl0qKSg/Oltld2NfXXxbbnNdW2V3XT8pKD8hW1xcd1xceDgwLVxcdUZGRkZdKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnYnVpbHRpbidcbiAgICAgIH0sXG4gICAgICBub2RlOiB7XG4gICAgICAgIHBhdHRlcm46IHdpdGhJRCgvKF58W14tLlxcd1xceDgwLVxcdUZGRkZcXFxcXSk8SUQ+Ly5zb3VyY2UpLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgIGluc2lkZTogSURJbnNpZGVcbiAgICAgIH0sXG4gICAgICBvcGVyYXRvcjogL1s9Ol18LVstPl0vLFxuICAgICAgcHVuY3R1YXRpb246IC9bXFxbXFxde307LF0vXG4gICAgfVxuICAgIFByaXNtLmxhbmd1YWdlcy5ndiA9IFByaXNtLmxhbmd1YWdlcy5kb3RcbiAgfSkoUHJpc20pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBlYm5mXG5lYm5mLmRpc3BsYXlOYW1lID0gJ2VibmYnXG5lYm5mLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gZWJuZihQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuZWJuZiA9IHtcbiAgICBjb21tZW50OiAvXFwoXFwqW1xcc1xcU10qP1xcKlxcKS8sXG4gICAgc3RyaW5nOiB7XG4gICAgICBwYXR0ZXJuOiAvXCJbXlwiXFxyXFxuXSpcInwnW14nXFxyXFxuXSonLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgc3BlY2lhbDoge1xuICAgICAgcGF0dGVybjogL1xcP1teP1xcclxcbl0qXFw/LyxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZSdcbiAgICB9LFxuICAgIGRlZmluaXRpb246IHtcbiAgICAgIHBhdHRlcm46IC9eKFtcXHQgXSopW2Etel1cXHcqKD86WyBcXHRdK1thLXpdXFx3KikqKD89XFxzKj0pL2ltLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiBbJ3J1bGUnLCAna2V5d29yZCddXG4gICAgfSxcbiAgICBydWxlOiAvXFxiW2Etel1cXHcqKD86WyBcXHRdK1thLXpdXFx3KikqXFxiL2ksXG4gICAgcHVuY3R1YXRpb246IC9cXChbOi9dfFs6L11cXCl8Wy4sOygpW1xcXXt9XS8sXG4gICAgb3BlcmF0b3I6IC9bLT18Ki8hXS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZWRpdG9yY29uZmlnXG5lZGl0b3Jjb25maWcuZGlzcGxheU5hbWUgPSAnZWRpdG9yY29uZmlnJ1xuZWRpdG9yY29uZmlnLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gZWRpdG9yY29uZmlnKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5lZGl0b3Jjb25maWcgPSB7XG4gICAgLy8gaHR0cHM6Ly9lZGl0b3Jjb25maWctc3BlY2lmaWNhdGlvbi5yZWFkdGhlZG9jcy5pb1xuICAgIGNvbW1lbnQ6IC9bOyNdLiovLFxuICAgIHNlY3Rpb246IHtcbiAgICAgIHBhdHRlcm46IC8oXlsgXFx0XSopXFxbLitcXF0vbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBhbGlhczogJ3NlbGVjdG9yJyxcbiAgICAgIGluc2lkZToge1xuICAgICAgICByZWdleDogL1xcXFxcXFxcW1xcW1xcXXt9LCE/LipdLyxcbiAgICAgICAgLy8gRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyB3aXRoICdcXFxcJ1xuICAgICAgICBvcGVyYXRvcjogL1shP118XFwuXFwufFxcKnsxLDJ9LyxcbiAgICAgICAgcHVuY3R1YXRpb246IC9bXFxbXFxde30sXS9cbiAgICAgIH1cbiAgICB9LFxuICAgIGtleToge1xuICAgICAgcGF0dGVybjogLyheWyBcXHRdKilbXlxccz1dKyg/PVsgXFx0XSo9KS9tLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnYXR0ci1uYW1lJ1xuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIHBhdHRlcm46IC89LiovLFxuICAgICAgYWxpYXM6ICdhdHRyLXZhbHVlJyxcbiAgICAgIGluc2lkZToge1xuICAgICAgICBwdW5jdHVhdGlvbjogL149L1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZWlmZmVsXG5laWZmZWwuZGlzcGxheU5hbWUgPSAnZWlmZmVsJ1xuZWlmZmVsLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gZWlmZmVsKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlcy5laWZmZWwgPSB7XG4gICAgY29tbWVudDogLy0tLiovLFxuICAgIHN0cmluZzogW1xuICAgICAgLy8gQWxpZ25lZC12ZXJiYXRpbS1zdHJpbmdzXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC9cIihbXltdKilcXFtbXFxzXFxTXSo/XFxdXFwxXCIvLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH0sIC8vIE5vbi1hbGlnbmVkLXZlcmJhdGltLXN0cmluZ3NcbiAgICAgIHtcbiAgICAgICAgcGF0dGVybjogL1wiKFtee10qKVxce1tcXHNcXFNdKj9cXH1cXDFcIi8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSwgLy8gU2luZ2xlLWxpbmUgc3RyaW5nXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC9cIig/OiUoPzooPyFcXG4pXFxzKSpcXG5cXHMqJXwlXFxTfFteJVwiXFxyXFxuXSkqXCIvLFxuICAgICAgICBncmVlZHk6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgIC8vIG5vcm1hbCBjaGFyIHwgc3BlY2lhbCBjaGFyIHwgY2hhciBjb2RlXG4gICAgY2hhcjogLycoPzolLnxbXiUnXFxyXFxuXSkrJy8sXG4gICAga2V5d29yZDpcbiAgICAgIC9cXGIoPzphY3Jvc3N8YWdlbnR8YWxpYXN8YWxsfGFuZHxhc3xhc3NpZ258YXR0YWNoZWR8YXR0cmlidXRlfGNoZWNrfGNsYXNzfGNvbnZlcnR8Y3JlYXRlfEN1cnJlbnR8ZGVidWd8ZGVmZXJyZWR8ZGV0YWNoYWJsZXxkb3xlbHNlfGVsc2VpZnxlbmR8ZW5zdXJlfGV4cGFuZGVkfGV4cG9ydHxleHRlcm5hbHxmZWF0dXJlfGZyb218ZnJvemVufGlmfGltcGxpZXN8aW5oZXJpdHxpbnNwZWN0fGludmFyaWFudHxsaWtlfGxvY2FsfGxvb3B8bm90fG5vdGV8b2Jzb2xldGV8b2xkfG9uY2V8b3J8UHJlY3Vyc29yfHJlZGVmaW5lfHJlbmFtZXxyZXF1aXJlfHJlc2N1ZXxSZXN1bHR8cmV0cnl8c2VsZWN0fHNlcGFyYXRlfHNvbWV8dGhlbnx1bmRlZmluZXx1bnRpbHx2YXJpYW50fFZvaWR8d2hlbnx4b3IpXFxiL2ksXG4gICAgYm9vbGVhbjogL1xcYig/OkZhbHNlfFRydWUpXFxiL2ksXG4gICAgLy8gQ29udmVudGlvbjogY2xhc3MtbmFtZXMgYXJlIGFsd2F5cyBhbGwgdXBwZXItY2FzZSBjaGFyYWN0ZXJzXG4gICAgJ2NsYXNzLW5hbWUnOiAvXFxiW0EtWl1bXFxkQS1aX10qXFxiLyxcbiAgICBudW1iZXI6IFtcbiAgICAgIC8vIGhleGEgfCBvY3RhbCB8IGJpblxuICAgICAgL1xcYjBbeGNiXVtcXGRhLWZdKD86XypbXFxkYS1mXSkqXFxiL2ksIC8vIERlY2ltYWxcbiAgICAgIC8oPzpcXGJcXGQoPzpfKlxcZCkqKT9cXC4oPzooPzpcXGQoPzpfKlxcZCkqKT9lWystXT8pP1xcZCg/Ol8qXFxkKSpcXGJ8XFxiXFxkKD86XypcXGQpKlxcYlxcLj8vaVxuICAgIF0sXG4gICAgcHVuY3R1YXRpb246IC86PXw8PHw+PnxcXChcXHx8XFx8XFwpfC0+fFxcLig/PVxcdyl8W3t9W1xcXTsoKSw6P10vLFxuICAgIG9wZXJhdG9yOiAvXFxcXFxcXFx8XFx8XFwuXFwuXFx8fFxcLlxcLnxcXC9bflxcLz1dP3xbPjxdPT98Wy0rKl49fl0vXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIHJlZnJhY3Rvck1hcmt1cFRlbXBsYXRpbmcgPSByZXF1aXJlKCcuL21hcmt1cC10ZW1wbGF0aW5nLmpzJylcbm1vZHVsZS5leHBvcnRzID0gZWpzXG5lanMuZGlzcGxheU5hbWUgPSAnZWpzJ1xuZWpzLmFsaWFzZXMgPSBbJ2V0YSddXG5mdW5jdGlvbiBlanMoUHJpc20pIHtcbiAgUHJpc20ucmVnaXN0ZXIocmVmcmFjdG9yTWFya3VwVGVtcGxhdGluZylcbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICBQcmlzbS5sYW5ndWFnZXMuZWpzID0ge1xuICAgICAgZGVsaW1pdGVyOiB7XG4gICAgICAgIHBhdHRlcm46IC9ePCVbLV89XT98Wy1fXT8lPiQvLFxuICAgICAgICBhbGlhczogJ3B1bmN0dWF0aW9uJ1xuICAgICAgfSxcbiAgICAgIGNvbW1lbnQ6IC9eI1tcXHNcXFNdKi8sXG4gICAgICAnbGFuZ3VhZ2UtamF2YXNjcmlwdCc6IHtcbiAgICAgICAgcGF0dGVybjogL1tcXHNcXFNdKy8sXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHRcbiAgICAgIH1cbiAgICB9XG4gICAgUHJpc20uaG9va3MuYWRkKCdiZWZvcmUtdG9rZW5pemUnLCBmdW5jdGlvbiAoZW52KSB7XG4gICAgICB2YXIgZWpzUGF0dGVybiA9IC88JSg/ISUpW1xcc1xcU10rPyU+L2dcbiAgICAgIFByaXNtLmxhbmd1YWdlc1snbWFya3VwLXRlbXBsYXRpbmcnXS5idWlsZFBsYWNlaG9sZGVycyhcbiAgICAgICAgZW52LFxuICAgICAgICAnZWpzJyxcbiAgICAgICAgZWpzUGF0dGVyblxuICAgICAgKVxuICAgIH0pXG4gICAgUHJpc20uaG9va3MuYWRkKCdhZnRlci10b2tlbml6ZScsIGZ1bmN0aW9uIChlbnYpIHtcbiAgICAgIFByaXNtLmxhbmd1YWdlc1snbWFya3VwLXRlbXBsYXRpbmcnXS50b2tlbml6ZVBsYWNlaG9sZGVycyhlbnYsICdlanMnKVxuICAgIH0pXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmV0YSA9IFByaXNtLmxhbmd1YWdlcy5lanNcbiAgfSkoUHJpc20pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBlbGl4aXJcbmVsaXhpci5kaXNwbGF5TmFtZSA9ICdlbGl4aXInXG5lbGl4aXIuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBlbGl4aXIoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmVsaXhpciA9IHtcbiAgICBkb2M6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9AKD86ZG9jfG1vZHVsZWRvYylcXHMrKD86KFwiXCJcInwnJycpW1xcc1xcU10qP1xcMXwoXCJ8JykoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDIpW15cXFxcXFxyXFxuXSkqXFwyKS8sXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgYXR0cmlidXRlOiAvXkBcXHcrLyxcbiAgICAgICAgc3RyaW5nOiAvWydcIl1bXFxzXFxTXSsvXG4gICAgICB9XG4gICAgfSxcbiAgICBjb21tZW50OiB7XG4gICAgICBwYXR0ZXJuOiAvIy4qLyxcbiAgICAgIGdyZWVkeTogdHJ1ZVxuICAgIH0sXG4gICAgLy8gfnJcIlwiXCJmb29cIlwiXCIgKG11bHRpLWxpbmUpLCB+cicnJ2ZvbycnJyAobXVsdGktbGluZSksIH5yL2Zvby8sIH5yfGZvb3wsIH5yXCJmb29cIiwgfnInZm9vJywgfnIoZm9vKSwgfnJbZm9vXSwgfnJ7Zm9vfSwgfnI8Zm9vPlxuICAgIHJlZ2V4OiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvfltyUl0oPzooXCJcIlwifCcnJykoPzpcXFxcW1xcc1xcU118KD8hXFwxKVteXFxcXF0pK1xcMXwoW1xcL3xcIiddKSg/OlxcXFwufCg/IVxcMilbXlxcXFxcXHJcXG5dKStcXDJ8XFwoKD86XFxcXC58W15cXFxcKVxcclxcbl0pK1xcKXxcXFsoPzpcXFxcLnxbXlxcXFxcXF1cXHJcXG5dKStcXF18XFx7KD86XFxcXC58W15cXFxcfVxcclxcbl0pK1xcfXw8KD86XFxcXC58W15cXFxcPlxcclxcbl0pKz4pW3Vpc214ZnJdKi8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHN0cmluZzogW1xuICAgICAge1xuICAgICAgICAvLyB+c1wiXCJcImZvb1wiXCJcIiAobXVsdGktbGluZSksIH5zJycnZm9vJycnIChtdWx0aS1saW5lKSwgfnMvZm9vLywgfnN8Zm9vfCwgfnNcImZvb1wiLCB+cydmb28nLCB+cyhmb28pLCB+c1tmb29dLCB+c3tmb299ICh3aXRoIGludGVycG9sYXRpb24gY2FyZSksIH5zPGZvbz5cbiAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAvfltjQ3NTd1ddKD86KFwiXCJcInwnJycpKD86XFxcXFtcXHNcXFNdfCg/IVxcMSlbXlxcXFxdKStcXDF8KFtcXC98XCInXSkoPzpcXFxcLnwoPyFcXDIpW15cXFxcXFxyXFxuXSkrXFwyfFxcKCg/OlxcXFwufFteXFxcXClcXHJcXG5dKStcXCl8XFxbKD86XFxcXC58W15cXFxcXFxdXFxyXFxuXSkrXFxdfFxceyg/OlxcXFwufCNcXHtbXn1dK1xcfXwjKD8hXFx7KXxbXiNcXFxcfVxcclxcbl0pK1xcfXw8KD86XFxcXC58W15cXFxcPlxcclxcbl0pKz4pW2NzYV0/LyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAvLyBTZWUgaW50ZXJwb2xhdGlvbiBiZWxvd1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvKFwiXCJcInwnJycpW1xcc1xcU10qP1xcMS8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgaW5zaWRlOiB7XG4gICAgICAgICAgLy8gU2VlIGludGVycG9sYXRpb24gYmVsb3dcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gTXVsdGktbGluZSBzdHJpbmdzIGFyZSBhbGxvd2VkXG4gICAgICAgIHBhdHRlcm46IC8oXCJ8JykoPzpcXFxcKD86XFxyXFxufFtcXHNcXFNdKXwoPyFcXDEpW15cXFxcXFxyXFxuXSkqXFwxLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAvLyBTZWUgaW50ZXJwb2xhdGlvbiBiZWxvd1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXSxcbiAgICBhdG9tOiB7XG4gICAgICAvLyBMb29rLWJlaGluZCBwcmV2ZW50cyBiYWQgaGlnaGxpZ2h0aW5nIG9mIHRoZSA6OiBvcGVyYXRvclxuICAgICAgcGF0dGVybjogLyhefFteOl0pOlxcdysvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnc3ltYm9sJ1xuICAgIH0sXG4gICAgbW9kdWxlOiB7XG4gICAgICBwYXR0ZXJuOiAvXFxiW0EtWl1cXHcqXFxiLyxcbiAgICAgIGFsaWFzOiAnY2xhc3MtbmFtZSdcbiAgICB9LFxuICAgIC8vIExvb2stYWhlYWQgcHJldmVudHMgYmFkIGhpZ2hsaWdodGluZyBvZiB0aGUgOjogb3BlcmF0b3JcbiAgICAnYXR0ci1uYW1lJzogL1xcYlxcdytcXD8/Oig/ITopLyxcbiAgICBhcmd1bWVudDoge1xuICAgICAgLy8gTG9vay1iZWhpbmQgcHJldmVudHMgYmFkIGhpZ2hsaWdodGluZyBvZiB0aGUgJiYgb3BlcmF0b3JcbiAgICAgIHBhdHRlcm46IC8oXnxbXiZdKSZcXGQrLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBhbGlhczogJ3ZhcmlhYmxlJ1xuICAgIH0sXG4gICAgYXR0cmlidXRlOiB7XG4gICAgICBwYXR0ZXJuOiAvQFxcdysvLFxuICAgICAgYWxpYXM6ICd2YXJpYWJsZSdcbiAgICB9LFxuICAgIGZ1bmN0aW9uOiAvXFxiW19hLXpBLVpdXFx3Kls/IV0/KD86KD89XFxzKig/OlxcLlxccyopP1xcKCl8KD89XFwvXFxkKSkvLFxuICAgIG51bWJlcjogL1xcYig/OjBbYm94XVthLWZcXGRfXSt8XFxkW1xcZF9dKikoPzpcXC5bXFxkX10rKT8oPzplWystXT9bXFxkX10rKT9cXGIvaSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmFmdGVyfGFsaWFzfGFuZHxjYXNlfGNhdGNofGNvbmR8ZGVmKD86Y2FsbGJhY2t8ZGVsZWdhdGV8ZXhjZXB0aW9ufGltcGx8bWFjcm98bW9kdWxlfG58bnB8cHxwcm90b2NvbHxzdHJ1Y3QpP3xkb3xlbHNlfGVuZHxmbnxmb3J8aWZ8aW1wb3J0fG5vdHxvcnxxdW90ZXxyYWlzZXxyZXF1aXJlfHJlc2N1ZXx0cnl8dW5sZXNzfHVucXVvdGV8dXNlfHdoZW4pXFxiLyxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8bmlsfHRydWUpXFxiLyxcbiAgICBvcGVyYXRvcjogW1xuICAgICAgL1xcYmluXFxifCYmP3xcXHxbfD5dP3xcXFxcXFxcXHw6OnxcXC5cXC5cXC4/fFxcK1xcKz98LVstPl0/fDxbLT0+XXw+PXwhPT0/fFxcQiF8PSg/Oj09P3xbPn5dKT98WypcXC9eXS8sXG4gICAgICB7XG4gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbWF0Y2ggPDxcbiAgICAgICAgcGF0dGVybjogLyhbXjxdKTwoPyE8KS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbWF0Y2ggPj5cbiAgICAgICAgcGF0dGVybjogLyhbXj5dKT4oPyE+KS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH1cbiAgICBdLFxuICAgIHB1bmN0dWF0aW9uOiAvPDx8Pj58Wy4sJVxcW1xcXXt9KCldL1xuICB9XG4gIFByaXNtLmxhbmd1YWdlcy5lbGl4aXIuc3RyaW5nLmZvckVhY2goZnVuY3Rpb24gKG8pIHtcbiAgICBvLmluc2lkZSA9IHtcbiAgICAgIGludGVycG9sYXRpb246IHtcbiAgICAgICAgcGF0dGVybjogLyNcXHtbXn1dK1xcfS8sXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIGRlbGltaXRlcjoge1xuICAgICAgICAgICAgcGF0dGVybjogL14jXFx7fFxcfSQvLFxuICAgICAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3Q6IFByaXNtLmxhbmd1YWdlcy5lbGl4aXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVsbVxuZWxtLmRpc3BsYXlOYW1lID0gJ2VsbSdcbmVsbS5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGVsbShQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuZWxtID0ge1xuICAgIGNvbW1lbnQ6IC8tLS4qfFxcey1bXFxzXFxTXSo/LVxcfS8sXG4gICAgY2hhcjoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLycoPzpbXlxcXFwnXFxyXFxuXXxcXFxcKD86W2FiZm5ydHZcXFxcJ118XFxkK3x4WzAtOWEtZkEtRl0rfHVcXHtbMC05YS1mQS1GXStcXH0pKScvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBzdHJpbmc6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gTXVsdGlsaW5lIHN0cmluZ3MgYXJlIHdyYXBwZWQgaW4gdHJpcGxlIFwiLiBRdW90ZXMgbWF5IGFwcGVhciB1bmVzY2FwZWQuXG4gICAgICAgIHBhdHRlcm46IC9cIlwiXCJbXFxzXFxTXSo/XCJcIlwiLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwYXR0ZXJuOiAvXCIoPzpbXlxcXFxcIlxcclxcbl18XFxcXC4pKlwiLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgICB9XG4gICAgXSxcbiAgICAnaW1wb3J0LXN0YXRlbWVudCc6IHtcbiAgICAgIC8vIFRoZSBpbXBvcnRlZCBvciBoaWRkZW4gbmFtZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGlzIGltcG9ydFxuICAgICAgLy8gc3RhdGVtZW50LiBUaGlzIGlzIGJlY2F1c2Ugd2Ugd2FudCB0byBoaWdobGlnaHQgdGhvc2UgZXhhY3RseSBsaWtlXG4gICAgICAvLyB3ZSBkbyBmb3IgdGhlIG5hbWVzIGluIHRoZSBwcm9ncmFtLlxuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyheW1xcdCBdKilpbXBvcnRcXHMrW0EtWl1cXHcqKD86XFwuW0EtWl1cXHcqKSooPzpcXHMrYXNcXHMrKD86W0EtWl1cXHcqKSg/OlxcLltBLVpdXFx3KikqKT8oPzpcXHMrZXhwb3NpbmdcXHMrKT8vbSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAga2V5d29yZDogL1xcYig/OmFzfGV4cG9zaW5nfGltcG9ydClcXGIvXG4gICAgICB9XG4gICAgfSxcbiAgICBrZXl3b3JkOlxuICAgICAgL1xcYig/OmFsaWFzfGFzfGNhc2V8ZWxzZXxleHBvc2luZ3xpZnxpbnxpbmZpeGx8aW5maXhyfGxldHxtb2R1bGV8b2Z8dGhlbnx0eXBlKVxcYi8sXG4gICAgLy8gVGhlc2UgYXJlIGJ1aWx0aW4gdmFyaWFibGVzIG9ubHkuIENvbnN0cnVjdG9ycyBhcmUgaGlnaGxpZ2h0ZWQgbGF0ZXIgYXMgYSBjb25zdGFudC5cbiAgICBidWlsdGluOlxuICAgICAgL1xcYig/OmFic3xhY29zfGFsd2F5c3xhc2lufGF0YW58YXRhbjJ8Y2VpbGluZ3xjbGFtcHxjb21wYXJlfGNvc3xjdXJyeXxkZWdyZWVzfGV8ZmxpcHxmbG9vcnxmcm9tUG9sYXJ8aWRlbnRpdHl8aXNJbmZpbml0ZXxpc05hTnxsb2dCYXNlfG1heHxtaW58bmVnYXRlfG5ldmVyfG5vdHxwaXxyYWRpYW5zfHJlbXxyb3VuZHxzaW58c3FydHx0YW58dG9GbG9hdHx0b1BvbGFyfHRvU3RyaW5nfHRydW5jYXRlfHR1cm5zfHVuY3Vycnl8eG9yKVxcYi8sXG4gICAgLy8gZGVjaW1hbCBpbnRlZ2VycyBhbmQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyB8IGhleGFkZWNpbWFsIGludGVnZXJzXG4gICAgbnVtYmVyOiAvXFxiKD86XFxkKyg/OlxcLlxcZCspPyg/OmVbKy1dP1xcZCspP3wweFswLTlhLWZdKylcXGIvaSxcbiAgICAvLyBNb3N0IG9mIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgdGhlIG1lYW5pbmcgb2YgYSBzaW5nbGUgJy4nLlxuICAgIC8vIElmIGl0IHN0YW5kcyBhbG9uZSBmcmVlbHksIGl0IGlzIHRoZSBmdW5jdGlvbiBjb21wb3NpdGlvbi5cbiAgICAvLyBJdCBtYXkgYWxzbyBiZSBhIHNlcGFyYXRvciBiZXR3ZWVuIGEgbW9kdWxlIG5hbWUgYW5kIGFuIGlkZW50aWZpZXIgPT4gbm9cbiAgICAvLyBvcGVyYXRvci4gSWYgaXQgY29tZXMgdG9nZXRoZXIgd2l0aCBvdGhlciBzcGVjaWFsIGNoYXJhY3RlcnMgaXQgaXMgYW5cbiAgICAvLyBvcGVyYXRvciB0b28uXG4gICAgLy8gVmFsaWQgb3BlcmF0b3IgY2hhcmFjdGVycyBpbiAwLjE4OiArLS8qPS4kPD46JnxePyUjQH4hXG4gICAgLy8gUmVmOiBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhbXNnL2VsbS1kZXYvMEFIU25EZGtTa1EvRTBTVlU3MEpFUUFKXG4gICAgb3BlcmF0b3I6IC9cXHNcXC5cXHN8WytcXC0vKj0uJDw+OiZ8Xj8lI0B+IV17Mix9fFsrXFwtLyo9JDw+OiZ8Xj8lI0B+IV0vLFxuICAgIC8vIEluIEVsbSwgbmVhcmx5IGV2ZXJ5dGhpbmcgaXMgYSB2YXJpYWJsZSwgZG8gbm90IGhpZ2hsaWdodCB0aGVzZS5cbiAgICBodmFyaWFibGU6IC9cXGIoPzpbQS1aXVxcdypcXC4pKlthLXpdXFx3KlxcYi8sXG4gICAgY29uc3RhbnQ6IC9cXGIoPzpbQS1aXVxcdypcXC4pKltBLVpdXFx3KlxcYi8sXG4gICAgcHVuY3R1YXRpb246IC9be31bXFxdfCgpLC46XS9cbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgcmVmcmFjdG9yUnVieSA9IHJlcXVpcmUoJy4vcnVieS5qcycpXG52YXIgcmVmcmFjdG9yTWFya3VwVGVtcGxhdGluZyA9IHJlcXVpcmUoJy4vbWFya3VwLXRlbXBsYXRpbmcuanMnKVxubW9kdWxlLmV4cG9ydHMgPSBlcmJcbmVyYi5kaXNwbGF5TmFtZSA9ICdlcmInXG5lcmIuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBlcmIoUHJpc20pIHtcbiAgUHJpc20ucmVnaXN0ZXIocmVmcmFjdG9yUnVieSlcbiAgUHJpc20ucmVnaXN0ZXIocmVmcmFjdG9yTWFya3VwVGVtcGxhdGluZylcbiAgOyhmdW5jdGlvbiAoUHJpc20pIHtcbiAgICBQcmlzbS5sYW5ndWFnZXMuZXJiID0ge1xuICAgICAgZGVsaW1pdGVyOiB7XG4gICAgICAgIHBhdHRlcm46IC9eKFxccyopPCU9P3wlPig/PVxccyokKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAncHVuY3R1YXRpb24nXG4gICAgICB9LFxuICAgICAgcnVieToge1xuICAgICAgICBwYXR0ZXJuOiAvXFxzKlxcU1tcXHNcXFNdKi8sXG4gICAgICAgIGFsaWFzOiAnbGFuZ3VhZ2UtcnVieScsXG4gICAgICAgIGluc2lkZTogUHJpc20ubGFuZ3VhZ2VzLnJ1YnlcbiAgICAgIH1cbiAgICB9XG4gICAgUHJpc20uaG9va3MuYWRkKCdiZWZvcmUtdG9rZW5pemUnLCBmdW5jdGlvbiAoZW52KSB7XG4gICAgICB2YXIgZXJiUGF0dGVybiA9XG4gICAgICAgIC88JT0/KD86W15cXHJcXG5dfFtcXHJcXG5dKD8hPWJlZ2luKXxbXFxyXFxuXT1iZWdpblxccyg/OlteXFxyXFxuXXxbXFxyXFxuXSg/IT1lbmQpKSpbXFxyXFxuXT1lbmQpKz8lPi9nXG4gICAgICBQcmlzbS5sYW5ndWFnZXNbJ21hcmt1cC10ZW1wbGF0aW5nJ10uYnVpbGRQbGFjZWhvbGRlcnMoXG4gICAgICAgIGVudixcbiAgICAgICAgJ2VyYicsXG4gICAgICAgIGVyYlBhdHRlcm5cbiAgICAgIClcbiAgICB9KVxuICAgIFByaXNtLmhvb2tzLmFkZCgnYWZ0ZXItdG9rZW5pemUnLCBmdW5jdGlvbiAoZW52KSB7XG4gICAgICBQcmlzbS5sYW5ndWFnZXNbJ21hcmt1cC10ZW1wbGF0aW5nJ10udG9rZW5pemVQbGFjZWhvbGRlcnMoZW52LCAnZXJiJylcbiAgICB9KVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVybGFuZ1xuZXJsYW5nLmRpc3BsYXlOYW1lID0gJ2VybGFuZydcbmVybGFuZy5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGVybGFuZyhQcmlzbSkge1xuICBQcmlzbS5sYW5ndWFnZXMuZXJsYW5nID0ge1xuICAgIGNvbW1lbnQ6IC8lLisvLFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogL1wiKD86XFxcXC58W15cXFxcXCJcXHJcXG5dKSpcIi8sXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgICdxdW90ZWQtZnVuY3Rpb24nOiB7XG4gICAgICBwYXR0ZXJuOiAvJyg/OlxcXFwufFteXFxcXCdcXHJcXG5dKSsnKD89XFwoKS8sXG4gICAgICBhbGlhczogJ2Z1bmN0aW9uJ1xuICAgIH0sXG4gICAgJ3F1b3RlZC1hdG9tJzoge1xuICAgICAgcGF0dGVybjogLycoPzpcXFxcLnxbXlxcXFwnXFxyXFxuXSkrJy8sXG4gICAgICBhbGlhczogJ2F0b20nXG4gICAgfSxcbiAgICBib29sZWFuOiAvXFxiKD86ZmFsc2V8dHJ1ZSlcXGIvLFxuICAgIGtleXdvcmQ6IC9cXGIoPzphZnRlcnxjYXNlfGNhdGNofGVuZHxmdW58aWZ8b2Z8cmVjZWl2ZXx0cnl8d2hlbilcXGIvLFxuICAgIG51bWJlcjogW1xuICAgICAgL1xcJFxcXFw/Li8sXG4gICAgICAvXFxiXFxkKyNbYS16MC05XSsvaSxcbiAgICAgIC8oPzpcXGJcXGQrKD86XFwuXFxkKik/fFxcQlxcLlxcZCspKD86ZVsrLV0/XFxkKyk/L2lcbiAgICBdLFxuICAgIGZ1bmN0aW9uOiAvXFxiW2Etel1bXFx3QF0qKD89XFwoKS8sXG4gICAgdmFyaWFibGU6IHtcbiAgICAgIC8vIExvb2stYmVoaW5kIGlzIHVzZWQgdG8gcHJldmVudCB3cm9uZyBoaWdobGlnaHRpbmcgb2YgYXRvbXMgY29udGFpbmluZyBcIkBcIlxuICAgICAgcGF0dGVybjogLyhefFteQF0pKD86XFxifFxcPylbQS1aX11bXFx3QF0qLyxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICB9LFxuICAgIG9wZXJhdG9yOiBbXG4gICAgICAvWz1cXC88PjpdPXw9WzpcXC9dPXxcXCtcXCs/fC0tP3xbPSpcXC8hXXxcXGIoPzphbmR8YW5kYWxzb3xiYW5kfGJub3R8Ym9yfGJzbHxic3J8YnhvcnxkaXZ8bm90fG9yfG9yZWxzZXxyZW18eG9yKVxcYi8sXG4gICAgICB7XG4gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbWF0Y2ggPDxcbiAgICAgICAgcGF0dGVybjogLyhefFtePF0pPCg/ITwpLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtYXRjaCA+PlxuICAgICAgICBwYXR0ZXJuOiAvKF58W14+XSk+KD8hPikvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9XG4gICAgXSxcbiAgICBhdG9tOiAvXFxiW2Etel1bXFx3QF0qLyxcbiAgICBwdW5jdHVhdGlvbjogL1soKVtcXF17fTo7LC4jfF18PDx8Pj4vXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIHJlZnJhY3Rvckx1YSA9IHJlcXVpcmUoJy4vbHVhLmpzJylcbnZhciByZWZyYWN0b3JNYXJrdXBUZW1wbGF0aW5nID0gcmVxdWlyZSgnLi9tYXJrdXAtdGVtcGxhdGluZy5qcycpXG5tb2R1bGUuZXhwb3J0cyA9IGV0bHVhXG5ldGx1YS5kaXNwbGF5TmFtZSA9ICdldGx1YSdcbmV0bHVhLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gZXRsdWEoUHJpc20pIHtcbiAgUHJpc20ucmVnaXN0ZXIocmVmcmFjdG9yTHVhKVxuICBQcmlzbS5yZWdpc3RlcihyZWZyYWN0b3JNYXJrdXBUZW1wbGF0aW5nKVxuICA7KGZ1bmN0aW9uIChQcmlzbSkge1xuICAgIFByaXNtLmxhbmd1YWdlcy5ldGx1YSA9IHtcbiAgICAgIGRlbGltaXRlcjoge1xuICAgICAgICBwYXR0ZXJuOiAvXjwlWy09XT98LT8lPiQvLFxuICAgICAgICBhbGlhczogJ3B1bmN0dWF0aW9uJ1xuICAgICAgfSxcbiAgICAgICdsYW5ndWFnZS1sdWEnOiB7XG4gICAgICAgIHBhdHRlcm46IC9bXFxzXFxTXSsvLFxuICAgICAgICBpbnNpZGU6IFByaXNtLmxhbmd1YWdlcy5sdWFcbiAgICAgIH1cbiAgICB9XG4gICAgUHJpc20uaG9va3MuYWRkKCdiZWZvcmUtdG9rZW5pemUnLCBmdW5jdGlvbiAoZW52KSB7XG4gICAgICB2YXIgcGF0dGVybiA9IC88JVtcXHNcXFNdKz8lPi9nXG4gICAgICBQcmlzbS5sYW5ndWFnZXNbJ21hcmt1cC10ZW1wbGF0aW5nJ10uYnVpbGRQbGFjZWhvbGRlcnMoXG4gICAgICAgIGVudixcbiAgICAgICAgJ2V0bHVhJyxcbiAgICAgICAgcGF0dGVyblxuICAgICAgKVxuICAgIH0pXG4gICAgUHJpc20uaG9va3MuYWRkKCdhZnRlci10b2tlbml6ZScsIGZ1bmN0aW9uIChlbnYpIHtcbiAgICAgIFByaXNtLmxhbmd1YWdlc1snbWFya3VwLXRlbXBsYXRpbmcnXS50b2tlbml6ZVBsYWNlaG9sZGVycyhlbnYsICdldGx1YScpXG4gICAgfSlcbiAgfSkoUHJpc20pXG59XG4iLCIndXNlIHN0cmljdCdcblxubW9kdWxlLmV4cG9ydHMgPSBleGNlbEZvcm11bGFcbmV4Y2VsRm9ybXVsYS5kaXNwbGF5TmFtZSA9ICdleGNlbEZvcm11bGEnXG5leGNlbEZvcm11bGEuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBleGNlbEZvcm11bGEoUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzWydleGNlbC1mb3JtdWxhJ10gPSB7XG4gICAgY29tbWVudDoge1xuICAgICAgcGF0dGVybjogLyhcXGJOXFwoXFxzKilcIig/OlteXCJdfFwiXCIpKlwiKD89XFxzKlxcKSkvaSxcbiAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICBncmVlZHk6IHRydWVcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjogL1wiKD86W15cIl18XCJcIikqXCIoPyFcIikvLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHtcbiAgICAgIC8vIGh0dHBzOi8vd3d3LmFibGViaXRzLmNvbS9vZmZpY2UtYWRkaW5zLWJsb2cvMjAxNS8xMi8wOC9leGNlbC1yZWZlcmVuY2UtYW5vdGhlci1zaGVldC13b3JrYm9vay9cbiAgICAgIC8vIFNhbGVzIUIyXG4gICAgICAvLyAnV2ludGVyIHNhbGVzJyFCMlxuICAgICAgLy8gW1NhbGVzLnhsc3hdSmFuIUIyOkI1XG4gICAgICAvLyBEOlxcUmVwb3J0c1xcW1NhbGVzLnhsc3hdSmFuIUIyOkI1XG4gICAgICAvLyAnW1NhbGVzLnhsc3hdSmFuIHNhbGVzJyFCMjpCNVxuICAgICAgLy8gJ0Q6XFxSZXBvcnRzXFxbU2FsZXMueGxzeF1KYW4gc2FsZXMnIUIyOkI1XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvKD86J1teJ10qJ3woPzpbXlxccygpW1xcXXt9PD4qP1wiJzssJCZdKlxcW1teXlxccygpW1xcXXt9PD4qP1wiJ10rXFxdKT9cXHcrKSEvLFxuICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgYWxpYXM6ICdzdHJpbmcnLFxuICAgICAgaW5zaWRlOiB7XG4gICAgICAgIG9wZXJhdG9yOiAvISQvLFxuICAgICAgICBwdW5jdHVhdGlvbjogLycvLFxuICAgICAgICBzaGVldDoge1xuICAgICAgICAgIHBhdHRlcm46IC9bXltcXF1dKyQvLFxuICAgICAgICAgIGFsaWFzOiAnZnVuY3Rpb24nXG4gICAgICAgIH0sXG4gICAgICAgIGZpbGU6IHtcbiAgICAgICAgICBwYXR0ZXJuOiAvXFxbW15bXFxdXStcXF0kLyxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvW1tcXF1dL1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcGF0aDogL1tcXHNcXFNdKy9cbiAgICAgIH1cbiAgICB9LFxuICAgICdmdW5jdGlvbi1uYW1lJzoge1xuICAgICAgcGF0dGVybjogL1xcYltBLVpdXFx3Kig/PVxcKCkvaSxcbiAgICAgIGFsaWFzOiAna2V5d29yZCdcbiAgICB9LFxuICAgIHJhbmdlOiB7XG4gICAgICBwYXR0ZXJuOlxuICAgICAgICAvXFwkP1xcYig/OltBLVpdK1xcJD9cXGQrOlxcJD9bQS1aXStcXCQ/XFxkK3xbQS1aXSs6XFwkP1tBLVpdK3xcXGQrOlxcJD9cXGQrKVxcYi9pLFxuICAgICAgYWxpYXM6ICdwcm9wZXJ0eScsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgb3BlcmF0b3I6IC86LyxcbiAgICAgICAgY2VsbDogL1xcJD9bQS1aXStcXCQ/XFxkKy9pLFxuICAgICAgICBjb2x1bW46IC9cXCQ/W0EtWl0rL2ksXG4gICAgICAgIHJvdzogL1xcJD9cXGQrL1xuICAgICAgfVxuICAgIH0sXG4gICAgY2VsbDoge1xuICAgICAgLy8gRXhjZWwgaXMgY2FzZSBpbnNlbnNpdGl2ZSwgc28gdGhlIHN0cmluZyBcImZvbzFcIiBjb3VsZCBiZSBlaXRoZXIgYSB2YXJpYWJsZSBvciBhIGNlbGwuXG4gICAgICAvLyBUbyBjb21iYXQgdGhpcywgd2UgbWF0Y2ggY2VsbHMgY2FzZSBpbnNlbnNpdGl2ZSwgaWYgdGhlIGNvbnRhaW4gYXQgbGVhc3Qgb25lIFwiJFwiLCBhbmQgY2FzZSBzZW5zaXRpdmUgb3RoZXJ3aXNlLlxuICAgICAgcGF0dGVybjogL1xcYltBLVpdK1xcZCtcXGJ8XFwkW0EtWmEtel0rXFwkP1xcZCtcXGJ8XFxiW0EtWmEtel0rXFwkXFxkK1xcYi8sXG4gICAgICBhbGlhczogJ3Byb3BlcnR5J1xuICAgIH0sXG4gICAgbnVtYmVyOiAvKD86XFxiXFxkKyg/OlxcLlxcZCspP3xcXEJcXC5cXGQrKSg/OmVbKy1dP1xcZCspP1xcYi9pLFxuICAgIGJvb2xlYW46IC9cXGIoPzpGQUxTRXxUUlVFKVxcYi9pLFxuICAgIG9wZXJhdG9yOiAvWy0rKi9eJT0mLF18PFs9Pl0/fD49Py8sXG4gICAgcHVuY3R1YXRpb246IC9bW1xcXSgpO3t9fF0vXG4gIH1cbiAgUHJpc20ubGFuZ3VhZ2VzWyd4bHN4J10gPSBQcmlzbS5sYW5ndWFnZXNbJ3hscyddID1cbiAgICBQcmlzbS5sYW5ndWFnZXNbJ2V4Y2VsLWZvcm11bGEnXVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yXG5mYWN0b3IuZGlzcGxheU5hbWUgPSAnZmFjdG9yJ1xuZmFjdG9yLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gZmFjdG9yKFByaXNtKSB7XG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgdmFyIGNvbW1lbnRfaW5zaWRlID0ge1xuICAgICAgZnVuY3Rpb246XG4gICAgICAgIC9cXGIoPzpCVUdTP3xGSVgoPzpNRVM/KT98Tk9URVM/fFRPRE9TP3xYWCt8SEFDS1M/fFdBUk4oPzpJTkcpP3xcXD97Mix9fCF7Mix9KVxcYi9cbiAgICB9XG4gICAgdmFyIHN0cmluZ19pbnNpZGUgPSB7XG4gICAgICBudW1iZXI6IC9cXFxcW15cXHMnXXwlXFx3L1xuICAgIH1cbiAgICB2YXIgZmFjdG9yID0ge1xuICAgICAgY29tbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gISBzaW5nbGUtbGluZSBleGNsYW1hdGlvbiBwb2ludCBjb21tZW50cyB3aXRoIHdoaXRlc3BhY2UgYWZ0ZXIvYXJvdW5kIHRoZSAhXG4gICAgICAgICAgcGF0dGVybjogLyhefFxccykoPzohIC4qfCEkKS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICBpbnNpZGU6IGNvbW1lbnRfaW5zaWRlXG4gICAgICAgIH0sXG4gICAgICAgIC8qIGZyb20gYmFzaXMvbXVsdGlsaW5lOiAqL1xuICAgICAgICB7XG4gICAgICAgICAgLy8gLyogY29tbWVudCAqLywgLyogY29tbWVudCovXG4gICAgICAgICAgcGF0dGVybjogLyhefFxccylcXC9cXCpcXHNbXFxzXFxTXSo/XFwqXFwvKD89XFxzfCQpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgICAgICBpbnNpZGU6IGNvbW1lbnRfaW5zaWRlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyAhW1sgY29tbWVudCBdXSAsICFbPT09WyBjb21tZW50XT09PV1cbiAgICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKSFcXFsoPXswLDZ9KVxcW1xcc1tcXHNcXFNdKj9cXF1cXDJcXF0oPz1cXHN8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGluc2lkZTogY29tbWVudF9pbnNpZGVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIG51bWJlcjogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gYmFzaWMgYmFzZSAxMCBpbnRlZ2VycyA5LCAtOVxuICAgICAgICAgIHBhdHRlcm46IC8oXnxcXHMpWystXT9cXGQrKD89XFxzfCQpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBiYXNlIHByZWZpeCBpbnRlZ2VycyAwYjAxMCAwbzcwIDB4YWQgMGQxMCAwWEFEIC0weGE5XG4gICAgICAgICAgcGF0dGVybjogLyhefFxccylbKy1dPzAoPzpiWzAxXSt8b1swLTddK3xkXFxkK3x4W1xcZEEtRl0rKSg/PVxcc3wkKS9pLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIGZyYWN0aW9uYWwgcmF0aW9zIDEvNSAtMS81IGFuZCB0aGUgbGl0ZXJhbCBmbG9hdCBhcHByb3hpbWF0aW9ucyAxLzUuIC0xLzUuXG4gICAgICAgICAgcGF0dGVybjogLyhefFxccylbKy1dP1xcZCtcXC9cXGQrXFwuPyg/PVxcc3wkKS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gcG9zaXRpdmUgbWl4ZWQgbnVtYmVycyAyMysxLzUgKzIzKzEvNVxuICAgICAgICAgIHBhdHRlcm46IC8oXnxcXHMpXFwrP1xcZCtcXCtcXGQrXFwvXFxkKyg/PVxcc3wkKS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gbmVnYXRpdmUgbWl4ZWQgbnVtYmVycyAtMjMtMS81XG4gICAgICAgICAgcGF0dGVybjogLyhefFxccyktXFxkKy1cXGQrXFwvXFxkKyg/PVxcc3wkKS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gYmFzaWMgZGVjaW1hbCBmbG9hdHMgLTAuMDEgMC4gLjAgLjEgLS4xIC0xLiAtMTIuMTMgKzEyLjEzXG4gICAgICAgICAgLy8gYW5kIHNjaWVudGlmaWMgbm90YXRpb24gd2l0aCBiYXNlIDEwIGV4cG9uZW50cyAzZTQgM2UtNCAuM2UtNFxuICAgICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgICAvKF58XFxzKVsrLV0/KD86XFxkKlxcLlxcZCt8XFxkK1xcLlxcZCp8XFxkKykoPzplWystXT9cXGQrKT8oPz1cXHN8JCkvaSxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBOQU4gbGl0ZXJhbCBzeW50YXggTkFOOiA4MDAwMGRlYWRiZWVmLCBOQU46IGFcbiAgICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKU5BTjpcXHMrW1xcZGEtZkEtRl0rKD89XFxzfCQpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvKlxuYmFzZSBwcmVmaXggZmxvYXRzIDB4MS4wcDMgKDguMCkgMGIxLjAxMHAyICg1LjApIDB4MS5wMSAwYjEuMTExMTExMTFwMTExMTEuLi5cblwiVGhlIG5vcm1hbGl6ZWQgaGV4IGZvcm0gwrEweDEuTU1NTU1NTU1NTU1NTVtwUF3CsUVFRUUgYWxsb3dzIGFueSBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYmUgc3BlY2lmaWVkIHByZWNpc2VseS5cblRoZSB2YWx1ZXMgb2YgTU1NTU1NTU1NTU1NTSBhbmQgRUVFRSBtYXAgZGlyZWN0bHkgdG8gdGhlIG1hbnRpc3NhIGFuZCBleHBvbmVudCBmaWVsZHMgb2YgdGhlIGJpbmFyeSBJRUVFIDc1NCByZXByZXNlbnRhdGlvbi5cIlxuPGh0dHBzOi8vZG9jcy5mYWN0b3Jjb2RlLm9yZy9jb250ZW50L2FydGljbGUtc3ludGF4LWZsb2F0cy5odG1sPlxuKi9cbiAgICAgICAgICBwYXR0ZXJuOlxuICAgICAgICAgICAgLyhefFxccylbKy1dPzAoPzpiMVxcLlswMV0qfG8xXFwuWzAtN10qfGQxXFwuXFxkKnx4MVxcLltcXGRBLUZdKilwXFxkKyg/PVxcc3wkKS9pLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIC8vIFIvIHJlZ2V4cD9cXC9cXFxcL1xuICAgICAgcmVnZXhwOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFxccylSXFwvXFxzKD86XFxcXFxcU3xbXlxcXFwvXSkqXFwvKD86W2lkbXNyXSp8W2lkbXNyXSstW2lkbXNyXSspKD89XFxzfCQpLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICdudW1iZXInLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICB2YXJpYWJsZTogL1xcXFxcXFMvLFxuICAgICAgICAgIGtleXdvcmQ6IC9bKz8qXFxbXFxdXiQoKXt9LnxdLyxcbiAgICAgICAgICBvcGVyYXRvcjoge1xuICAgICAgICAgICAgcGF0dGVybjogLyhcXC8pW2lkbXNyXSsoPzotW2lkbXNyXSspPy8sXG4gICAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYm9vbGVhbjoge1xuICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKVt0Zl0oPz1cXHN8JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgLy8gU0JVRlwiIGFzZFwiLCBVUkxcIiA6Ly8uLi5cIiwgUFwiIC9ldGMvXCJcbiAgICAgICdjdXN0b20tc3RyaW5nJzoge1xuICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKVtBLVowLTlcXC1dK1wiXFxzKD86XFxcXFxcU3xbXlwiXFxcXF0pKlwiLyxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBhbGlhczogJ3N0cmluZycsXG4gICAgICAgIGluc2lkZToge1xuICAgICAgICAgIG51bWJlcjogL1xcXFxcXFN8JVxcd3xcXC8vXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnbXVsdGlsaW5lLXN0cmluZyc6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIFNUUklORzogbmFtZSBcXG4gY29udGVudCBcXG4gOyAtPiBDT05TVEFOVDogbmFtZSBcImNvbnRlbnRcIiAoc3ltYm9sKVxuICAgICAgICAgIHBhdHRlcm46IC8oXnxcXHMpU1RSSU5HOlxccytcXFMrKD86XFxufFxcclxcbikuKig/OlxcbnxcXHJcXG4pXFxzKjsoPz1cXHN8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgIG51bWJlcjogc3RyaW5nX2luc2lkZS5udW1iZXIsXG4gICAgICAgICAgICAvLyB0cmFpbGluZyBzZW1pY29sb24gb24gaXRzIG93biBsaW5lXG4gICAgICAgICAgICAnc2VtaWNvbG9uLW9yLXNldGxvY2FsJzoge1xuICAgICAgICAgICAgICBwYXR0ZXJuOiAvKFtcXHJcXG5dWyBcXHRdKik7KD89XFxzfCQpLyxcbiAgICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICAgICAgYWxpYXM6ICdmdW5jdGlvbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBIRVJFRE9DOiBtYXJrZXIgXFxuIGNvbnRlbnQgXFxuIG1hcmtlciA7IC0+IFwiY29udGVudFwiIChpbW1lZGlhdGUpXG4gICAgICAgICAgcGF0dGVybjogLyhefFxccylIRVJFRE9DOlxccytcXFMrKD86XFxufFxcclxcbikuKig/OlxcbnxcXHJcXG4pXFxzKlxcUysoPz1cXHN8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnNpZGU6IHN0cmluZ19pbnNpZGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIFtbIHN0cmluZyBdXSwgWz09WyBzdHJpbmddPT1dXG4gICAgICAgICAgcGF0dGVybjogLyhefFxccylcXFsoPXswLDZ9KVxcW1xcc1tcXHNcXFNdKj9cXF1cXDJcXF0oPz1cXHN8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnNpZGU6IHN0cmluZ19pbnNpZGVcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgICdzcGVjaWFsLXVzaW5nJzoge1xuICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKVVTSU5HOig/Olxcc1xcUyspKig/PVxccys7KD86XFxzfCQpKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnZnVuY3Rpb24nLFxuICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAvLyB0aGlzIGlzIGVzc2VudGlhbGx5IGEgcmVnZXggZm9yIHZvY2FiIG5hbWVzLCB3aGljaCBpIGRvbid0IHdhbnQgdG8gc3BlY2lmeVxuICAgICAgICAgIC8vIGJ1dCB0aGUgVVNJTkc6IGdldHMgcGlja2VkIHVwIGFzIGEgdm9jYWIgbmFtZVxuICAgICAgICAgIHN0cmluZzoge1xuICAgICAgICAgICAgcGF0dGVybjogLyhcXHMpW146XFxzXSsvLFxuICAgICAgICAgICAgbG9va2JlaGluZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8qIHRoaXMgZGVzY3JpcHRpb24gb2Ygc3RhY2sgZWZmZWN0IGxpdGVyYWwgc3ludGF4IGlzIG5vdCBjb21wbGV0ZSBhbmQgbm90IGFzIHNwZWNpZmljIGFzIHRoZW9yZXRpY2FsbHkgcG9zc2libGVcbnRyeWluZyB0byBkbyBiZXR0ZXIgaXMgbW9yZSB3b3JrIGFuZCByZWdleC1jb21wdXRhdGlvbi10aW1lIHRoYW4gaXQncyB3b3J0aCB0aG91Z2guXG4tIHdlJ2QgbGlrZSB0byBoYXZlIHRoZSBcImRlbGltaXRlclwiIHBhcnRzIG9mIHRoZSBzdGFjayBlZmZlY3QgWyAoLCAtLSwgYW5kICkgXSBiZSBhIGRpZmZlcmVudCAobGVzcy1pbXBvcnRhbnQgb3IgY29tbWVudC1saWtlKSBjb2xvdXIgdG8gdGhlIHN0YWNrIGVmZmVjdCBjb250ZW50c1xuLSB3ZSdkIGxpa2UgaWYgbmVzdGVkIHN0YWNrIGVmZmVjdHMgd2VyZSB0cmVhdGVkIGFzIHN1Y2ggcmF0aGVyIHRoYW4ganVzdCBhcHBlYXJpbmcgZmxhdCAod2l0aCBgaW5zaWRlYClcbi0gd2UnZCBsaWtlIGlmIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgbmFtZSBjb252ZW50aW9ucyB3ZXJlIHJlY29nbmlzZWQgc3BlY2lmaWNhbGx5Olxuc3BlY2lhbCByb3cgdmFyaWFibGVzID0gLi5hIGIuLlxudHlwZSBhbmQgc3RhY2sgZWZmZWN0IGFubm90YXRpb25zIGVuZCB3aXRoIGEgY29sb24gPSAoIHF1b3Q6ICggYTogKCAtLSApIC0tIGIgKSAtLSB4ICksICggeDogbnVtYmVyIC0tIClcbndvcmQgdGhyb3dzIHVuY29uZGl0aW9uYWwgZXJyb3IgPSAqXG5hbnkgb3RoZXIgd29yZC1saWtlIHZhcmlhYmxlIG5hbWUgPSBhID8gcScgZXRjXG5odHRwczovL2RvY3MuZmFjdG9yY29kZS5vcmcvY29udGVudC9hcnRpY2xlLWVmZmVjdHMuaHRtbFxudGhlc2UgYXJlIHByZXR0eSBjb21wbGljYXRlZCB0byBoaWdobGlnaHQgcHJvcGVybHkgd2l0aG91dCBhIHJlYWwgcGFyc2VyLCBhbmQgdGhlcmVmb3JlIG91dCBvZiBzY29wZVxudGhlIG9sZCBwYXR0ZXJuLCB3aGljaCBtYXkgYmUgbGF0ZXIgdXNlZnVsLCB3YXM6IChefFxccykoPzpjYWxsfGV4ZWN1dGV8ZXZhbCk/XFwoKD86XFxzK1teXCJcXHJcXG5cXHQgXVxcUyopKj9cXHMrLS0oPzpcXHMrW15cIlxcblxcdCBdXFxTKikqP1xccytcXCkoPz1cXHN8JClcbiovXG4gICAgICAvLyBjdXJyZW50IHNvbHV0aW9uIGlzIG5vdCBncmVhdFxuICAgICAgJ3N0YWNrLWVmZmVjdC1kZWxpbWl0ZXInOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBvcGVuaW5nIHBhcmVudGhlc2lzXG4gICAgICAgICAgcGF0dGVybjogLyhefFxccykoPzpjYWxsfGV2YWx8ZXhlY3V0ZSk/XFwoKD89XFxzKS8sXG4gICAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgICBhbGlhczogJ29wZXJhdG9yJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLy8gbWlkZGxlIC0tXG4gICAgICAgICAgcGF0dGVybjogLyhcXHMpLS0oPz1cXHMpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnb3BlcmF0b3InXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBjbG9zaW5nIHBhcmVudGhlc2lzXG4gICAgICAgICAgcGF0dGVybjogLyhcXHMpXFwpKD89XFxzfCQpLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICAgIGFsaWFzOiAnb3BlcmF0b3InXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBjb21iaW5hdG9yczoge1xuICAgICAgICBwYXR0ZXJuOiBudWxsLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgICB9LFxuICAgICAgJ2tlcm5lbC1idWlsdGluJzoge1xuICAgICAgICBwYXR0ZXJuOiBudWxsLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ3ZhcmlhYmxlJ1xuICAgICAgfSxcbiAgICAgICdzZXF1ZW5jZXMtYnVpbHRpbic6IHtcbiAgICAgICAgcGF0dGVybjogbnVsbCxcbiAgICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgICAgYWxpYXM6ICd2YXJpYWJsZSdcbiAgICAgIH0sXG4gICAgICAnbWF0aC1idWlsdGluJzoge1xuICAgICAgICBwYXR0ZXJuOiBudWxsLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ3ZhcmlhYmxlJ1xuICAgICAgfSxcbiAgICAgICdjb25zdHJ1Y3Rvci13b3JkJzoge1xuICAgICAgICAvLyA8YXJyYXk+IGJ1dCBub3QgPD0+XG4gICAgICAgIHBhdHRlcm46IC8oXnxcXHMpPCg/IT0rPnwtKz4pXFxTKz4oPz1cXHN8JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgICB9LFxuICAgICAgJ290aGVyLWJ1aWx0aW4tc3ludGF4Jzoge1xuICAgICAgICBwYXR0ZXJuOiBudWxsLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ29wZXJhdG9yJ1xuICAgICAgfSxcbiAgICAgIC8qXG5mdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIHdvcmQgbmFtaW5nIGNvbnZlbnRpb25zOiAodGhlIGNvbnZlbnRpb24gYXBwZWFycyBvdXRzaWRlIG9mIHRoZSBbYnJhY2tldHNdKVxuc2V0LVt4XVxuY2hhbmdlLVt4XVxud2l0aC1beF1cbm5ldy1beF1cbj5bc3RyaW5nXVxuW2Jhc2VdPlxuW3N0cmluZ10+W251bWJlcl1cbitbc3ltYm9sXStcbltib29sZWFuLXdvcmRdP1xuP1tvZl1cbltzbG90LXJlYWRlcl0+PlxuPj5bc2xvdC1zZXR0ZXJdXG5bc2xvdC13cml0ZXJdPDxcbihbaW1wbGVtZW50YXRpb24tZGV0YWlsXSlcblttdXRhdGVyXSFcblt2YXJpYW50XSpcbltwcmV0dHlwcmludF0uXG4kW2hlbHAtbWFya3VwXVxuPGNvbnN0cnVjdG9ycz4sIFNZTlRBWDosIGV0YyBhcmUgc3VwcG9ydGVkIGJ5IHRoZWlyIG93biBwYXR0ZXJucy5cbmB3aXRoYCBhbmQgYG5ld2AgZnJvbSBga2VybmVsYCBhcmUgdGhlaXIgb3duIGJ1aWx0aW5zLlxuc2VlIDxodHRwczovL2RvY3MuZmFjdG9yY29kZS5vcmcvY29udGVudC9hcnRpY2xlLWNvbnZlbnRpb25zLmh0bWw+XG4qL1xuICAgICAgJ2NvbnZlbnRpb25hbGx5LW5hbWVkLXdvcmQnOiB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFxccykoPyFcIikoPzooPzpjaGFuZ2V8bmV3fHNldHx3aXRoKS1cXFMrfFxcJFxcUyt8PltePlxcc10rfFteOj5cXHNdKz58W14+XFxzXSs+W14+XFxzXSt8XFwrW14rXFxzXStcXCt8W14/XFxzXStcXD98XFw/W14/XFxzXSt8W14+XFxzXSs+Pnw+PltePlxcc10rfFtePFxcc10rPDx8XFwoW14oKVxcc10rXFwpfFteIVxcc10rIXxbXipcXHNdXFxTKlxcKnxbXi5cXHNdXFxTKlxcLikoPz1cXHN8JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2tleXdvcmQnXG4gICAgICB9LFxuICAgICAgJ2NvbG9uLXN5bnRheCc6IHtcbiAgICAgICAgcGF0dGVybjogLyhefFxccykoPzpbQS1aMC05XFwtXSsjPyk/OnsxLDJ9XFxzKyg/OjtcXFMrfCg/ITspXFxTKykoPz1cXHN8JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBncmVlZHk6IHRydWUsXG4gICAgICAgIGFsaWFzOiAnZnVuY3Rpb24nXG4gICAgICB9LFxuICAgICAgJ3NlbWljb2xvbi1vci1zZXRsb2NhbCc6IHtcbiAgICAgICAgcGF0dGVybjogLyhcXHMpKD86O3w6PikoPz1cXHN8JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlLFxuICAgICAgICBhbGlhczogJ2Z1bmN0aW9uJ1xuICAgICAgfSxcbiAgICAgIC8vIGRvIG5vdCBoaWdobGlnaHQgbGVhZGluZyB9IG9yIHRyYWlsaW5nIFh7IGF0IHRoZSBiZWdpbi9lbmQgb2YgdGhlIGZpbGUgYXMgaXQncyBpbnZhbGlkIHN5bnRheFxuICAgICAgJ2N1cmx5LWJyYWNlLWxpdGVyYWwtZGVsaW1pdGVyJzogW1xuICAgICAgICB7XG4gICAgICAgICAgLy8gb3BlbmluZ1xuICAgICAgICAgIHBhdHRlcm46IC8oXnxcXHMpW2Etel0qXFx7KD89XFxzKS9pLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICdvcGVyYXRvcidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIGNsb3NpbmdcbiAgICAgICAgICBwYXR0ZXJuOiAvKFxccylcXH0oPz1cXHN8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICdvcGVyYXRvcidcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIC8vIGRvIG5vdCBoaWdobGlnaHQgbGVhZGluZyBdIG9yIHRyYWlsaW5nIFsgYXQgdGhlIGJlZ2luL2VuZCBvZiB0aGUgZmlsZSBhcyBpdCdzIGludmFsaWQgc3ludGF4XG4gICAgICAncXVvdGF0aW9uLWRlbGltaXRlcic6IFtcbiAgICAgICAge1xuICAgICAgICAgIC8vIG9wZW5pbmdcbiAgICAgICAgICBwYXR0ZXJuOiAvKF58XFxzKVxcWyg/PVxccykvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICdvcGVyYXRvcidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIGNsb3NpbmdcbiAgICAgICAgICBwYXR0ZXJuOiAvKFxccylcXF0oPz1cXHN8JCkvLFxuICAgICAgICAgIGxvb2tiZWhpbmQ6IHRydWUsXG4gICAgICAgICAgYWxpYXM6ICdvcGVyYXRvcidcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgICdub3JtYWwtd29yZCc6IHtcbiAgICAgICAgcGF0dGVybjogLyhefFxccylbXlwiXFxzXVxcUyooPz1cXHN8JCkvLFxuICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAgLypcbmJhc2ljIGZpcnN0LWNsYXNzIHN0cmluZyBcImFcIlxud2l0aCBlc2NhcGVkIGRvdWJsZS1xdW90ZSBcImFcXFwiXCJcbmVzY2FwZWQgYmFja3NsYXNoIFwiXFxcXFwiXG5hbmQgZ2VuZXJhbCBlc2NhcGVzIHNpbmNlIEZhY3RvciBoYXMgc28gbWFueSBcIlxcTlwiXG5zeW50YXggdGhhdCB3b3JrcyBpbiB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIHRoYXQgaXNuJ3QgZnVsbHlcbnN1cHBvcnRlZCBiZWNhdXNlIGl0J3MgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsOlxuXCJzdHJpbmcgMVwiXCJzdHJpbmcgMlwiIC0+IDIgc3RyaW5ncyAod29ya3MgYW55d2F5KVxuXCJzdHJpbmdcIjUgLT4gc3RyaW5nLCA1XG5cInN0cmluZ1wiWyBdIC0+IHN0cmluZywgcXVvdGF0aW9uXG57IFwiYVwifSAtPiBhcnJheTxzdHJpbmc+XG50aGUgcmVzdCBvZiB0aG9zZSBleGFtcGxlcyBhbGwgcHJvcGVybHkgcmVjb2duaXNlIHRoZSBzdHJpbmcsIGJ1dCBub3RcbnRoZSBvdGhlciBvYmplY3QgKG51bWJlciwgcXVvdGF0aW9uLCBldGMpXG50aGlzIGlzIGZpbmUgZm9yIGEgcmVnZXgtb25seSBpbXBsZW1lbnRhdGlvbi5cbiovXG4gICAgICBzdHJpbmc6IHtcbiAgICAgICAgcGF0dGVybjogL1wiKD86XFxcXFxcU3xbXlwiXFxcXF0pKlwiLyxcbiAgICAgICAgZ3JlZWR5OiB0cnVlLFxuICAgICAgICBpbnNpZGU6IHN0cmluZ19pbnNpZGVcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGVzY2FwZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgIHJldHVybiAoc3RyICsgJycpLnJlcGxhY2UoLyhbLj8qK1xcXiRcXFtcXF1cXFxcKCl7fXxcXC1dKS9nLCAnXFxcXCQxJylcbiAgICB9XG4gICAgdmFyIGFyclRvV29yZHNSZWdFeHAgPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ0V4cCgnKF58XFxcXHMpKD86JyArIGFyci5tYXAoZXNjYXBlKS5qb2luKCd8JykgKyAnKSg/PVxcXFxzfCQpJylcbiAgICB9XG4gICAgdmFyIGJ1aWx0aW5zID0ge1xuICAgICAgJ2tlcm5lbC1idWlsdGluJzogW1xuICAgICAgICAnb3InLFxuICAgICAgICAnMm5pcGQnLFxuICAgICAgICAnNGRyb3AnLFxuICAgICAgICAndHVjaycsXG4gICAgICAgICd3cmFwcGVyJyxcbiAgICAgICAgJ25pcCcsXG4gICAgICAgICd3cmFwcGVyPycsXG4gICAgICAgICdjYWxsc3RhY2s+YXJyYXknLFxuICAgICAgICAnZGllJyxcbiAgICAgICAgJ2R1cGQnLFxuICAgICAgICAnY2FsbHN0YWNrJyxcbiAgICAgICAgJ2NhbGxzdGFjaz8nLFxuICAgICAgICAnM2R1cCcsXG4gICAgICAgICdoYXNoY29kZScsXG4gICAgICAgICdwaWNrJyxcbiAgICAgICAgJzRuaXAnLFxuICAgICAgICAnYnVpbGQnLFxuICAgICAgICAnPmJvb2xlYW4nLFxuICAgICAgICAnbmlwZCcsXG4gICAgICAgICdjbG9uZScsXG4gICAgICAgICc1bmlwJyxcbiAgICAgICAgJ2VxPycsXG4gICAgICAgICc/JyxcbiAgICAgICAgJz0nLFxuICAgICAgICAnc3dhcGQnLFxuICAgICAgICAnMm92ZXInLFxuICAgICAgICAnY2xlYXInLFxuICAgICAgICAnMmR1cCcsXG4gICAgICAgICdnZXQtcmV0YWluc3RhY2snLFxuICAgICAgICAnbm90JyxcbiAgICAgICAgJ3R1cGxlPycsXG4gICAgICAgICdkdXAnLFxuICAgICAgICAnM25pcGQnLFxuICAgICAgICAnY2FsbCcsXG4gICAgICAgICctcm90ZCcsXG4gICAgICAgICdvYmplY3QnLFxuICAgICAgICAnZHJvcCcsXG4gICAgICAgICdhc3NlcnQ9JyxcbiAgICAgICAgJ2Fzc2VydD8nLFxuICAgICAgICAnLXJvdCcsXG4gICAgICAgICdleGVjdXRlJyxcbiAgICAgICAgJ2JvYScsXG4gICAgICAgICdnZXQtY2FsbHN0YWNrJyxcbiAgICAgICAgJ2N1cnJpZWQ/JyxcbiAgICAgICAgJzNkcm9wJyxcbiAgICAgICAgJ3BpY2tkJyxcbiAgICAgICAgJ292ZXJkJyxcbiAgICAgICAgJ292ZXInLFxuICAgICAgICAncm9sbCcsXG4gICAgICAgICczbmlwJyxcbiAgICAgICAgJ3N3YXAnLFxuICAgICAgICAnYW5kJyxcbiAgICAgICAgJzJuaXAnLFxuICAgICAgICAncm90ZCcsXG4gICAgICAgICd0aHJvdycsXG4gICAgICAgICcoY2xvbmUpJyxcbiAgICAgICAgJ2hhc2hjb2RlKicsXG4gICAgICAgICdzcGluJyxcbiAgICAgICAgJ3JlYWNoJyxcbiAgICAgICAgJzRkdXAnLFxuICAgICAgICAnZXF1YWw/JyxcbiAgICAgICAgJ2dldC1kYXRhc3RhY2snLFxuICAgICAgICAnYXNzZXJ0JyxcbiAgICAgICAgJzJkcm9wJyxcbiAgICAgICAgJzx3cmFwcGVyPicsXG4gICAgICAgICdib29sZWFuPycsXG4gICAgICAgICdpZGVudGl0eS1oYXNoY29kZScsXG4gICAgICAgICdpZGVudGl0eS10dXBsZT8nLFxuICAgICAgICAnbnVsbCcsXG4gICAgICAgICdjb21wb3NlZD8nLFxuICAgICAgICAnbmV3JyxcbiAgICAgICAgJzVkcm9wJyxcbiAgICAgICAgJ3JvdCcsXG4gICAgICAgICctcm9sbCcsXG4gICAgICAgICd4b3InLFxuICAgICAgICAnaWRlbnRpdHktdHVwbGUnLFxuICAgICAgICAnYm9vbGVhbidcbiAgICAgIF0sXG4gICAgICAnb3RoZXItYnVpbHRpbi1zeW50YXgnOiBbXG4gICAgICAgIC8vIHN5bnRheFxuICAgICAgICAnPT09PT09PScsXG4gICAgICAgICdyZWN1cnNpdmUnLFxuICAgICAgICAnZmx1c2hhYmxlJyxcbiAgICAgICAgJz4+JyxcbiAgICAgICAgJzw8PDw8PCcsXG4gICAgICAgICdNXFxcXCcsXG4gICAgICAgICdCJyxcbiAgICAgICAgJ1BSSVZBVEU+JyxcbiAgICAgICAgJ1xcXFwnLFxuICAgICAgICAnPT09PT09JyxcbiAgICAgICAgJ2ZpbmFsJyxcbiAgICAgICAgJ2lubGluZScsXG4gICAgICAgICdkZWxpbWl0ZXInLFxuICAgICAgICAnZGVwcmVjYXRlZCcsXG4gICAgICAgICc8UFJJVkFURScsXG4gICAgICAgICc+Pj4+Pj4nLFxuICAgICAgICAnPDw8PDw8PCcsXG4gICAgICAgICdwYXJzZS1jb21wbGV4JyxcbiAgICAgICAgJ21hbGZvcm1lZC1jb21wbGV4JyxcbiAgICAgICAgJ3JlYWQtb25seScsXG4gICAgICAgICc+Pj4+Pj4+JyxcbiAgICAgICAgJ2NhbGwtbmV4dC1tZXRob2QnLFxuICAgICAgICAnPDwnLFxuICAgICAgICAnZm9sZGFibGUnLCAvLyBsaXRlcmFsc1xuICAgICAgICAnJCcsXG4gICAgICAgICckWycsXG4gICAgICAgICckeydcbiAgICAgIF0sXG4gICAgICAnc2VxdWVuY2VzLWJ1aWx0aW4nOiBbXG4gICAgICAgICdtZW1iZXItZXE/JyxcbiAgICAgICAgJ21pc21hdGNoJyxcbiAgICAgICAgJ2FwcGVuZCcsXG4gICAgICAgICdhc3NlcnQtc2VxdWVuY2U9JyxcbiAgICAgICAgJ2xvbmdlcicsXG4gICAgICAgICdyZXBldGl0aW9uJyxcbiAgICAgICAgJ2Nsb25lLWxpa2UnLFxuICAgICAgICAnM3NlcXVlbmNlJyxcbiAgICAgICAgJ2Fzc2VydC1zZXF1ZW5jZT8nLFxuICAgICAgICAnbGFzdC1pbmRleC1mcm9tJyxcbiAgICAgICAgJ3JldmVyc2VkJyxcbiAgICAgICAgJ2luZGV4LWZyb20nLFxuICAgICAgICAnY3V0KicsXG4gICAgICAgICdwYWQtdGFpbCcsXG4gICAgICAgICdqb2luLWFzJyxcbiAgICAgICAgJ3JlbW92ZS1lcSEnLFxuICAgICAgICAnY29uY2F0LWFzJyxcbiAgICAgICAgJ2J1dC1sYXN0JyxcbiAgICAgICAgJ3NuaXAnLFxuICAgICAgICAnbnRocycsXG4gICAgICAgICdudGgnLFxuICAgICAgICAnc2VxdWVuY2UnLFxuICAgICAgICAnbG9uZ2VzdCcsXG4gICAgICAgICdzbGljZT8nLFxuICAgICAgICAnPHNsaWNlPicsXG4gICAgICAgICdyZW1vdmUtbnRoJyxcbiAgICAgICAgJ3RhaWwtc2xpY2UnLFxuICAgICAgICAnZW1wdHk/JyxcbiAgICAgICAgJ3RhaWwqJyxcbiAgICAgICAgJ21lbWJlcj8nLFxuICAgICAgICAndmlydHVhbC1zZXF1ZW5jZT8nLFxuICAgICAgICAnc2V0LWxlbmd0aCcsXG4gICAgICAgICdkcm9wLXByZWZpeCcsXG4gICAgICAgICdpb3RhJyxcbiAgICAgICAgJ3VuY2xpcCcsXG4gICAgICAgICdib3VuZHMtZXJyb3I/JyxcbiAgICAgICAgJ3VuY2xpcC1sYXN0LXNsaWNlJyxcbiAgICAgICAgJ25vbi1uZWdhdGl2ZS1pbnRlZ2VyLWV4cGVjdGVkJyxcbiAgICAgICAgJ25vbi1uZWdhdGl2ZS1pbnRlZ2VyLWV4cGVjdGVkPycsXG4gICAgICAgICdtaWRwb2ludEAnLFxuICAgICAgICAnbG9uZ2VyPycsXG4gICAgICAgICc/c2V0LW50aCcsXG4gICAgICAgICc/Zmlyc3QnLFxuICAgICAgICAncmVzdC1zbGljZScsXG4gICAgICAgICdwcmVwZW5kLWFzJyxcbiAgICAgICAgJ3ByZXBlbmQnLFxuICAgICAgICAnZm91cnRoJyxcbiAgICAgICAgJ3NpZnQnLFxuICAgICAgICAnc3Vic2VxLXN0YXJ0JyxcbiAgICAgICAgJ25ldy1zZXF1ZW5jZScsXG4gICAgICAgICc/bGFzdCcsXG4gICAgICAgICdsaWtlJyxcbiAgICAgICAgJ2ZpcnN0NCcsXG4gICAgICAgICcxc2VxdWVuY2UnLFxuICAgICAgICAncmV2ZXJzZScsXG4gICAgICAgICdzbGljZScsXG4gICAgICAgICd2aXJ0dWFsQCcsXG4gICAgICAgICdyZXBldGl0aW9uPycsXG4gICAgICAgICdzZXQtbGFzdCcsXG4gICAgICAgICdpbmRleCcsXG4gICAgICAgICc0c2VxdWVuY2UnLFxuICAgICAgICAnbWF4LWxlbmd0aCcsXG4gICAgICAgICdzZXQtc2Vjb25kJyxcbiAgICAgICAgJ2ltbXV0YWJsZS1zZXF1ZW5jZScsXG4gICAgICAgICdmaXJzdDInLFxuICAgICAgICAnZmlyc3QzJyxcbiAgICAgICAgJ3N1cHJlbXVtJyxcbiAgICAgICAgJ3VuY2xpcC1zbGljZScsXG4gICAgICAgICdzdWZmaXghJyxcbiAgICAgICAgJ2luc2VydC1udGgnLFxuICAgICAgICAndGFpbCcsXG4gICAgICAgICczYXBwZW5kJyxcbiAgICAgICAgJ3Nob3J0JyxcbiAgICAgICAgJ3N1ZmZpeCcsXG4gICAgICAgICdjb25jYXQnLFxuICAgICAgICAnZmxpcCcsXG4gICAgICAgICdpbW11dGFibGU/JyxcbiAgICAgICAgJ3JldmVyc2UhJyxcbiAgICAgICAgJzJzZXF1ZW5jZScsXG4gICAgICAgICdzdW0nLFxuICAgICAgICAnZGVsZXRlLWFsbCcsXG4gICAgICAgICdpbmRpY2VzJyxcbiAgICAgICAgJ3NuaXAtc2xpY2UnLFxuICAgICAgICAnPGlvdGE+JyxcbiAgICAgICAgJ2NoZWNrLXNsaWNlJyxcbiAgICAgICAgJ3NlcXVlbmNlPycsXG4gICAgICAgICdoZWFkJyxcbiAgICAgICAgJ2FwcGVuZC1hcycsXG4gICAgICAgICdoYWx2ZXMnLFxuICAgICAgICAnc2VxdWVuY2U9JyxcbiAgICAgICAgJ2NvbGxhcHNlLXNsaWNlJyxcbiAgICAgICAgJz9zZWNvbmQnLFxuICAgICAgICAnc2xpY2UtZXJyb3I/JyxcbiAgICAgICAgJ3Byb2R1Y3QnLFxuICAgICAgICAnYm91bmRzLWNoZWNrPycsXG4gICAgICAgICdib3VuZHMtY2hlY2snLFxuICAgICAgICAnaW1tdXRhYmxlJyxcbiAgICAgICAgJ3ZpcnR1YWwtZXhlbXBsYXInLFxuICAgICAgICAnaGFydmVzdCcsXG4gICAgICAgICdyZW1vdmUnLFxuICAgICAgICAncGFkLWhlYWQnLFxuICAgICAgICAnbGFzdCcsXG4gICAgICAgICdzZXQtZm91cnRoJyxcbiAgICAgICAgJ2NhcnRlc2lhbi1wcm9kdWN0JyxcbiAgICAgICAgJ3JlbW92ZS1lcScsXG4gICAgICAgICdzaG9ydGVuJyxcbiAgICAgICAgJ3Nob3J0ZXInLFxuICAgICAgICAncmV2ZXJzZWQ/JyxcbiAgICAgICAgJ3Nob3J0ZXI/JyxcbiAgICAgICAgJ3Nob3J0ZXN0JyxcbiAgICAgICAgJ2hlYWQtc2xpY2UnLFxuICAgICAgICAncG9wKicsXG4gICAgICAgICd0YWlsLXNsaWNlKicsXG4gICAgICAgICdidXQtbGFzdC1zbGljZScsXG4gICAgICAgICdpb3RhPycsXG4gICAgICAgICdhcHBlbmQhJyxcbiAgICAgICAgJ2N1dC1zbGljZScsXG4gICAgICAgICduZXctcmVzaXphYmxlJyxcbiAgICAgICAgJ2hlYWQtc2xpY2UqJyxcbiAgICAgICAgJ3NlcXVlbmNlLWhhc2hjb2RlJyxcbiAgICAgICAgJ3BvcCcsXG4gICAgICAgICdzZXQtbnRoJyxcbiAgICAgICAgJz9udGgnLFxuICAgICAgICAnc2Vjb25kJyxcbiAgICAgICAgJ2pvaW4nLFxuICAgICAgICAnaW1tdXRhYmxlLXNlcXVlbmNlPycsXG4gICAgICAgICc8cmV2ZXJzZWQ+JyxcbiAgICAgICAgJzNhcHBlbmQtYXMnLFxuICAgICAgICAndmlydHVhbC1zZXF1ZW5jZScsXG4gICAgICAgICdzdWJzZXE/JyxcbiAgICAgICAgJ3JlbW92ZS1udGghJyxcbiAgICAgICAgJ2xlbmd0aCcsXG4gICAgICAgICdsYXN0LWluZGV4JyxcbiAgICAgICAgJ2xlbmd0aGVuJyxcbiAgICAgICAgJ2Fzc2VydC1zZXF1ZW5jZScsXG4gICAgICAgICdjb3B5JyxcbiAgICAgICAgJ21vdmUnLFxuICAgICAgICAndGhpcmQnLFxuICAgICAgICAnZmlyc3QnLFxuICAgICAgICAndGFpbD8nLFxuICAgICAgICAnc2V0LWZpcnN0JyxcbiAgICAgICAgJ3ByZWZpeCcsXG4gICAgICAgICdib3VuZHMtZXJyb3InLFxuICAgICAgICAnPHJlcGV0aXRpb24+JyxcbiAgICAgICAgJ2V4Y2hhbmdlJyxcbiAgICAgICAgJ3N1cnJvdW5kJyxcbiAgICAgICAgJ2N1dCcsXG4gICAgICAgICdtaW4tbGVuZ3RoJyxcbiAgICAgICAgJ3NldC10aGlyZCcsXG4gICAgICAgICdwdXNoLWFsbCcsXG4gICAgICAgICdoZWFkPycsXG4gICAgICAgICdzdWJzZXEtc3RhcnQtZnJvbScsXG4gICAgICAgICdkZWxldGUtc2xpY2UnLFxuICAgICAgICAncmVzdCcsXG4gICAgICAgICdzdW0tbGVuZ3RocycsXG4gICAgICAgICdoZWFkKicsXG4gICAgICAgICdpbmZpbXVtJyxcbiAgICAgICAgJ3JlbW92ZSEnLFxuICAgICAgICAnZ2x1ZScsXG4gICAgICAgICdzbGljZS1lcnJvcicsXG4gICAgICAgICdzdWJzZXEnLFxuICAgICAgICAncHVzaCcsXG4gICAgICAgICdyZXBsYWNlLXNsaWNlJyxcbiAgICAgICAgJ3N1YnNlcS1hcycsXG4gICAgICAgICd1bmNsaXAtbGFzdCdcbiAgICAgIF0sXG4gICAgICAnbWF0aC1idWlsdGluJzogW1xuICAgICAgICAnbnVtYmVyPScsXG4gICAgICAgICduZXh0LXBvd2VyLW9mLTInLFxuICAgICAgICAnPzErJyxcbiAgICAgICAgJ2ZwLXNwZWNpYWw/JyxcbiAgICAgICAgJ2ltYWdpbmFyeS1wYXJ0JyxcbiAgICAgICAgJ2Zsb2F0PmJpdHMnLFxuICAgICAgICAnbnVtYmVyPycsXG4gICAgICAgICdmcC1pbmZpbml0eT8nLFxuICAgICAgICAnYmlnbnVtPycsXG4gICAgICAgICdmcC1zbmFuPycsXG4gICAgICAgICdkZW5vbWluYXRvcicsXG4gICAgICAgICdnY2QnLFxuICAgICAgICAnKicsXG4gICAgICAgICcrJyxcbiAgICAgICAgJ2ZwLWJpdHdpc2U9JyxcbiAgICAgICAgJy0nLFxuICAgICAgICAndT49JyxcbiAgICAgICAgJy8nLFxuICAgICAgICAnPj0nLFxuICAgICAgICAnYml0YW5kJyxcbiAgICAgICAgJ3Bvd2VyLW9mLTI/JyxcbiAgICAgICAgJ2xvZzItZXhwZWN0cy1wb3NpdGl2ZScsXG4gICAgICAgICduZWc/JyxcbiAgICAgICAgJzwnLFxuICAgICAgICAnbG9nMicsXG4gICAgICAgICc+JyxcbiAgICAgICAgJ2ludGVnZXI/JyxcbiAgICAgICAgJ251bWJlcicsXG4gICAgICAgICdiaXRzPmRvdWJsZScsXG4gICAgICAgICcyLycsXG4gICAgICAgICd6ZXJvPycsXG4gICAgICAgICdiaXRzPmZsb2F0JyxcbiAgICAgICAgJ2Zsb2F0PycsXG4gICAgICAgICdzaGlmdCcsXG4gICAgICAgICdyYXRpbz8nLFxuICAgICAgICAncmVjdD4nLFxuICAgICAgICAnZXZlbj8nLFxuICAgICAgICAncmF0aW8nLFxuICAgICAgICAnZnAtc2lnbicsXG4gICAgICAgICdiaXRub3QnLFxuICAgICAgICAnPmZpeG51bScsXG4gICAgICAgICdjb21wbGV4PycsXG4gICAgICAgICcvaScsXG4gICAgICAgICdpbnRlZ2VyPmZpeG51bScsXG4gICAgICAgICcvZicsXG4gICAgICAgICdzZ24nLFxuICAgICAgICAnPmJpZ251bScsXG4gICAgICAgICduZXh0LWZsb2F0JyxcbiAgICAgICAgJ3U8JyxcbiAgICAgICAgJ3U+JyxcbiAgICAgICAgJ21vZCcsXG4gICAgICAgICdyZWNpcCcsXG4gICAgICAgICdyYXRpb25hbCcsXG4gICAgICAgICc+ZmxvYXQnLFxuICAgICAgICAnMl4nLFxuICAgICAgICAnaW50ZWdlcicsXG4gICAgICAgICdmaXhudW0/JyxcbiAgICAgICAgJ25lZycsXG4gICAgICAgICdmaXhudW0nLFxuICAgICAgICAnc3EnLFxuICAgICAgICAnYmlnbnVtJyxcbiAgICAgICAgJz5yZWN0JyxcbiAgICAgICAgJ2JpdD8nLFxuICAgICAgICAnZnAtcW5hbj8nLFxuICAgICAgICAnc2ltcGxlLWdjZCcsXG4gICAgICAgICdjb21wbGV4JyxcbiAgICAgICAgJzxmcC1uYW4+JyxcbiAgICAgICAgJ3JlYWwnLFxuICAgICAgICAnPmZyYWN0aW9uJyxcbiAgICAgICAgJ2RvdWJsZT5iaXRzJyxcbiAgICAgICAgJ2JpdG9yJyxcbiAgICAgICAgJ3JlbScsXG4gICAgICAgICdmcC1uYW4tcGF5bG9hZCcsXG4gICAgICAgICdyZWFsLXBhcnQnLFxuICAgICAgICAnbG9nMi1leHBlY3RzLXBvc2l0aXZlPycsXG4gICAgICAgICdwcmV2LWZsb2F0JyxcbiAgICAgICAgJ2FsaWduJyxcbiAgICAgICAgJ3Vub3JkZXJlZD8nLFxuICAgICAgICAnZmxvYXQnLFxuICAgICAgICAnZnAtbmFuPycsXG4gICAgICAgICdhYnMnLFxuICAgICAgICAnYml0eG9yJyxcbiAgICAgICAgJ2ludGVnZXI+Zml4bnVtLXN0cmljdCcsXG4gICAgICAgICd1PD0nLFxuICAgICAgICAnb2RkPycsXG4gICAgICAgICc8PScsXG4gICAgICAgICcvbW9kJyxcbiAgICAgICAgJz5pbnRlZ2VyJyxcbiAgICAgICAgJ3JlYWw/JyxcbiAgICAgICAgJ3JhdGlvbmFsPycsXG4gICAgICAgICdudW1lcmF0b3InXG4gICAgICBdIC8vIHRoYXQncyBhbGwgZm9yIG5vd1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhidWlsdGlucykuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgZmFjdG9yW2tdLnBhdHRlcm4gPSBhcnJUb1dvcmRzUmVnRXhwKGJ1aWx0aW5zW2tdKVxuICAgIH0pXG4gICAgdmFyIGNvbWJpbmF0b3JzID0gW1xuICAgICAgLy8ga2VybmVsXG4gICAgICAnMmJpJyxcbiAgICAgICd3aGlsZScsXG4gICAgICAnMnRyaScsXG4gICAgICAnYmkqJyxcbiAgICAgICc0ZGlwJyxcbiAgICAgICdib3RoPycsXG4gICAgICAnc2FtZT8nLFxuICAgICAgJ3RyaUAnLFxuICAgICAgJ2N1cnJ5JyxcbiAgICAgICdwcmVwb3NlJyxcbiAgICAgICczYmknLFxuICAgICAgJz9pZicsXG4gICAgICAndHJpKicsXG4gICAgICAnMmtlZXAnLFxuICAgICAgJzNrZWVwJyxcbiAgICAgICdjdXJyaWVkJyxcbiAgICAgICcya2VlcGQnLFxuICAgICAgJ3doZW4nLFxuICAgICAgJzJiaSonLFxuICAgICAgJzJ0cmkqJyxcbiAgICAgICc0a2VlcCcsXG4gICAgICAnYmlAJyxcbiAgICAgICdrZWVwZGQnLFxuICAgICAgJ2RvJyxcbiAgICAgICd1bmxlc3MqJyxcbiAgICAgICd0cmktY3VycnknLFxuICAgICAgJ2lmKicsXG4gICAgICAnbG9vcCcsXG4gICAgICAnYmktY3VycnkqJyxcbiAgICAgICd3aGVuKicsXG4gICAgICAnMmJpQCcsXG4gICAgICAnMnRyaUAnLFxuICAgICAgJ3dpdGgnLFxuICAgICAgJzJ3aXRoJyxcbiAgICAgICdlaXRoZXI/JyxcbiAgICAgICdiaScsXG4gICAgICAndW50aWwnLFxuICAgICAgJzNkaXAnLFxuICAgICAgJzNjdXJyeScsXG4gICAgICAndHJpLWN1cnJ5KicsXG4gICAgICAndHJpLWN1cnJ5QCcsXG4gICAgICAnYmktY3VycnknLFxuICAgICAgJ2tlZXBkJyxcbiAgICAgICdjb21wb3NlJyxcbiAgICAgICcyZGlwJyxcbiAgICAgICdpZicsXG4gICAgICAnM3RyaScsXG4gICAgICAndW5sZXNzJyxcbiAgICAgICd0dXBsZScsXG4gICAgICAna2VlcCcsXG4gICAgICAnMmN1cnJ5JyxcbiAgICAgICd0cmknLFxuICAgICAgJ21vc3QnLFxuICAgICAgJ3doaWxlKicsXG4gICAgICAnZGlwJyxcbiAgICAgICdjb21wb3NlZCcsXG4gICAgICAnYmktY3VycnlAJywgLy8gc2VxdWVuY2VzXG4gICAgICAnZmluZC1sYXN0LWZyb20nLFxuICAgICAgJ3RyaW0taGVhZC1zbGljZScsXG4gICAgICAnbWFwLWFzJyxcbiAgICAgICdlYWNoLWZyb20nLFxuICAgICAgJ25vbmU/JyxcbiAgICAgICd0cmltLXRhaWwnLFxuICAgICAgJ3BhcnRpdGlvbicsXG4gICAgICAnaWYtZW1wdHknLFxuICAgICAgJ2FjY3VtdWxhdGUqJyxcbiAgICAgICdyZWplY3QhJyxcbiAgICAgICdmaW5kLWZyb20nLFxuICAgICAgJ2FjY3VtdWxhdGUtYXMnLFxuICAgICAgJ2NvbGxlY3Rvci1mb3ItYXMnLFxuICAgICAgJ3JlamVjdCcsXG4gICAgICAnbWFwJyxcbiAgICAgICdtYXAtc3VtJyxcbiAgICAgICdhY2N1bXVsYXRlIScsXG4gICAgICAnMmVhY2gtZnJvbScsXG4gICAgICAnZm9sbG93JyxcbiAgICAgICdzdXByZW11bS1ieScsXG4gICAgICAnbWFwIScsXG4gICAgICAndW5sZXNzLWVtcHR5JyxcbiAgICAgICdjb2xsZWN0b3InLFxuICAgICAgJ3BhZGRpbmcnLFxuICAgICAgJ3JlZHVjZS1pbmRleCcsXG4gICAgICAncmVwbGljYXRlLWFzJyxcbiAgICAgICdpbmZpbXVtLWJ5JyxcbiAgICAgICd0cmltLXRhaWwtc2xpY2UnLFxuICAgICAgJ2NvdW50JyxcbiAgICAgICdmaW5kLWluZGV4JyxcbiAgICAgICdmaWx0ZXInLFxuICAgICAgJ2FjY3VtdWxhdGUqIScsXG4gICAgICAncmVqZWN0LWFzJyxcbiAgICAgICdtYXAtaW50ZWdlcnMnLFxuICAgICAgJ21hcC1maW5kJyxcbiAgICAgICdyZWR1Y2UnLFxuICAgICAgJ3NlbGVjdG9yJyxcbiAgICAgICdpbnRlcmxlYXZlJyxcbiAgICAgICcybWFwJyxcbiAgICAgICdmaWx0ZXItYXMnLFxuICAgICAgJ2JpbmFyeS1yZWR1Y2UnLFxuICAgICAgJ21hcC1pbmRleC1hcycsXG4gICAgICAnZmluZCcsXG4gICAgICAncHJvZHVjZScsXG4gICAgICAnZmlsdGVyIScsXG4gICAgICAncmVwbGljYXRlJyxcbiAgICAgICdjYXJ0ZXNpYW4tbWFwJyxcbiAgICAgICdjYXJ0ZXNpYW4tZWFjaCcsXG4gICAgICAnZmluZC1pbmRleC1mcm9tJyxcbiAgICAgICdtYXAtZmluZC1sYXN0JyxcbiAgICAgICczbWFwLWFzJyxcbiAgICAgICczbWFwJyxcbiAgICAgICdmaW5kLWxhc3QnLFxuICAgICAgJ3NlbGVjdG9yLWFzJyxcbiAgICAgICcybWFwLWFzJyxcbiAgICAgICcybWFwLXJlZHVjZScsXG4gICAgICAnYWNjdW11bGF0ZScsXG4gICAgICAnZWFjaCcsXG4gICAgICAnZWFjaC1pbmRleCcsXG4gICAgICAnYWNjdW11bGF0ZSotYXMnLFxuICAgICAgJ3doZW4tZW1wdHknLFxuICAgICAgJ2FsbD8nLFxuICAgICAgJ2NvbGxlY3Rvci1hcycsXG4gICAgICAncHVzaC1laXRoZXInLFxuICAgICAgJ25ldy1saWtlJyxcbiAgICAgICdjb2xsZWN0b3ItZm9yJyxcbiAgICAgICcyc2VsZWN0b3InLFxuICAgICAgJ3B1c2gtaWYnLFxuICAgICAgJzJhbGw/JyxcbiAgICAgICdtYXAtcmVkdWNlJyxcbiAgICAgICczZWFjaCcsXG4gICAgICAnYW55PycsXG4gICAgICAndHJpbS1zbGljZScsXG4gICAgICAnMnJlZHVjZScsXG4gICAgICAnY2hhbmdlLW50aCcsXG4gICAgICAncHJvZHVjZS1hcycsXG4gICAgICAnMmVhY2gnLFxuICAgICAgJ3RyaW0nLFxuICAgICAgJ3RyaW0taGVhZCcsXG4gICAgICAnY2FydGVzaWFuLWZpbmQnLFxuICAgICAgJ21hcC1pbmRleCcsIC8vIG1hdGhcbiAgICAgICdpZi16ZXJvJyxcbiAgICAgICdlYWNoLWludGVnZXInLFxuICAgICAgJ3VubGVzcy16ZXJvJyxcbiAgICAgICcoZmluZC1pbnRlZ2VyKScsXG4gICAgICAnd2hlbi16ZXJvJyxcbiAgICAgICdmaW5kLWxhc3QtaW50ZWdlcicsXG4gICAgICAnKGFsbC1pbnRlZ2Vycz8pJyxcbiAgICAgICd0aW1lcycsXG4gICAgICAnKGVhY2gtaW50ZWdlciknLFxuICAgICAgJ2ZpbmQtaW50ZWdlcicsXG4gICAgICAnYWxsLWludGVnZXJzPycsIC8vIG1hdGguY29tYmluYXRvcnNcbiAgICAgICd1bmxlc3MtbmVnYXRpdmUnLFxuICAgICAgJ2lmLXBvc2l0aXZlJyxcbiAgICAgICd3aGVuLXBvc2l0aXZlJyxcbiAgICAgICd3aGVuLW5lZ2F0aXZlJyxcbiAgICAgICd1bmxlc3MtcG9zaXRpdmUnLFxuICAgICAgJ2lmLW5lZ2F0aXZlJywgLy8gY29tYmluYXRvcnNcbiAgICAgICdjYXNlJyxcbiAgICAgICcyY2xlYXZlJyxcbiAgICAgICdjb25kPnF1b3QnLFxuICAgICAgJ2Nhc2U+cXVvdCcsXG4gICAgICAnM2NsZWF2ZScsXG4gICAgICAnd3JvbmctdmFsdWVzJyxcbiAgICAgICd0by1maXhlZC1wb2ludCcsXG4gICAgICAnYWxpc3Q+cXVvdCcsXG4gICAgICAnY29uZCcsXG4gICAgICAnY2xlYXZlJyxcbiAgICAgICdjYWxsLWVmZmVjdCcsXG4gICAgICAncmVjdXJzaXZlLWhhc2hjb2RlJyxcbiAgICAgICdzcHJlYWQnLFxuICAgICAgJ2RlZXAtc3ByZWFkPnF1b3QnLCAvLyBjb21iaW5hdG9ycy5zaG9ydC1jaXJjdWl0XG4gICAgICAnMnx8JyxcbiAgICAgICcwfHwnLFxuICAgICAgJ258fCcsXG4gICAgICAnMCYmJyxcbiAgICAgICcyJiYnLFxuICAgICAgJzN8fCcsXG4gICAgICAnMXx8JyxcbiAgICAgICcxJiYnLFxuICAgICAgJ24mJicsXG4gICAgICAnMyYmJywgLy8gY29tYmluYXRvcnMuc21hcnRcbiAgICAgICdzbWFydC11bmxlc3MqJyxcbiAgICAgICdrZWVwLWlucHV0cycsXG4gICAgICAncmVkdWNlLW91dHB1dHMnLFxuICAgICAgJ3NtYXJ0LXdoZW4qJyxcbiAgICAgICdjbGVhdmU+YXJyYXknLFxuICAgICAgJ3NtYXJ0LXdpdGgnLFxuICAgICAgJ3NtYXJ0LWFwcGx5JyxcbiAgICAgICdzbWFydC1pZicsXG4gICAgICAnaW5wdXRzL291dHB1dHMnLFxuICAgICAgJ291dHB1dD5zZXF1ZW5jZS1uJyxcbiAgICAgICdtYXAtb3V0cHV0cycsXG4gICAgICAnbWFwLXJlZHVjZS1vdXRwdXRzJyxcbiAgICAgICdkcm9wcGluZycsXG4gICAgICAnb3V0cHV0PmFycmF5JyxcbiAgICAgICdzbWFydC1tYXAtcmVkdWNlJyxcbiAgICAgICdzbWFydC0ybWFwLXJlZHVjZScsXG4gICAgICAnb3V0cHV0PmFycmF5LW4nLFxuICAgICAgJ251bGxhcnknLFxuICAgICAgJ2lucHV0PHNlcXVlbmNlJyxcbiAgICAgICdhcHBlbmQtb3V0cHV0cycsXG4gICAgICAnZHJvcC1pbnB1dHMnLFxuICAgICAgJ2lucHV0cycsXG4gICAgICAnc21hcnQtMnJlZHVjZScsXG4gICAgICAnZHJvcC1vdXRwdXRzJyxcbiAgICAgICdzbWFydC1yZWR1Y2UnLFxuICAgICAgJ3ByZXNlcnZpbmcnLFxuICAgICAgJ3NtYXJ0LXdoZW4nLFxuICAgICAgJ291dHB1dHMnLFxuICAgICAgJ2FwcGVuZC1vdXRwdXRzLWFzJyxcbiAgICAgICdzbWFydC11bmxlc3MnLFxuICAgICAgJ3NtYXJ0LWlmKicsXG4gICAgICAnc3VtLW91dHB1dHMnLFxuICAgICAgJ2lucHV0PHNlcXVlbmNlLXVuc2FmZScsXG4gICAgICAnb3V0cHV0PnNlcXVlbmNlJyAvLyB0YWZuXG4gICAgXVxuICAgIGZhY3Rvci5jb21iaW5hdG9ycy5wYXR0ZXJuID0gYXJyVG9Xb3Jkc1JlZ0V4cChjb21iaW5hdG9ycylcbiAgICBQcmlzbS5sYW5ndWFnZXMuZmFjdG9yID0gZmFjdG9yXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gJGZhbHNlXG4kZmFsc2UuZGlzcGxheU5hbWUgPSAnJGZhbHNlJ1xuJGZhbHNlLmFsaWFzZXMgPSBbXVxuZnVuY3Rpb24gJGZhbHNlKFByaXNtKSB7XG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgLyoqXG4gICAgICogQmFzZWQgb24gdGhlIG1hbnVhbCBieSBXb3V0ZXIgdmFuIE9vcnRtZXJzc2VuLlxuICAgICAqXG4gICAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL1ByaXNtSlMvcHJpc20vaXNzdWVzLzI4MDEjaXNzdWUtODI5NzE3NTA0fVxuICAgICAqL1xuICAgIFByaXNtLmxhbmd1YWdlc1snZmFsc2UnXSA9IHtcbiAgICAgIGNvbW1lbnQ6IHtcbiAgICAgICAgcGF0dGVybjogL1xce1tefV0qXFx9L1xuICAgICAgfSxcbiAgICAgIHN0cmluZzoge1xuICAgICAgICBwYXR0ZXJuOiAvXCJbXlwiXSpcIi8sXG4gICAgICAgIGdyZWVkeTogdHJ1ZVxuICAgICAgfSxcbiAgICAgICdjaGFyYWN0ZXItY29kZSc6IHtcbiAgICAgICAgcGF0dGVybjogLycoPzpbXlxccl18XFxyXFxuPykvLFxuICAgICAgICBhbGlhczogJ251bWJlcidcbiAgICAgIH0sXG4gICAgICAnYXNzZW1ibGVyLWNvZGUnOiB7XG4gICAgICAgIHBhdHRlcm46IC9cXGQrYC8sXG4gICAgICAgIGFsaWFzOiAnaW1wb3J0YW50J1xuICAgICAgfSxcbiAgICAgIG51bWJlcjogL1xcZCsvLFxuICAgICAgb3BlcmF0b3I6IC9bLSEjJCUmJyorLC4vOjs9Pj9AXFxcXF5fYHx+w5/DuF0vLFxuICAgICAgcHVuY3R1YXRpb246IC9cXFt8XFxdLyxcbiAgICAgIHZhcmlhYmxlOiAvW2Etel0vLFxuICAgICAgJ25vbi1zdGFuZGFyZCc6IHtcbiAgICAgICAgcGF0dGVybjogL1soKTxCRE/Crl0vLFxuICAgICAgICBhbGlhczogJ2JvbGQnXG4gICAgICB9XG4gICAgfVxuICB9KShQcmlzbSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpcmVzdG9yZVNlY3VyaXR5UnVsZXNcbmZpcmVzdG9yZVNlY3VyaXR5UnVsZXMuZGlzcGxheU5hbWUgPSAnZmlyZXN0b3JlU2VjdXJpdHlSdWxlcydcbmZpcmVzdG9yZVNlY3VyaXR5UnVsZXMuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBmaXJlc3RvcmVTZWN1cml0eVJ1bGVzKFByaXNtKSB7XG4gIFByaXNtLmxhbmd1YWdlc1snZmlyZXN0b3JlLXNlY3VyaXR5LXJ1bGVzJ10gPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKFxuICAgICdjbGlrZScsXG4gICAge1xuICAgICAgY29tbWVudDogL1xcL1xcLy4qLyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIC9cXGIoPzphbGxvd3xmdW5jdGlvbnxpZnxtYXRjaHxudWxsfHJldHVybnxydWxlc192ZXJzaW9ufHNlcnZpY2UpXFxiLyxcbiAgICAgIG9wZXJhdG9yOiAvJiZ8XFx8XFx8fFs8PiE9XT0/fFstKyovJV18XFxiKD86aW58aXMpXFxiL1xuICAgIH1cbiAgKVxuICBkZWxldGUgUHJpc20ubGFuZ3VhZ2VzWydmaXJlc3RvcmUtc2VjdXJpdHktcnVsZXMnXVsnY2xhc3MtbmFtZSddXG4gIFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoJ2ZpcmVzdG9yZS1zZWN1cml0eS1ydWxlcycsICdrZXl3b3JkJywge1xuICAgIHBhdGg6IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC8oXnxbXFxzKCksXSkoPzpcXC8oPzpbXFx3XFx4QTAtXFx1RkZGRl0rfFxce1tcXHdcXHhBMC1cXHVGRkZGXSsoPzo9XFwqXFwqKT9cXH18XFwkXFwoW1xcd1xceEEwLVxcdUZGRkYuXStcXCkpKSsvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGdyZWVkeTogdHJ1ZSxcbiAgICAgIGluc2lkZToge1xuICAgICAgICB2YXJpYWJsZToge1xuICAgICAgICAgIHBhdHRlcm46IC9cXHtbXFx3XFx4QTAtXFx1RkZGRl0rKD86PVxcKlxcKik/XFx9fFxcJFxcKFtcXHdcXHhBMC1cXHVGRkZGLl0rXFwpLyxcbiAgICAgICAgICBpbnNpZGU6IHtcbiAgICAgICAgICAgIG9wZXJhdG9yOiAvPS8sXG4gICAgICAgICAgICBrZXl3b3JkOiAvXFwqXFwqLyxcbiAgICAgICAgICAgIHB1bmN0dWF0aW9uOiAvWy4kKCl7fV0vXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwdW5jdHVhdGlvbjogL1xcLy9cbiAgICAgIH1cbiAgICB9LFxuICAgIG1ldGhvZDoge1xuICAgICAgLy8gdG8gbWFrZSB0aGUgcGF0dGVybiBzaG9ydGVyLCB0aGUgYWN0dWFsIG1ldGhvZCBuYW1lcyBhcmUgb21pdHRlZFxuICAgICAgcGF0dGVybjogLyhcXGJhbGxvd1xccyspW2Etel0rKD86XFxzKixcXHMqW2Etel0rKSooPz1cXHMqWzo7XSkvLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICAgIGFsaWFzOiAnYnVpbHRpbicsXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgcHVuY3R1YXRpb246IC8sL1xuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZsb3dcbmZsb3cuZGlzcGxheU5hbWUgPSAnZmxvdydcbmZsb3cuYWxpYXNlcyA9IFtdXG5mdW5jdGlvbiBmbG93KFByaXNtKSB7XG4gIDsoZnVuY3Rpb24gKFByaXNtKSB7XG4gICAgUHJpc20ubGFuZ3VhZ2VzLmZsb3cgPSBQcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCdqYXZhc2NyaXB0Jywge30pXG4gICAgUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgnZmxvdycsICdrZXl3b3JkJywge1xuICAgICAgdHlwZTogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0dGVybjpcbiAgICAgICAgICAgIC9cXGIoPzpbQmJdb29sZWFufEZ1bmN0aW9ufFtObl11bWJlcnxbU3NddHJpbmd8YW55fG1peGVkfG51bGx8dm9pZClcXGIvLFxuICAgICAgICAgIGFsaWFzOiAndGFnJ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfSlcbiAgICBQcmlzbS5sYW5ndWFnZXMuZmxvd1snZnVuY3Rpb24tdmFyaWFibGUnXS5wYXR0ZXJuID1cbiAgICAgIC8oPyFcXHMpW18kYS16XFx4QTAtXFx1RkZGRl0oPzooPyFcXHMpWyRcXHdcXHhBMC1cXHVGRkZGXSkqKD89XFxzKj1cXHMqKD86ZnVuY3Rpb25cXGJ8KD86XFwoW14oKV0qXFwpKD86XFxzKjpcXHMqXFx3Kyk/fCg/IVxccylbXyRhLXpcXHhBMC1cXHVGRkZGXSg/Oig/IVxccylbJFxcd1xceEEwLVxcdUZGRkZdKSopXFxzKj0+KSkvaVxuICAgIGRlbGV0ZSBQcmlzbS5sYW5ndWFnZXMuZmxvd1sncGFyYW1ldGVyJ11cbiAgICBQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCdmbG93JywgJ29wZXJhdG9yJywge1xuICAgICAgJ2Zsb3ctcHVuY3R1YXRpb24nOiB7XG4gICAgICAgIHBhdHRlcm46IC9cXHtcXHx8XFx8XFx9LyxcbiAgICAgICAgYWxpYXM6ICdwdW5jdHVhdGlvbidcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmICghQXJyYXkuaXNBcnJheShQcmlzbS5sYW5ndWFnZXMuZmxvdy5rZXl3b3JkKSkge1xuICAgICAgUHJpc20ubGFuZ3VhZ2VzLmZsb3cua2V5d29yZCA9IFtQcmlzbS5sYW5ndWFnZXMuZmxvdy5rZXl3b3JkXVxuICAgIH1cbiAgICBQcmlzbS5sYW5ndWFnZXMuZmxvdy5rZXl3b3JkLnVuc2hpZnQoXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IC8oXnxbXiRdXFxiKSg/OkNsYXNzfGRlY2xhcmV8b3BhcXVlfHR5cGUpXFxiKD8hXFwkKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46XG4gICAgICAgICAgLyhefFteJF1cXEIpXFwkKD86RGlmZnxFbnVtfEV4YWN0fEtleXN8T2JqTWFwfFByb3BlcnR5VHlwZXxSZWNvcmR8U2hhcGV8U3VidHlwZXxTdXBlcnR5cGV8YXdhaXQpXFxiKD8hXFwkKS8sXG4gICAgICAgIGxvb2tiZWhpbmQ6IHRydWVcbiAgICAgIH1cbiAgICApXG4gIH0pKFByaXNtKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbm1vZHVsZS5leHBvcnRzID0gZm9ydHJhblxuZm9ydHJhbi5kaXNwbGF5TmFtZSA9ICdmb3J0cmFuJ1xuZm9ydHJhbi5hbGlhc2VzID0gW11cbmZ1bmN0aW9uIGZvcnRyYW4oUHJpc20pIHtcbiAgUHJpc20ubGFuZ3VhZ2VzLmZvcnRyYW4gPSB7XG4gICAgJ3F1b3RlZC1udW1iZXInOiB7XG4gICAgICBwYXR0ZXJuOiAvW0JPWl0oWydcIl0pW0EtRjAtOV0rXFwxL2ksXG4gICAgICBhbGlhczogJ251bWJlcidcbiAgICB9LFxuICAgIHN0cmluZzoge1xuICAgICAgcGF0dGVybjpcbiAgICAgICAgLyg/OlxcYlxcdytfKT8oWydcIl0pKD86XFwxXFwxfCYoPzpcXHJcXG4/fFxcbikoPzpbIFxcdF0qIS4qKD86XFxyXFxuP3xcXG4pfCg/IVsgXFx0XSohKSl8KD8hXFwxKS4pKig/OlxcMXwmKS8sXG4gICAgICBpbnNpZGU6IHtcbiAgICAgICAgY29tbWVudDoge1xuICAgICAgICAgIHBhdHRlcm46IC8oJig/Olxcclxcbj98XFxuKVxccyopIS4qLyxcbiAgICAgICAgICBsb29rYmVoaW5kOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGNvbW1lbnQ6IHtcbiAgICAgIHBhdHRlcm46IC8hLiovLFxuICAgICAgZ3JlZWR5OiB0cnVlXG4gICAgfSxcbiAgICBib29sZWFuOiAvXFwuKD86RkFMU0V8VFJVRSlcXC4oPzpfXFx3Kyk/L2ksXG4gICAgbnVtYmVyOiAvKD86XFxiXFxkKyg/OlxcLlxcZCopP3xcXEJcXC5cXGQrKSg/OltFRF1bKy1dP1xcZCspPyg/Ol9cXHcrKT8vaSxcbiAgICBrZXl3b3JkOiBbXG4gICAgICAvLyBUeXBlc1xuICAgICAgL1xcYig/OkNIQVJBQ1RFUnxDT01QTEVYfERPVUJMRSA/UFJFQ0lTSU9OfElOVEVHRVJ8TE9HSUNBTHxSRUFMKVxcYi9pLCAvLyBFTkQgc3RhdGVtZW50c1xuICAgICAgL1xcYig/OkVORCA/KT8oPzpCTE9DSyA/REFUQXxET3xGSUxFfEZPUkFMTHxGVU5DVElPTnxJRnxJTlRFUkZBQ0V8TU9EVUxFKD8hIFBST0NFRFVSRSl8UFJPR1JBTXxTRUxFQ1R8U1VCUk9VVElORXxUWVBFfFdIRVJFKVxcYi9pLCAvLyBTdGF0ZW1lbnRzXG4gICAgICAvXFxiKD86QUxMT0NBVEFCTEV8QUxMT0NBVEV8QkFDS1NQQUNFfENBTEx8Q0FTRXxDTE9TRXxDT01NT058Q09OVEFJTlN8Q09OVElOVUV8Q1lDTEV8REFUQXxERUFMTE9DQVRFfERJTUVOU0lPTnxET3xFTkR8RVFVSVZBTEVOQ0V8RVhJVHxFWFRFUk5BTHxGT1JNQVR8R08gP1RPfElNUExJQ0lUKD86IE5PTkUpP3xJTlFVSVJFfElOVEVOVHxJTlRSSU5TSUN8TU9EVUxFIFBST0NFRFVSRXxOQU1FTElTVHxOVUxMSUZZfE9QRU58T1BUSU9OQUx8UEFSQU1FVEVSfFBPSU5URVJ8UFJJTlR8UFJJVkFURXxQVUJMSUN8UkVBRHxSRVRVUk58UkVXSU5EfFNBVkV8U0VMRUNUfFNUT1B8VEFSR0VUfFdISUxFfFdSSVRFKVxcYi9pLCAvLyBPdGhlcnNcbiAgICAgIC9cXGIoPzpBU1NJR05NRU5UfERFRkFVTFR8RUxFTUVOVEFMfEVMU0V8RUxTRUlGfEVMU0VXSEVSRXxFTlRSWXxJTnxJTkNMVURFfElOT1VUfEtJTkR8TlVMTHxPTkxZfE9QRVJBVE9SfE9VVHxQVVJFfFJFQ1VSU0lWRXxSRVNVTFR8U0VRVUVOQ0V8U1RBVHxUSEVOfFVTRSlcXGIvaVxuICAgIF0sXG4gICAgb3BlcmF0b3I6IFtcbiAgICAgIC9cXCpcXCp8XFwvXFwvfD0+fFs9XFwvXT18Wzw+XT0/fDo6fFsrXFwtKj0lXXxcXC5bQS1aXStcXC4vaSxcbiAgICAgIHtcbiAgICAgICAgLy8gVXNlIGxvb2tiZWhpbmQgdG8gcHJldmVudCBjb25mdXNpb24gd2l0aCAoLyAvKVxuICAgICAgICBwYXR0ZXJuOiAvKF58KD8hXFwoKS4pXFwvKD8hXFwpKS8sXA== |
| 1 | { |
| 2 | "ActionError": { |
| 3 | "kind": { |
| 4 | "FunctionCallError": { |
| 5 | "MethodResolveError": "MethodNotFound" |
| 6 | } |
| 7 | }, |
| 8 | "index": 0 |
| 9 | } |
| 10 | } |
| 1 | |
| 1 | { |
| 2 | "deposit": "15786259207013496141598" |
| 3 | } |
Empty Result
| 1 | |