Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥日系一夏 | 清新日音带来凉爽一夏@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWOn+eUn+S6jOe6p1wiLFwicGF0aFwiOlwiZXJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdLnNwbGl0KFxcXCIjXFxcIilbMF1cXG5cXG52YXIgbGF6eT0nJ1xcblxcblxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvdG9rZW4nKSkucnVsZSkgXFxuXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9sYXp5JykpLnJ1bGUpIFxcblxcbnZhciB0aW1lID0gRGF0ZS5ub3coKVxcblxcbnZhciBkYXRhID0ge1xcbiAgICBpZDogJ2QnICsgaWQsXFxuICAgIF90OiB0aW1lXFxufVxcblxcbnZhciBib2R5ID0ge1xcbiAgICBcXFwiaWRcXFwiOiAnZCcgKyBpZCxcXG4gICAgXFxcIl90XFxcIjogdGltZSxcXG4gICAgXFxcInRva2VuXFxcIjogJC5ndG9rZW4oZGF0YSlcXG59XFxuXFxuXFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvc2VhcmNoL3BsYXlsaXN0Jywge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IE1PQklMRV9VQSxcXG4gICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly90b29sLmxpdW1pbmd5ZS5jbicsXFxuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICB9LFxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcXG4gICAgbWV0aG9kOiBcXFwiUE9TVFxcXCJcXG59KSkuZGF0YS5saXN0O1xcbi8vbG9nKGxpc3QpXFxuXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHtcXG4gICAgdG9hc3QoJ+atjOWNleaVsOaNruS4uuepuicpXFxuICAgIGJhY2soZmFsc2UpXFxufVxcblxcbmZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcblxcbiAgICAvL+WkhOeQhuWbvueJh1xcbiAgICB2YXIgcGljID0gbGlzdFtqXS5waWNcXG4gICAgaWYgKHBpYyA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgIHBpYyA9IGxpc3Rbal0uYWxidW0ucGljXFxuICAgIH1cXG4gICAgcGljID0gcGljLnJlcGxhY2UoLyhcXFxcP3xcXFxcQCkuKiQvZ20sICcnKVxcbiAgICAvL2xvZyhwaWMpXFxuXFxuXFxuXFxuICAgIGxldCB0aXRsZSA9IGxpc3Rbal0ubmFtZTtcXG4gICAgbGV0IGRlc2MgPSBsaXN0W2pdLmFydGlzdFswXS5uYW1lO1xcbiAgICBsZXQgaW1nID0gcGljO1xcbiAgICBsZXQgdXJsID0gbGlzdFtqXS5pZCArICcjJyArIGxpc3Rbal0ubmFtZSArICcjJyArIGxpc3Rbal0uYXJ0aXN0WzBdLm5hbWUgKyBsYXp5XFxuXFxuXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICBjb2xfdHlwZTogc3RvcmFnZTAuZ2V0SXRlbSgnY29sX3R5cGUnLCdhdmF0YXInKSxcXG4gICAgICAgIHVybDogdXJsXFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwiY2FyZF9waWNfM1wiLFwibmFtZVwiOlwi5o6S6KGM5qacXCIsXCJwYXRoXCI6XCJwaFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG5zZXRQYWdlVGl0bGUoJ+aOkuihjOamnCcpXFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKGh0bWwpLmxpc3Q7XFxuXFxuaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XFxuICAgIGZvciAodmFyIGogaW4gbGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbGlzdFtqXS5uYW1lLFxcbiAgICAgICAgICAgIHBpY191cmw6IGxpc3Rbal0uY292ZXJJbWdVcmwgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvSDU/aGlrZXI6Ly9lbXB0eSMjJyArIGxpc3Rbal0uaWQgKyAnI25vUmVmcmVzaCMjZ2FtZVRoZW1lIyNiYWNrZ3JvdW5kIycsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbmV3V2luZG93OiB0cnVlLFxcbiAgICAgICAgICAgICAgICB3aW5kb3dJZDogTVlfUlVMRS50aXRsZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBsaXN0W2pdLm5hbWUsXFxuICAgICAgICAgICAgcGljX3VybDogbGlzdFtqXS5jb3ZlckltZ1VybCArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjIycgKyBsaXN0W2pdLmlkICsgJCgnJykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2VyJywge30pKS5ydWxlKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcblxcblxcbi8qZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogbGlzdFtqXS5uYW1lLFxcbiAgICAgICAgcGljX3VybDogbGlzdFtqXS5jb3ZlckltZ1VybCArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMjJyArIGxpc3Rbal0uaWQgKyAkKCcnKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9lclxcXCIpXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMydcXG4gICAgfSk7XFxufSovXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmm7TmlrBcIixcInBhdGhcIjpcIuabtOaWsFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5cXG5cXG4vLzU3NThcXG52YXIgdXBsaW5rID0gJ2h0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTU5NzEnXFxuXFxudmFyIG5hbWUgPSBjb25maWcubmFtZVxcblxcbmxldCBuZXdWZXJzaW9uO1xcbmxldCBteVZlcnNpb24gPSBNWV9SVUxFLnZlcnNpb247XFxuLy9sb2cobXlWZXJzaW9uKVxcbnRyeSB7XFxuICAgIG5ld1ZlcnNpb24gPSBKU09OLnBhcnNlKGZldGNoUEModXBsaW5rLCB7XFxuICAgICAgICB0aW1lb3V0OiAxMDAwXFxuICAgIH0pKS52ZXJzaW9uO1xcbiAgLy9sb2cobmV3VmVyc2lvbikgIFxcblxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgLy90b2FzdChcXFwi6YGT6ZW/5LuT5bqT5oq96aOO5LqG77yM5pys5qyh5pyq5qOA5rWL5Yiw5paw54mI5L+h5oGvXFxcIik7XFxuICAgIG5ld1ZlcnNpb24gPSBteVZlcnNpb247XFxufVxcbmxldCBpc1VwZGF0ZSA9IE51bWJlcihuZXdWZXJzaW9uKSA+IE51bWJlcihteVZlcnNpb24pO1xcbmxldCBpc1ZlciA9IE51bWJlcihuZXdWZXJzaW9uKSA9PT0gTnVtYmVyKG15VmVyc2lvbik7XFxuXFxuaWYoZ2V0TXlWYXIoJ215Q29sbGVjdGlvbicpPT0nJyl7XFxuaWYgKGlzVXBkYXRlKSB7XFxuICAgIGxvZygn5pyJ5paw54mI5pysOicgKyBuZXdWZXJzaW9uICsgJyzlvZPliY06JyArIG15VmVyc2lvbik7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCfhpnmnInmlrDniYjmnKxcXFwiLFxcbiAgICAgICAgdXJsOiBg5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQJHtuYW1lfeOAke+/pWhvbWVfcnVsZV91cmzvv6Uke3VwbGlua31gLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KTtcXG4gIH1cXG59XFxuLy9zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7pOeJjFwiLFwicGF0aFwiOlwidG9rZW5cIixcInJ1bGVcIjpcImpzOlxcbmZ1bmN0aW9uIGdldFRva2VuKGRhdGEsIGRlYnVnKSB7XFxuICAgIHZhciB0b2tlbiA9ICcnXFxuICAgIGV2YWxQcml2YXRlSlMoJzA0aC9Dem9SSWVGWUVNczdEdzRSRTlUZm05bVloa21ZQ1c0bDg4Z2l1cDRUZm5iem5SalVhdDdLdEl4d215b015WEZqUVJqRVFubDJQU0RsSnRFQWFBeTJKQmJuVFJoVmlNT2VhZWdycWhHWXc5clRYTWVsMy9FcUd3VnZVdEc2QmJNSCtrNTVkbTNPUVF5Rm5JaVdrR3FFUUI1cFNkbVc4RW5iNjVQZmFPNGt3UktUaC9LdldRU3JyU09wLzRuRjZNdmZxWDRiQ2VmWXJwcGUzSUQrT2FSR3VtUVA5VzNyUDhjR2xmdFl3NWtRZ3ZCREsvdEw4ODQ3U0I0ck5XUTJVYlBvcGpmQ3JyTGhVOXVXWmJvVUFxWnFWRGdPclhRVUIyVEdvSFFuSzhzVE1JV0taRnB2Yjg5bzZJM0VLeEFTQXpCTndXWW5EaWVpRjdPOUd4dElKaWJWNnl5ZHluRklXaDlkT2tmc1NaK0VUejZQdnJVb0V0RnB3cHRVQVN6SVlpTjh5ZTh0YlM4KzhtZW4za3JHeWFaaWFCSE5mOWZHcE1udDFwK1pNWGhXemJzTlZoQ0ttVDBJNVZ3WEhMeHZtblpqWUo3aVBNNEpKZmFETXRmT3NrYjFoOTJVcFdIeVErcllXSlJqUkh3RVdnUFIraEJJMEhqckthTDZoK3RybFhzMXI2RDRzSkhZaDYrN3gza1BRcTUwNU9qR0lmK2E0WU5YREJvL0RkQk5Wd2xtVnI5NFVyN0txdkdMZnlHY2kwcStSOUxJcm14ejlVdkUyVTlEZU9xQ1AwM3BVWTFQLzhlMEZ6ajlIZm91RGZzM05DSVJibnplY2xYRjNQTFRIK0xEamNvKytod0lTM1pxSTBKcGU4OTlrMzBicUJHZW5oSkt2c1hCRVJTZG5zZmZjUzY3UGxGUUJiNWphQmNkOTRQbC9iQVc0NDJJM1NQTGNUQjVoSm9mVVZEZ2psa2tKWDZ5ak5XcGE5YW9aRUVjUTFmVTBNUHVMam9xRnVkQ1ZEYnBOOGkyNjF0NTVuK0RMZ2d4QjBYbm5SMUdET21FSzh1Wk9zNE0xL1RJL2Q1YUNsb21tdElvZVhDSEt4NXllUTFlUHhiZk1GVGVkcmxxMUVRTVh0TzNjdVNWNmpTbkxHVUl3QVRKLy9CUlcyZUJrNU9sWURSWkYzd1pqSndWeFJVd1k5Yjk3NXorN1RaN0tveng5VHJod1RBa0R6M25kRWJOa3ZIUDBidlVJdUdxTE9iSFZBeitmaklFT29xdXpid0g2SDFWdmttNXFXWjl4U0NSYk5HM3Rrb3V1MEZ0eGR0ajdmclZmZWRWZWxENHZOT1NEaG0xa3pTNWF5ZHFWTmhqK0ZBWDdCRXFFVVNnY0NtcnBmZTQrNDdvUm94bGRHSUN0UmErVllMWHlBU2ZFQ0Mzd2x0Q2RCZGtodjRLQmZUb2dHVzMyM2YzZjdobjBSb0w5OGtHdHRURjl6TU9zcEQzbUNhWnlWaVkybnpwT2RrNEtSc1QvTFFPQ2RTS051azdvYzNFTHkvUHVZaGhWR2xHN0h4cXUwcGgyaGZkZGJlcVg3aiswYkRua3Z4SWw2NWYvQmlyUFhmbXpKYUlJSWlkRjBuRzAvOVREWE9kRnR4VjN1QnI2RThyRVEya2FwOU9FbnRNY0dXSGt2N2o3endtYUZvblZndkhIMFNQalBmUG9WcmtMQlRaUk41bm9SRFJ5d3I2VHhtQWI0aWQvK0h2dzZkVnBETS9OVk1nTGJ3dFl2MWtBaFJsMXV5QTlJNDh6WUhxWkZCa1pua2RDSCsreXd0OUdueEIwUWNlSU82VU1qMElGN2w1QmN4NG5HRUp1QWMrQlk3UDZVQytzYlJ2N3pob0pib0ZLNmF0OGRFVEF6NEp2bzkwSXloWTU3cVVMNDZmdFdyMVBZbnhYSWpyMzdENnpvWlpCWjYyWW5zNmtqMXViV291SnhOempRcm4wbWdsMWhxU2xITkxIWWlRVUxiSElmMXJDb3pmMDF2ZmtzTU5tWG5aMEpJV3QrTVRkeG5jQ2h0SXp5K0xNNC9PSzdMMnhWNkw4UWgxb0tiZ3Y0K09RUlk9JylcXG5cXG4gICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcXG4gICAgaWYgKGRlYnVnKSB7XFxuICAgICAgICBsb2coJ2pzb27vvJonICsganNvbilcXG4gICAgfVxcbiAgICBlaiA9IGVuY29kZVVSSUNvbXBvbmVudChqc29uKVxcbiAgICBpZiAoZGVidWcpIHtcXG4gICAgICAgIGxvZygnZW5jb2RlVVJJ77yaJyArIGVqKVxcbiAgICB9XFxuICAgIHZhciB0ayA9IGV2YWxQcml2YXRlSlMoJ3AvdFp2VWp1OWNJTytZR2dralMzQUE9PScpXFxuICAgIGlmIChkZWJ1Zykge1xcbiAgICAgICAgdmFyIGFyciA9IGV2YWxQcml2YXRlSlMoJ1p6SW1TYVBVSXg2MDRERG9BZGpMU2c9PScpXFxuICAgICAgICBsb2coYXJyKVxcbiAgICAgICAgbG9nKGFyci5sZW5ndGgpXFxuICAgICAgICBsb2coJ2VuY29kZe+8micgKyB0aylcXG4gICAgfVxcbiAgICBtdG9rZW4gPSBtZDUodGspXFxuICAgIGlmIChkZWJ1Zykge1xcbiAgICAgICAgbG9nKCdtZDXvvJonICsgbXRva2VuKVxcbiAgICB9XFxuICAgIHRva2VuID0gdHQgKyBtdG9rZW5cXG4gICAgcmV0dXJuIHRva2VuXFxufVxcblxcbiQuZXh0ZW5kKHtcXG4gICAgZ3Rva2VuOmdldFRva2VuXFxufSlcXG5cXG4kLmV4cG9ydHMuZ3Rva2VuPWdldFRva2VuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliqjmgIHop6PmnpBcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcImpzOlxcbnZhciBUID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdG9rZW4nKTtcXG52YXIgTCA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2xyYycpO1xcblxcbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKHQsbCkgPT4ge1xcbiAgICB2YXIgaWQgPSBpbnB1dC5zcGxpdChcXFwiI1xcXCIpWzBdXFxuXFxuICAgIGlmIChpZC5sZW5ndGggPT0gNCkge1xcbiAgICAgICAgdmFyIGluZm8gPSBpbnB1dC5zcGxpdCgnIyMnKVsxXVxcbiAgICAgICAgdmFyIHVybCA9IGluZm8uc3BsaXQoJyMnKVswXSArICcjaXNNdXNpYz10cnVlIydcXG4gICAgICAgIHZhciBscmMgPSBpbmZvLnNwbGl0KCcjJylbMV1cXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgdXJsczogdXJsLnNwbGl0KCksXFxuICAgICAgICAgICAgbHlyaWM6IGxyY1xcbiAgICAgICAgfSlcXG4gICAgfVxcblxcbiAgICB2YXIgcGxheXMgPSBbXVxcbiAgICBmb3IgKGxldCBxdWFsaXR5IG9mIFsnMjAwMCcsICczMjAnLCAnMTI4J10pIHtcXG4gICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKVxcblxcbiAgICAgICAgdmFyIGRhdGEgPSB7XFxuICAgICAgICAgICAgaWQ6IGlkICsgJycsXFxuICAgICAgICAgICAgcXVhbGl0eTogcXVhbGl0eSArICcnLFxcbiAgICAgICAgICAgIF90OiB0aW1lICsgJydcXG5cXG4gICAgICAgIH1cXG4gICAgICAgIC8vbG9nKGRhdGEpXFxuXFxuICAgICAgICB2YXIgdG9rZW4gPSB0Lmd0b2tlbihkYXRhKVxcblxcbiAgICAgICAgdmFyIHVybCA9IGBodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvbGluaz9pZD0ke2lkfSZxdWFsaXR5PSR7cXVhbGl0eX0mX3Q9JHt0aW1lfSZ0b2tlbj0ke3Rva2VufSNpc011c2ljPXRydWUjYDtcXG4gICAgICAgIHBsYXlzLnB1c2godXJsKVxcbiAgICB9XFxuXFxuICAgIC8vbG9nKHBsYXlzKVxcbiAgICB2YXIgdGl0bGUgPSAnJ1xcbiAgICB2YXIgZGVzYyA9ICcnXFxuICAgIHZhciBscmMgPSAnJ1xcbiAgICB0cnkge1xcbiAgICAgICAgdGl0bGUgPSBpbnB1dC5zcGxpdChcXFwiI1xcXCIpWzFdO1xcbiAgICAgICAgZGVzYyA9IGlucHV0LnNwbGl0KFxcXCIjXFxcIilbMl07XFxuICAgIH0gY2F0Y2gge31cXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKVxcbiAgICAgICAgdmFyIGRhdGEgPSB7XFxuICAgICAgICAgICAgaWQ6IGlkLFxcbiAgICAgICAgICAgIF90OiB0aW1lXFxuICAgICAgICB9XFxuICAgICAgICB2YXIgYm9keSA9IHtcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBpZCxcXG4gICAgICAgICAgICBcXFwiX3RcXFwiOiB0aW1lLFxcbiAgICAgICAgICAgIFxcXCJ0b2tlblxcXCI6IHQuZ3Rva2VuKGRhdGEpXFxuICAgICAgICB9XFxuICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkubGl1bWluZ3llLmNuL20vYXBpL2x5cmljJywge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBNT0JJTEVfVUEsXFxuICAgICAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly90b29sLmxpdW1pbmd5ZS5jbicsXFxuICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgfSkpLmRhdGE7XFxuICAgICAgICBscmMgPSBqc29uLmxyY1xcbiAgICAgICAgaWYgKGxyYyA9PSBudWxsKSB7XFxuICAgICAgICAgICAgbHJjID0gJyc7XFxuICAgICAgICAgICAgdGhyb3cgJydcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgdXJsczogcGxheXMsXFxuICAgICAgICAgICAgbmFtZXM6IFsn5peg5o2fJywgJ+i2hemrmCcsICfmoIflh4YnXSxcXG4gICAgICAgICAgICBseXJpYzogbHJjXFxuICAgICAgICB9KVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBscmMgPSBwZGZoKHJlcXVlc3QoJ2h0dHA6Ly96aGFubmVpLmJhaWR1LmNvbS9jc2Uvc2VhcmNoP3E9JyArIHRpdGxlICsgJy0nICsgZGVzYyArICcmcz0yMjM3OTc2Mzg5Njc4NjkzNTMwJmVudHJ5PTEnKSwgJy5yZXN1bHQtbGlzdCYmYSYmaHJlZicpO1xcblxcbiAgICAgICAgICAgIHZhciBscmMgPSAnaHR0cHM6Ly93d3cuaWdlY2lrdS5jb20nICsgcGRmaChyZXF1ZXN0KGxyYyksICcuZG93bmxvYWQmJmEmJmhyZWYnKS5yZXBsYWNlKCd0eHQnLCAnbHJjJyk7XFxuICAgICAgICB9IGNhdGNoIHt9XFxuXFxuICAgICAgICAobHJjICE9IG51bGwgfHwgbHJjICE9ICcnKSA/IGxyYzogbC5nZXRscmMoYCR7dGl0bGV9LSR7ZGVzY31gKVxcblxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICB1cmxzOiBwbGF5cyxcXG4gICAgICAgICAgICBuYW1lczogWyfml6DmjZ8nLCAn6LaF6auYJywgJ+agh+WHhiddLFxcbiAgICAgICAgICAgIGx5cmljOiBscmNcXG4gICAgICAgIH0pXFxuICAgIH1cXG59LFQsTClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuatjOivjVwiLFwicGF0aFwiOlwibHJjXCIsXCJydWxlXCI6XCJqczpcXG5mdW5jdGlvbiBnZXRMcmModGl0bGUpIHtcXG4gICAgdmFyIGxyYyA9ICcnXFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgc29uZ3MgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwOi8vMTIxLjQuNzguMTA2OjQwMDEvc2VhcmNoP2tleXdvcmRzPScgKyB0aXRsZSkpLnJlc3VsdC5zb25nc1xcbiAgICAgICAgdmFyIGxpc3QgPSBzb25ncy5tYXAoeCA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgaWQ6IHguaWQsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4Lm5hbWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgdmFyIGxyY3MgPSBKU09OLnBhcnNlKGZldGNoKGBodHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvc29uZy9seXJpYz9vcz1wYyZpZD0ke2xpc3RbMF0uaWR9Jmx2PS0xJmt2PS0xJnR2PS0xYCkpXFxuICAgICAgICAvL2xvZyhscmNzLmxyYy5seXJpYylcXG4gICAgICAgIGxyYyA9IGxyY3MubHJjLmx5cmljXFxuICAgIH0gY2F0Y2gge31cXG4gICAgXFxuICAgIHJldHVybiBscmNcXG59XFxuXFxuJC5leHBvcnRzLmdldGxyYyA9IGdldExyY1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiSDXkuoznuqdcIixcInBhdGhcIjpcIkg1XCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbnZhciBpZCA9IE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXS5zcGxpdChcXFwiI1xcXCIpWzBdXFxuXFxudmFyIFQgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS90b2tlbicpO1xcblxcbnZhciBxdWFsaXR5ID0gc3RvcmFnZTAuZ2V0SXRlbSgncXVhbGl0eScsICczMjAnKVxcblxcblxcbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKHQsIHEpID0+IHtcXG5cXG4gICAgdmFyIGlkID0gaW5wdXQuc3BsaXQoXFxcIiNcXFwiKVswXTtcXG5cXG4gICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpXFxuICAgIHZhciBxdWFsaXR5ID0gcVxcblxcbiAgICB2YXIgZGF0YSA9IHtcXG4gICAgICAgIGlkOiBpZCArICcnLFxcbiAgICAgICAgcXVhbGl0eTogcXVhbGl0eSArICcnLFxcbiAgICAgICAgX3Q6IHRpbWUgKyAnJ1xcblxcbiAgICB9XFxuXFxuICAgIHZhciB0b2tlbiA9IHQuZ3Rva2VuKGRhdGEpXFxuXFxuXFxuICAgIHZhciB1cmwgPSBgaHR0cHM6Ly9hcGkubGl1bWluZ3llLmNuL20vYXBpL2xpbms/aWQ9JHtpZH0mcXVhbGl0eT0ke3F1YWxpdHl9Jl90PSR7dGltZX0mdG9rZW49JHt0b2tlbn0jaXNNdXNpYz10cnVlI2A7XFxuICAgIC8vbG9nKHVybClcXG5cXG4gICAgcmV0dXJuIHVybFxcbn0sIFQsIHF1YWxpdHkpXFxuXFxuXFxuXFxudmFyIHRpbWUgPSBEYXRlLm5vdygpXFxuXFxudmFyIGRhdGEgPSB7XFxuICAgIGlkOiAnZCcgKyBpZCxcXG4gICAgX3Q6IHRpbWVcXG59XFxuXFxudmFyIGJvZHkgPSB7XFxuICAgIFxcXCJpZFxcXCI6ICdkJyArIGlkLFxcbiAgICBcXFwiX3RcXFwiOiB0aW1lLFxcbiAgICBcXFwidG9rZW5cXFwiOiBULmd0b2tlbihkYXRhKVxcbn1cXG5cXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL3VpJykpLnJ1bGUpIFxcblxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvc2VhcmNoL3BsYXlsaXN0Jywge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IE1PQklMRV9VQSxcXG4gICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly90b29sLmxpdW1pbmd5ZS5jbicsXFxuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICB9LFxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcXG4gICAgbWV0aG9kOiBcXFwiUE9TVFxcXCJcXG59KSkuZGF0YS5saXN0O1xcblxcbmlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7XFxuICAgIHRvYXN0KCfmrYzljZXmlbDmja7kuLrnqbonKVxcbiAgICBiYWNrKGZhbHNlKVxcbn1cXG5cXG5sZXQg5Lyg6L6T5YiX6KGoID0gW11cXG5sZXQgeGQgPSBKU09OLnN0cmluZ2lmeShsaXN0KSA9PSBKU09OLnN0cmluZ2lmeShzdG9yYWdlMC5nZXRWYXIoJ+aVsOaNruagoeWvuScsIFtdKSk7XFxuaWYgKHhkID09IGZhbHNlKSB7XFxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcbiAgICAgICAgbGV0IHRpdGxlID0gbGlzdFtqXS5uYW1lO1xcbiAgICAgICAgbGV0IGZpcnN0ID0gbGlzdFswXS5uYW1lO1xcbiAgICAgICAgbGV0IGRlc2MgPSBsaXN0W2pdLmFydGlzdFswXS5uYW1lO1xcbiAgICAgICAgbGV0IGltZyA9IGxpc3Rbal0ucGljO1xcbiAgICAgICAgbGV0IHVybCA9IGxpc3Rbal0uaWQgKyAnIycgKyBsaXN0W2pdLmx5cmljICsgbGF6eVxcbiAgICAgICAgLyog5b+r6YCf5ZGK6K+JeDXliJfooajmoLflvI/vvIzlvojph43opoEgKi9cXG4gICAgICAgIGxldCBjb2xfdHlwZSA9IHN0b3JhZ2UwLmdldEl0ZW0oJ2g1Y29sX3R5cGUnLCdhdmF0YXInKVxcbiAgICAgICAgcHV0VmFyKCfmoLflvI8nLCBjb2xfdHlwZSlcXG4gICAgICAgIHB1dFZhcign6YCJ5Lit6aKc6ImyJywgJyMzQ0U2OEUnKTtcXG4gICAgICAgIFxcbiAgICAgICAgeHkgPSAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9JyArIGdldFZhcign6YCJ5Lit6aKc6ImyJykgKyAnPicgKyB0aXRsZSArICc8L2ZvbnQ+PC9iPic7XFxuICAgICAgICBcXG4gICAgICAgIHh5PSB0aXRsZVN0eWxlKHh5LGNvbF90eXBlKVxcbiAgICAgICAgICAgIFxcblxcblxcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUgPT0gZ2V0VmFyKCfntKLlvJUnLCBmaXJzdCkgJiYgTVlfUEFHRSA9PSAxID8geHkgOiB0aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBjb2xfdHlwZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0hpc3RvcnkjI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGl0bGUsIGZpcnN0LCB4eSkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCfntKLlvJUnKSAhPSB0aXRsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1V2ViVmlldyhnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2R6SG91c2UvaHRtbC9oNemfs+S5kOaSreaUvuWZqC5odG1sJykpXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGdldFZhcign57Si5byVJywgZmlyc3QpLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGdldFZhcign57Si5byVJywgZmlyc3QpXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh0aXRsZSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB4eVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcign57Si5byVJywgdGl0bGUpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIGdldFZhcign5pKt5pS+6ZO+5o6lJyk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCB0aXRsZSwgZmlyc3QsIHh5KSxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogdGl0bGVcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICDkvKDovpPliJfooagucHVzaCh7XFxuICAgICAgICAgICAg5bCB6Z2iOiBpbWcsXFxuICAgICAgICAgICAg5puy5ZCNOiB0aXRsZSxcXG4gICAgICAgICAgICDmrYzmiYs6IGRlc2MsXFxuICAgICAgICAgICAg5Zyw5Z2AOiB1cmwsXFxuICAgICAgICB9KVxcbiAgICB9XFxuXFxuICAgIOS8oOi+k+WIl+ihqCA9IHN0b3JhZ2UwLmdldFZhcign57yT5a2Y5pWw5o2uJywgW10pLmNvbmNhdCjkvKDovpPliJfooagpXFxuICAgIHN0b3JhZ2UwLnB1dFZhcign57yT5a2Y5pWw5o2uJywg5Lyg6L6T5YiX6KGoKVxcbiAgICBzdG9yYWdlMC5wdXRWYXIoJ+aVsOaNruagoeWvuScsIGxpc3QpXFxufVxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGNsZWFyVmFyKCfmoLflvI8nKTtcXG4gICAgY2xlYXJWYXIoJ+e0ouW8lScpO1xcbiAgICBjbGVhclZhcign5pKt5pS+6ZO+5o6lJyk7XFxuICAgIGNsZWFyVmFyKCfmlbDmja7moKHlr7knKTtcXG4gICAgY2xlYXJWYXIoJ+e8k+WtmOaVsOaNricpO1xcbn0pKVxcbuS8oOi+k+WIl+ihqCA9IHN0b3JhZ2UwLmdldFZhcign57yT5a2Y5pWw5o2uJylcXG5wdXRWYXIoJ+mfs+S5kOaVsOaNricsIEpTT04uc3RyaW5naWZ5KOS8oOi+k+WIl+ihqCkpXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZScsXFxuICAgICAgICBkZXNjOiAnMzAwJiZmbG9hdCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHVhOiBNT0JJTEVfVUEsXFxuICAgICAgICAgICAgYXV0b1BsYXk6IHRydWVcXG4gICAgICAgIH0sXFxuICAgICAgICB1cmw6IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS9odG1sL2g16Z+z5LmQ5pKt5pS+5ZmoLmh0bWwnKVxcbiAgICB9KTtcXG59XFxuXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLorr7nva5cIixcInBhdGhcIjpcInNldFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXVxcblxcblxcblxcbmlmIChNWV9QQUdFID09IDEpIHtcXG5cXG4gICAgdmFyIGRlbW8gPSBg4oCc4oCc4oCd4oCdPHNtYWxsPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogJHtnZXRSYW5nZUNvbG9ycygpfVxcXCI+5qC35byP6aKE6KeIYCArICc8c3Bhbj48L3NtYWxsPidcXG5cXG4gICAgZGVtbyA9IHRpdGxlU3R5bGUoZGVtbyxzdHlsZSlcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBkZW1vLFxcbiAgICAgICAgY29sX3R5cGU6IHN0b3JhZ2UwLmdldEl0ZW0oJ3N0eWxlJywgJ3RleHRfNCcpLFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9jZG4zLmljb25maW5kZXIuY29tL2RhdGEvaWNvbnMvYnVkaWNvbi1jaHJvbWEtbXVzaWMvMjQvcGxheS1jaXJjbGUtNjQucG5nJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0pXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+Wtl+S9k+agt+W8jzonICsgc3RvcmFnZTAuZ2V0SXRlbSgnZnN0eWxlJywgJycpLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBsZXQgYWxsX2NvbHMgPSBbJycsICdzbWFsbCcsICdiJ11cXG4gICAgICAgICAgICBsZXQgY29sID0gc3RvcmFnZTAuZ2V0SXRlbSgnZnN0eWxlJywgJycpXFxuICAgICAgICAgICAgbGV0IOWtl+S9k+agt+W8jyA9IGFsbF9jb2xzLm1hcCgoaXQpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ID09PSBjb2wgPyAn4p6h77iPJyArIGl0IDogaXQ7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgbGV0IHRpcHMgPSAn6K+36YCJ5oup5qC35byPJztcXG4gICAgICAgICAgICByZXR1cm4gJCjlrZfkvZPmoLflvI8sIDIsIHRpcHMpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgv4p6h77iPL2csICcnKTtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnZnN0eWxlJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZnN0eWxlJywge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflrZfkvZPmoLflvI86JyArIHN0b3JhZ2UwLmdldEl0ZW0oJ2ZzdHlsZScsICcnKVxcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouWtl+S9k+agt+W8j+S4ujonICsgaW5wdXQ7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAnZnN0eWxlJ1xcbiAgICAgICAgfVxcbiAgICB9KVxcblxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGDpmo/mnLrpopzoibJgLFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBsZXQgYWxsX2NvbHMgPSBbJ+aVtOS9k+maj+acujoxJywgJ+WFqOmDqOmaj+acujoyJ11cXG4gICAgICAgICAgICBhbGxfY29scy51bnNoaWZ0KCflm7rlrprpopzoibI6JyArIGlucHV0KVxcbiAgICAgICAgICAgIHJldHVybiAkKGFsbF9jb2xzLCAxLCAnMeaVtOS9k+maj+acuiAy5YWo6YOo6ZqP5py6Jykuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gaW5wdXQuc3BsaXQoJzonKVsxXVxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdjb2xvcicsIGNvbG9yKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAnI+W8gOWktOminOiJsuS7o+eggeaIluiAhTHlkowyJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBzdG9yYWdlMC5nZXRJdGVtKCdjb2xvcicsICcjMDAwJyksXFxuICAgICAgICB9XFxuXFxuICAgIH0pXFxuXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+Wbvuagh+agt+W8jycsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGxldCBhbGxfY29scyA9IGdldENvbFR5cGVzKCk7XFxuICAgICAgICAgICAgYWxsX2NvbHMgPSBhbGxfY29scy5maWx0ZXIoaXRlbSA9PiAvKGljb3x0ZXh0X3xhdmF0YXJ8YnV0dG9uKS8udGVzdChpdGVtKSAmJiAhLyhzZWFyY2gpLy50ZXN0KGl0ZW0pKVxcbiAgICAgICAgICAgIHJldHVybiAkKGFsbF9jb2xzLCAyLCAn6K+35Zu+5qCH5pi+56S65qC35byPJylcXG4gICAgICAgICAgICAgICAgLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdzdHlsZScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogc3RvcmFnZTAuZ2V0SXRlbSgnc3R5bGUnLCAndGV4dF80JyksXFxuICAgICAgICB9XFxuXFxuICAgIH0pXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+WOn+eUn+S6jOe6p+agt+W8jycsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGxldCBhbGxfY29scyA9IGdldENvbFR5cGVzKCk7XFxuICAgICAgICAgICAgcmV0dXJuICQoYWxsX2NvbHMsIDIsICfor7fpgInmi6nljp/nlJ/kuoznuqfnuqfmmL7npLrmoLflvI8nKVxcbiAgICAgICAgICAgICAgICAuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ2NvbF90eXBlJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouWOn+eUn+S6jOe6p+aYvuekuuagt+W8jycgKyBpbnB1dFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBzdG9yYWdlMC5nZXRJdGVtKCdjb2xfdHlwZScsICdhdmF0YXInKSxcXG4gICAgICAgIH1cXG5cXG4gICAgfSlcXG4gICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ0g15LqM57qn5qC35byPJyxcXG4gICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgbGV0IGFsbF9jb2xzID0gZ2V0Q29sVHlwZXMoKTtcXG4gICAgICAgICAgICBhbGxfY29scyA9IGFsbF9jb2xzLmZpbHRlcihpdGVtID0+IS8oYmxhbmt8bGluZXxyaWNofGxvbmd8eDV8aW5wdXR8c2VhcmNoKS8udGVzdChpdGVtKSYmICEvXihwaWNfMXxwaWNfMnxtb3ZpZV8yfG1vdmllXzMpJC9tLnRlc3QoaXRlbSkpXFxuICAgICAgICAgICAgcmV0dXJuICQoYWxsX2NvbHMsIDIsICfor7fpgInmi6lINeS6jOe6p+aYvuekuuagt+W8jycpXFxuICAgICAgICAgICAgICAgIC5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnaDVjb2xfdHlwZScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaJINeS6jOe6p+aYvuekuuagt+W8jycgKyBpbnB1dFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBzdG9yYWdlMC5nZXRJdGVtKCdoNWNvbF90eXBlJywgJ2F2YXRhcicpLFxcbiAgICAgICAgfVxcblxcbiAgICB9KVxcbiAgICBcXG4gICAgdmFyIHRpdGxlPSfmtYvor5UnXFxuICAgIHB1dFZhcign6YCJ5Lit6aKc6ImyJywgJyMzQ0U2OEUnKTtcXG4gICAgdGl0bGU9J+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScgKyBnZXRWYXIoJ+mAieS4reminOiJsicpICsgJz4nICsgdGl0bGUgKyAnPC9mb250PjwvYj4nLFxcbiAgICB0aXRsZSA9IHRpdGxlU3R5bGUodGl0bGUsc3RvcmFnZTAuZ2V0SXRlbSgnaDVjb2xfdHlwZScsJ2F2YXRhcicpKVxcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOnRpdGxlLFxcbiAgICAgICAgaW1nOidoaWtlcjovL2ltYWdlcy9ob21lX3BpYzMnLFxcbiAgICAgICAgY29sX3R5cGU6c3RvcmFnZTAuZ2V0SXRlbSgnaDVjb2xfdHlwZScsJ2F2YXRhcicpXFxuICAgICAgICBcXG4gICAgfSlcXG5cXG5cXG4gICAgc2V0SG9tZVJlc3VsdChkKVxcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueVjOmdouWkhOeQhlwiLFwicGF0aFwiOlwidWlcIixcInJ1bGVcIjpcImpzOlxcblxcbmZ1bmN0aW9uIGxhYlRpdGxlKHN0cixzdHlsZSkge1xcbiAgICBcXG4gICAgaWYgKC8oYXZhdGFyfGljb25fc21hbGxfMykvLnRlc3Qoc3R5bGUpKSB7XFxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgn4oCc4oCc4oCd4oCdJywgJycpXFxuICAgIH1cXG4gICAgaWYgKC8oaWNvbl8yfHRleHRfaWNvbikvLnRlc3Qoc3R5bGUpKSB7XFxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgn4oCc4oCc4oCd4oCdJywgJycpXFxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvPFtePl0rPi9nbSwgJycpXFxuICAgIH1cXG4gICAgcmV0dXJuIHN0clxcbn1cXG5cXG5mdW5jdGlvbiBzZXRGc3l0bGUoc3RyKSB7XFxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKDxcXFxcLz8pc21hbGwoPikvZ20sIChhLCBiLCBjKSA9PiB7XFxuICAgICAgICB2YXIgZnN0eWxlID0gc3RvcmFnZTAuZ2V0SXRlbSgnZnN0eWxlJywgJycpXFxuICAgICAgICBpZiAoZnN0eWxlICE9ICcnKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGIgKyBmc3R5bGUgKyBjXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiAnJ1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cXG5mdW5jdGlvbiB0aXRsZVN0eWxlKHN0cixzKSB7XFxuICAgIHN0ciA9IGxhYlRpdGxlKHN0cixzKVxcbiAgICBzdHIgPSBzZXRGc3l0bGUoc3RyKVxcbiAgICByZXR1cm4gc3RyXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pyA5paw5LiK5LygXCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQ9W11cXG52YXIgcGFnZSA9IE1ZX1BBR0VcXG5cXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL3Rva2VuJykpLnJ1bGUpIFxcblxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbGF6eScpKS5ydWxlKSBcXG5cXG52YXIgdGltZSA9IERhdGUubm93KClcXG5cXG5cXG52YXIgZGF0YSA9IHtcXG4gICAgcGFnZTogcGFnZSxcXG4gICAgX3Q6IHRpbWVcXG59XFxuXFxudmFyIGJvZHkgPSB7XFxuICAgIFxcXCJwYWdlXFxcIjogcGFnZSxcXG4gICAgXFxcIl90XFxcIjogdGltZSxcXG4gICAgXFxcInRva2VuXFxcIjogZ2V0VG9rZW4oZGF0YSlcXG59XFxuXFxuXFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vdGVzdC5xdWFuamlhbi5jb20uY24vbS9hcGkvdG9wL3NvbmcnLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogTU9CSUxFX1VBLFxcbiAgICAgICAgJ09yaWdpbic6ICdodHRwczovL3Rvb2wubGl1bWluZ3llLmNuJyxcXG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgIH0sXFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxcbiAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbn0pKS5kYXRhLmxpc3Q7XFxuXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHtcXG4gICAgdG9hc3QoJ+epuicpXFxufVxcbmxpc3QubWFwKHggPT4ge1xcbiAgICAvL+WkhOeQhuWbvueJh1xcbiAgICB2YXIgcGljID0geC5waWNcXG4gICAgaWYgKHBpYyA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgIHBpYyA9IHguYWxidW0ucGljXFxuICAgIH1cXG4gICAgcGljID0gcGljLnJlcGxhY2UoLyhcXFxcP3xcXFxcQCkuKiQvZ20sICcnKVxcblxcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIGFydCA9IHguYXJ0aXN0WzBdLm5hbWVcXG4gICAgfSBjYXRjaCB7XFxuICAgICAgICBhcnQgPSAnJ1xcbiAgICB9XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcbiAgICAgICAgZGVzYzogYXJ0LFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgaW1nOiBwaWMsXFxuICAgICAgICB1cmw6IHguaGFzaCArICcjJyArIHgubmFtZSArICcjJyArIGFydCArIGxhenlcXG4gICAgfSlcXG59KVxcblxcblxcbnNldEhvbWVSZXN1bHQoZClcIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCJNeUZyZWXmrYzljZXCt1hcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5IyM3NDI2NzYyODA3O2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMe+8m++8myBNaSAxMCBQcm8pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OC4wLjQzMjQuMTUyIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcImNhcmRfcGljXzNcIixcImZpbmRfcnVsZVwiOlwianM6KFxcbigpID0+IHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZXJcXFwiLCB7fSkpLnJ1bGUpO1xcbn1cXG4pKClcIixcImdyb3VwXCI6XCJcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcImluaXRDb25maWcoe1xcbiAgICBuYW1lOidNeUZyZWXmrYzljZXCt1gnXFxufSk7XFxuXFxuXFxuXCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuWOn+eUn+S6jOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCJlclxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgaWQgPSBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjI1xcXFxcXFwiKVsxXS5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMF1cXFxcblxcXFxudmFyIGxhenk9JydcXFxcblxcXFxuXFxcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL3Rva2VuJykpLnJ1bGUpIFxcXFxuXFxcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xhenknKSkucnVsZSkgXFxcXG5cXFxcbnZhciB0aW1lID0gRGF0ZS5ub3coKVxcXFxuXFxcXG52YXIgZGF0YSA9IHtcXFxcbiAgICBpZDogJ2QnICsgaWQsXFxcXG4gICAgX3Q6IHRpbWVcXFxcbn1cXFxcblxcXFxudmFyIGJvZHkgPSB7XFxcXG4gICAgXFxcXFxcXCJpZFxcXFxcXFwiOiAnZCcgKyBpZCxcXFxcbiAgICBcXFxcXFxcIl90XFxcXFxcXCI6IHRpbWUsXFxcXG4gICAgXFxcXFxcXCJ0b2tlblxcXFxcXFwiOiAkLmd0b2tlbihkYXRhKVxcXFxufVxcXFxuXFxcXG5cXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkubGl1bWluZ3llLmNuL20vYXBpL3NlYXJjaC9wbGF5bGlzdCcsIHtcXFxcbiAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBNT0JJTEVfVUEsXFxcXG4gICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly90b29sLmxpdW1pbmd5ZS5jbicsXFxcXG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxcXG4gICAgfSxcXFxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcXFxcbiAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG59KSkuZGF0YS5saXN0O1xcXFxuLy9sb2cobGlzdClcXFxcblxcXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHtcXFxcbiAgICB0b2FzdCgn5q2M5Y2V5pWw5o2u5Li656m6JylcXFxcbiAgICBiYWNrKGZhbHNlKVxcXFxufVxcXFxuXFxcXG5mb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXFxcblxcXFxuICAgIC8v5aSE55CG5Zu+54mHXFxcXG4gICAgdmFyIHBpYyA9IGxpc3Rbal0ucGljXFxcXG4gICAgaWYgKHBpYyA9PSB1bmRlZmluZWQpIHtcXFxcbiAgICAgICAgcGljID0gbGlzdFtqXS5hbGJ1bS5waWNcXFxcbiAgICB9XFxcXG4gICAgcGljID0gcGljLnJlcGxhY2UoLyhcXFxcXFxcXD98XFxcXFxcXFxAKS4qJC9nbSwgJycpXFxcXG4gICAgLy9sb2cocGljKVxcXFxuXFxcXG5cXFxcblxcXFxuICAgIGxldCB0aXRsZSA9IGxpc3Rbal0ubmFtZTtcXFxcbiAgICBsZXQgZGVzYyA9IGxpc3Rbal0uYXJ0aXN0WzBdLm5hbWU7XFxcXG4gICAgbGV0IGltZyA9IHBpYztcXFxcbiAgICBsZXQgdXJsID0gbGlzdFtqXS5pZCArICcjJyArIGxpc3Rbal0ubmFtZSArICcjJyArIGxpc3Rbal0uYXJ0aXN0WzBdLm5hbWUgKyBsYXp5XFxcXG5cXFxcblxcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxcXFxuICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgY29sX3R5cGU6IHN0b3JhZ2UwLmdldEl0ZW0oJ2NvbF90eXBlJywnYXZhdGFyJyksXFxcXG4gICAgICAgIHVybDogdXJsXFxcXG4gICAgfSlcXFxcbn1cXFxcbnNldFJlc3VsdChkKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJjYXJkX3BpY18zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaOkuihjOamnFxcXCIsXFxcInBhdGhcXFwiOlxcXCJwaFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXFxcbnNldFBhZ2VUaXRsZSgn5o6S6KGM5qacJylcXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5saXN0O1xcXFxuXFxcXG5pZiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpIHtcXFxcbiAgICBmb3IgKHZhciBqIGluIGxpc3QpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBsaXN0W2pdLm5hbWUsXFxcXG4gICAgICAgICAgICBwaWNfdXJsOiBsaXN0W2pdLmNvdmVySW1nVXJsICsgJ0BSZWZlcmVyPScsXFxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvSDU/aGlrZXI6Ly9lbXB0eSMjJyArIGxpc3Rbal0uaWQgKyAnI25vUmVmcmVzaCMjZ2FtZVRoZW1lIyNiYWNrZ3JvdW5kIycsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIG5ld1dpbmRvdzogdHJ1ZSxcXFxcbiAgICAgICAgICAgICAgICB3aW5kb3dJZDogTVlfUlVMRS50aXRsZVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGVsc2Uge1xcXFxuICAgIGZvciAodmFyIGogaW4gbGlzdCkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGxpc3Rbal0ubmFtZSxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IGxpc3Rbal0uY292ZXJJbWdVcmwgKyAnQFJlZmVyZXI9JyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjIycgKyBsaXN0W2pdLmlkICsgJCgnJykucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvZXInLCB7fSkpLnJ1bGUpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcbi8qZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogbGlzdFtqXS5uYW1lLFxcXFxuICAgICAgICBwaWNfdXJsOiBsaXN0W2pdLmNvdmVySW1nVXJsICsgJ0BSZWZlcmVyPScsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjIycgKyBsaXN0W2pdLmlkICsgJCgnJykucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZXJcXFxcXFxcIilcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMydcXFxcbiAgICB9KTtcXFxcbn0qL1xcXFxuc2V0UmVzdWx0KGQpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pu05pawXFxcIixcXFwicGF0aFxcXCI6XFxcIuabtOaWsFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgZCA9IFtdO1xcXFxuXFxcXG5cXFxcbi8vNTc1OFxcXFxudmFyIHVwbGluayA9ICdodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD01OTcxJ1xcXFxuXFxcXG52YXIgbmFtZSA9IGNvbmZpZy5uYW1lXFxcXG5cXFxcbmxldCBuZXdWZXJzaW9uO1xcXFxubGV0IG15VmVyc2lvbiA9IE1ZX1JVTEUudmVyc2lvbjtcXFxcbi8vbG9nKG15VmVyc2lvbilcXFxcbnRyeSB7XFxcXG4gICAgbmV3VmVyc2lvbiA9IEpTT04ucGFyc2UoZmV0Y2hQQyh1cGxpbmssIHtcXFxcbiAgICAgICAgdGltZW91dDogMTAwMFxcXFxuICAgIH0pKS52ZXJzaW9uO1xcXFxuICAvL2xvZyhuZXdWZXJzaW9uKSAgXFxcXG5cXFxcbn0gY2F0Y2ggKGUpIHtcXFxcbiAgICAvL3RvYXN0KFxcXFxcXFwi6YGT6ZW/5LuT5bqT5oq96aOO5LqG77yM5pys5qyh5pyq5qOA5rWL5Yiw5paw54mI5L+h5oGvXFxcXFxcXCIpO1xcXFxuICAgIG5ld1ZlcnNpb24gPSBteVZlcnNpb247XFxcXG59XFxcXG5sZXQgaXNVcGRhdGUgPSBOdW1iZXIobmV3VmVyc2lvbikgPiBOdW1iZXIobXlWZXJzaW9uKTtcXFxcbmxldCBpc1ZlciA9IE51bWJlcihuZXdWZXJzaW9uKSA9PT0gTnVtYmVyKG15VmVyc2lvbik7XFxcXG5cXFxcbmlmKGdldE15VmFyKCdteUNvbGxlY3Rpb24nKT09Jycpe1xcXFxuaWYgKGlzVXBkYXRlKSB7XFxcXG4gICAgbG9nKCfmnInmlrDniYjmnKw6JyArIG5ld1ZlcnNpb24gKyAnLOW9k+WJjTonICsgbXlWZXJzaW9uKTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIvCfhpnmnInmlrDniYjmnKxcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBg5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQJHtuYW1lfeOAke+/pWhvbWVfcnVsZV91cmzvv6Uke3VwbGlua31gLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbiAgfVxcXFxufVxcXFxuLy9zZXRSZXN1bHQoZClcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6TniYxcXFwiLFxcXCJwYXRoXFxcIjpcXFwidG9rZW5cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5mdW5jdGlvbiBnZXRUb2tlbihkYXRhLCBkZWJ1Zykge1xcXFxuICAgIHZhciB0b2tlbiA9ICcnXFxcXG4gICAgZXZhbFByaXZhdGVKUygnMDRoL0N6b1JJZUZZRU1zN0R3NFJFOVRmbTltWWhrbVlDVzRsODhnaXVwNFRmbmJ6blJqVWF0N0t0SXh3bXlvTXlYRmpRUmpFUW5sMlBTRGxKdEVBYUF5MkpCYm5UUmhWaU1PZWFlZ3JxaEdZdzlyVFhNZWwzL0VxR3dWdlV0RzZCYk1IK2s1NWRtM09RUXlGbklpV2tHcUVRQjVwU2RtVzhFbmI2NVBmYU80a3dSS1RoL0t2V1FTcnJTT3AvNG5GNk12ZnFYNGJDZWZZcnBwZTNJRCtPYVJHdW1RUDlXM3JQOGNHbGZ0WXc1a1FndkJESy90TDg4NDdTQjRyTldRMlViUG9wamZDcnJMaFU5dVdaYm9VQXFacVZEZ09yWFFVQjJUR29IUW5LOHNUTUlXS1pGcHZiODlvNkkzRUt4QVNBekJOd1dZbkRpZWlGN085R3h0SUppYlY2eXlkeW5GSVdoOWRPa2ZzU1orRVR6NlB2clVvRXRGcHdwdFVBU3pJWWlOOHllOHRiUzgrOG1lbjNrckd5YVppYUJITmY5ZkdwTW50MXArWk1YaFd6YnNOVmhDS21UMEk1VndYSEx4dm1uWmpZSjdpUE00SkpmYURNdGZPc2tiMWg5MlVwV0h5UStyWVdKUmpSSHdFV2dQUitoQkkwSGpyS2FMNmgrdHJsWHMxcjZENHNKSFloNis3eDNrUFFxNTA1T2pHSWYrYTRZTlhEQm8vRGRCTlZ3bG1Wcjk0VXI3S3F2R0xmeUdjaTBxK1I5TElybXh6OVV2RTJVOURlT3FDUDAzcFVZMVAvOGUwRnpqOUhmb3VEZnMzTkNJUmJuemVjbFhGM1BMVEgrTERqY28rK2h3SVMzWnFJMEpwZTg5OWszMGJxQkdlbmhKS3ZzWEJFUlNkbnNmZmNTNjdQbEZRQmI1amFCY2Q5NFBsL2JBVzQ0MkkzU1BMY1RCNWhKb2ZVVkRnamxra0pYNnlqTldwYTlhb1pFRWNRMWZVME1QdUxqb3FGdWRDVkRicE44aTI2MXQ1NW4rRExnZ3hCMFhublIxR0RPbUVLOHVaT3M0TTEvVEkvZDVhQ2xvbW10SW9lWENIS3g1eWVRMWVQeGJmTUZUZWRybHExRVFNWHRPM2N1U1Y2alNuTEdVSXdBVEovL0JSVzJlQms1T2xZRFJaRjN3WmpKd1Z4UlV3WTliOTc1eis3VFo3S296eDlUcmh3VEFrRHozbmRFYk5rdkhQMGJ2VUl1R3FMT2JIVkF6K2ZqSUVPb3F1emJ3SDZIMVZ2a201cVdaOXhTQ1JiTkczdGtvdXUwRnR4ZHRqN2ZyVmZlZFZlbEQ0dk5PU0RobTFrelM1YXlkcVZOaGorRkFYN0JFcUVVU2djQ21ycGZlNCs0N29Sb3hsZEdJQ3RSYStWWUxYeUFTZkVDQzN3bHRDZEJka2h2NEtCZlRvZ0dXMzIzZjNmN2huMFJvTDk4a0d0dFRGOXpNT3NwRDNtQ2FaeVZpWTJuenBPZGs0S1JzVC9MUU9DZFNLTnVrN29jM0VMeS9QdVloaFZHbEc3SHhxdTBwaDJoZmRkYmVxWDdqKzBiRG5rdnhJbDY1Zi9CaXJQWGZtekphSUlJaWRGMG5HMC85VERYT2RGdHhWM3VCcjZFOHJFUTJrYXA5T0VudE1jR1dIa3Y3ajd6d21hRm9uVmd2SEgwU1BqUGZQb1Zya0xCVFpSTjVub1JEUnl3cjZUeG1BYjRpZC8rSHZ3NmRWcERNL05WTWdMYnd0WXYxa0FoUmwxdXlBOUk0OHpZSHFaRkJrWm5rZENIKyt5d3Q5R254QjBRY2VJTzZVTWowSUY3bDVCY3g0bkdFSnVBYytCWTdQNlVDK3NiUnY3emhvSmJvRks2YXQ4ZEVUQXo0SnZvOTBJeWhZNTdxVUw0NmZ0V3IxUFlueFhJanIzN0Q2em9aWkJaNjJZbnM2a2oxdWJXb3VKeE56alFybjBtZ2wxaHFTbEhOTEhZaVFVTGJISWYxckNvemYwMXZma3NNTm1YblowSklXdCtNVGR4bmNDaHRJenkrTE00L09LN0wyeFY2TDhRaDFvS2JndjQrT1FSWT0nKVxcXFxuXFxcXG4gICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcXFxcbiAgICBpZiAoZGVidWcpIHtcXFxcbiAgICAgICAgbG9nKCdqc29u77yaJyArIGpzb24pXFxcXG4gICAgfVxcXFxuICAgIGVqID0gZW5jb2RlVVJJQ29tcG9uZW50KGpzb24pXFxcXG4gICAgaWYgKGRlYnVnKSB7XFxcXG4gICAgICAgIGxvZygnZW5jb2RlVVJJ77yaJyArIGVqKVxcXFxuICAgIH1cXFxcbiAgICB2YXIgdGsgPSBldmFsUHJpdmF0ZUpTKCdwL3RadlVqdTljSU8rWUdna2pTM0FBPT0nKVxcXFxuICAgIGlmIChkZWJ1Zykge1xcXFxuICAgICAgICB2YXIgYXJyID0gZXZhbFByaXZhdGVKUygnWnpJbVNhUFVJeDYwNEREb0FkakxTZz09JylcXFxcbiAgICAgICAgbG9nKGFycilcXFxcbiAgICAgICAgbG9nKGFyci5sZW5ndGgpXFxcXG4gICAgICAgIGxvZygnZW5jb2Rl77yaJyArIHRrKVxcXFxuICAgIH1cXFxcbiAgICBtdG9rZW4gPSBtZDUodGspXFxcXG4gICAgaWYgKGRlYnVnKSB7XFxcXG4gICAgICAgIGxvZygnbWQ177yaJyArIG10b2tlbilcXFxcbiAgICB9XFxcXG4gICAgdG9rZW4gPSB0dCArIG10b2tlblxcXFxuICAgIHJldHVybiB0b2tlblxcXFxufVxcXFxuXFxcXG4kLmV4dGVuZCh7XFxcXG4gICAgZ3Rva2VuOmdldFRva2VuXFxcXG59KVxcXFxuXFxcXG4kLmV4cG9ydHMuZ3Rva2VuPWdldFRva2VuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Yqo5oCB6Kej5p6QXFxcIixcXFwicGF0aFxcXCI6XFxcImxhenlcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgVCA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3Rva2VuJyk7XFxcXG52YXIgTCA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2xyYycpO1xcXFxuXFxcXG52YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCh0LGwpID0+IHtcXFxcbiAgICB2YXIgaWQgPSBpbnB1dC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMF1cXFxcblxcXFxuICAgIGlmIChpZC5sZW5ndGggPT0gNCkge1xcXFxuICAgICAgICB2YXIgaW5mbyA9IGlucHV0LnNwbGl0KCcjIycpWzFdXFxcXG4gICAgICAgIHZhciB1cmwgPSBpbmZvLnNwbGl0KCcjJylbMF0gKyAnI2lzTXVzaWM9dHJ1ZSMnXFxcXG4gICAgICAgIHZhciBscmMgPSBpbmZvLnNwbGl0KCcjJylbMV1cXFxcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgIHVybHM6IHVybC5zcGxpdCgpLFxcXFxuICAgICAgICAgICAgbHlyaWM6IGxyY1xcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcblxcXFxuICAgIHZhciBwbGF5cyA9IFtdXFxcXG4gICAgZm9yIChsZXQgcXVhbGl0eSBvZiBbJzIwMDAnLCAnMzIwJywgJzEyOCddKSB7XFxcXG4gICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKVxcXFxuXFxcXG4gICAgICAgIHZhciBkYXRhID0ge1xcXFxuICAgICAgICAgICAgaWQ6IGlkICsgJycsXFxcXG4gICAgICAgICAgICBxdWFsaXR5OiBxdWFsaXR5ICsgJycsXFxcXG4gICAgICAgICAgICBfdDogdGltZSArICcnXFxcXG5cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICAvL2xvZyhkYXRhKVxcXFxuXFxcXG4gICAgICAgIHZhciB0b2tlbiA9IHQuZ3Rva2VuKGRhdGEpXFxcXG5cXFxcbiAgICAgICAgdmFyIHVybCA9IGBodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvbGluaz9pZD0ke2lkfSZxdWFsaXR5PSR7cXVhbGl0eX0mX3Q9JHt0aW1lfSZ0b2tlbj0ke3Rva2VufSNpc011c2ljPXRydWUjYDtcXFxcbiAgICAgICAgcGxheXMucHVzaCh1cmwpXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgLy9sb2cocGxheXMpXFxcXG4gICAgdmFyIHRpdGxlID0gJydcXFxcbiAgICB2YXIgZGVzYyA9ICcnXFxcXG4gICAgdmFyIGxyYyA9ICcnXFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdGl0bGUgPSBpbnB1dC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV07XFxcXG4gICAgICAgIGRlc2MgPSBpbnB1dC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMl07XFxcXG4gICAgfSBjYXRjaCB7fVxcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKVxcXFxuICAgICAgICB2YXIgZGF0YSA9IHtcXFxcbiAgICAgICAgICAgIGlkOiBpZCxcXFxcbiAgICAgICAgICAgIF90OiB0aW1lXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIGJvZHkgPSB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IGlkLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJfdFxcXFxcXFwiOiB0aW1lLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJ0b2tlblxcXFxcXFwiOiB0Lmd0b2tlbihkYXRhKVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvbHlyaWMnLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IE1PQklMRV9VQSxcXFxcbiAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHBzOi8vdG9vbC5saXVtaW5neWUuY24nLFxcXFxuICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXFxcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgICAgIH0pKS5kYXRhO1xcXFxuICAgICAgICBscmMgPSBqc29uLmxyY1xcXFxuICAgICAgICBpZiAobHJjID09IG51bGwpIHtcXFxcbiAgICAgICAgICAgIGxyYyA9ICcnO1xcXFxuICAgICAgICAgICAgdGhyb3cgJydcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICB1cmxzOiBwbGF5cyxcXFxcbiAgICAgICAgICAgIG5hbWVzOiBbJ+aXoOaNnycsICfotoXpq5gnLCAn5qCH5YeGJ10sXFxcXG4gICAgICAgICAgICBseXJpYzogbHJjXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgdmFyIGxyYyA9IHBkZmgocmVxdWVzdCgnaHR0cDovL3poYW5uZWkuYmFpZHUuY29tL2NzZS9zZWFyY2g/cT0nICsgdGl0bGUgKyAnLScgKyBkZXNjICsgJyZzPTIyMzc5NzYzODk2Nzg2OTM1MzAmZW50cnk9MScpLCAnLnJlc3VsdC1saXN0JiZhJiZocmVmJyk7XFxcXG5cXFxcbiAgICAgICAgICAgIHZhciBscmMgPSAnaHR0cHM6Ly93d3cuaWdlY2lrdS5jb20nICsgcGRmaChyZXF1ZXN0KGxyYyksICcuZG93bmxvYWQmJmEmJmhyZWYnKS5yZXBsYWNlKCd0eHQnLCAnbHJjJyk7XFxcXG4gICAgICAgIH0gY2F0Y2gge31cXFxcblxcXFxuICAgICAgICAobHJjICE9IG51bGwgfHwgbHJjICE9ICcnKSA/IGxyYzogbC5nZXRscmMoYCR7dGl0bGV9LSR7ZGVzY31gKVxcXFxuXFxcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICB1cmxzOiBwbGF5cyxcXFxcbiAgICAgICAgICAgIG5hbWVzOiBbJ+aXoOaNnycsICfotoXpq5gnLCAn5qCH5YeGJ10sXFxcXG4gICAgICAgICAgICBseXJpYzogbHJjXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufSxULEwpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5q2M6K+NXFxcIixcXFwicGF0aFxcXCI6XFxcImxyY1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbmZ1bmN0aW9uIGdldExyYyh0aXRsZSkge1xcXFxuICAgIHZhciBscmMgPSAnJ1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciBzb25ncyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly8xMjEuNC43OC4xMDY6NDAwMS9zZWFyY2g/a2V5d29yZHM9JyArIHRpdGxlKSkucmVzdWx0LnNvbmdzXFxcXG4gICAgICAgIHZhciBsaXN0ID0gc29uZ3MubWFwKHggPT4ge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHtcXFxcbiAgICAgICAgICAgICAgICBpZDogeC5pZCxcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogeC5uYW1lXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIHZhciBscmNzID0gSlNPTi5wYXJzZShmZXRjaChgaHR0cDovL211c2ljLjE2My5jb20vYXBpL3NvbmcvbHlyaWM/b3M9cGMmaWQ9JHtsaXN0WzBdLmlkfSZsdj0tMSZrdj0tMSZ0dj0tMWApKVxcXFxuICAgICAgICAvL2xvZyhscmNzLmxyYy5seXJpYylcXFxcbiAgICAgICAgbHJjID0gbHJjcy5scmMubHlyaWNcXFxcbiAgICB9IGNhdGNoIHt9XFxcXG4gICAgXFxcXG4gICAgcmV0dXJuIGxyY1xcXFxufVxcXFxuXFxcXG4kLmV4cG9ydHMuZ2V0bHJjID0gZ2V0THJjXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwiSDXkuoznuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiSDVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiIyNcXFxcXFxcIilbMV0uc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzBdXFxcXG5cXFxcbnZhciBUID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdG9rZW4nKTtcXFxcblxcXFxudmFyIHF1YWxpdHkgPSBzdG9yYWdlMC5nZXRJdGVtKCdxdWFsaXR5JywgJzMyMCcpXFxcXG5cXFxcblxcXFxudmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgodCwgcSkgPT4ge1xcXFxuXFxcXG4gICAgdmFyIGlkID0gaW5wdXQuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzBdO1xcXFxuXFxcXG4gICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpXFxcXG4gICAgdmFyIHF1YWxpdHkgPSBxXFxcXG5cXFxcbiAgICB2YXIgZGF0YSA9IHtcXFxcbiAgICAgICAgaWQ6IGlkICsgJycsXFxcXG4gICAgICAgIHF1YWxpdHk6IHF1YWxpdHkgKyAnJyxcXFxcbiAgICAgICAgX3Q6IHRpbWUgKyAnJ1xcXFxuXFxcXG4gICAgfVxcXFxuXFxcXG4gICAgdmFyIHRva2VuID0gdC5ndG9rZW4oZGF0YSlcXFxcblxcXFxuXFxcXG4gICAgdmFyIHVybCA9IGBodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvbGluaz9pZD0ke2lkfSZxdWFsaXR5PSR7cXVhbGl0eX0mX3Q9JHt0aW1lfSZ0b2tlbj0ke3Rva2VufSNpc011c2ljPXRydWUjYDtcXFxcbiAgICAvL2xvZyh1cmwpXFxcXG5cXFxcbiAgICByZXR1cm4gdXJsXFxcXG59LCBULCBxdWFsaXR5KVxcXFxuXFxcXG5cXFxcblxcXFxudmFyIHRpbWUgPSBEYXRlLm5vdygpXFxcXG5cXFxcbnZhciBkYXRhID0ge1xcXFxuICAgIGlkOiAnZCcgKyBpZCxcXFxcbiAgICBfdDogdGltZVxcXFxufVxcXFxuXFxcXG52YXIgYm9keSA9IHtcXFxcbiAgICBcXFxcXFxcImlkXFxcXFxcXCI6ICdkJyArIGlkLFxcXFxuICAgIFxcXFxcXFwiX3RcXFxcXFxcIjogdGltZSxcXFxcbiAgICBcXFxcXFxcInRva2VuXFxcXFxcXCI6IFQuZ3Rva2VuKGRhdGEpXFxcXG59XFxcXG5cXFxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvdWknKSkucnVsZSkgXFxcXG5cXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5saXVtaW5neWUuY24vbS9hcGkvc2VhcmNoL3BsYXlsaXN0Jywge1xcXFxuICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IE1PQklMRV9VQSxcXFxcbiAgICAgICAgJ09yaWdpbic6ICdodHRwczovL3Rvb2wubGl1bWluZ3llLmNuJyxcXFxcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICB9LFxcXFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxcXFxuICAgIG1ldGhvZDogXFxcXFxcXCJQT1NUXFxcXFxcXCJcXFxcbn0pKS5kYXRhLmxpc3Q7XFxcXG5cXFxcbmlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7XFxcXG4gICAgdG9hc3QoJ+atjOWNleaVsOaNruS4uuepuicpXFxcXG4gICAgYmFjayhmYWxzZSlcXFxcbn1cXFxcblxcXFxubGV0IOS8oOi+k+WIl+ihqCA9IFtdXFxcXG5sZXQgeGQgPSBKU09OLnN0cmluZ2lmeShsaXN0KSA9PSBKU09OLnN0cmluZ2lmeShzdG9yYWdlMC5nZXRWYXIoJ+aVsOaNruagoeWvuScsIFtdKSk7XFxcXG5pZiAoeGQgPT0gZmFsc2UpIHtcXFxcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXFxcbiAgICAgICAgbGV0IHRpdGxlID0gbGlzdFtqXS5uYW1lO1xcXFxuICAgICAgICBsZXQgZmlyc3QgPSBsaXN0WzBdLm5hbWU7XFxcXG4gICAgICAgIGxldCBkZXNjID0gbGlzdFtqXS5hcnRpc3RbMF0ubmFtZTtcXFxcbiAgICAgICAgbGV0IGltZyA9IGxpc3Rbal0ucGljO1xcXFxuICAgICAgICBsZXQgdXJsID0gbGlzdFtqXS5pZCArICcjJyArIGxpc3Rbal0ubHlyaWMgKyBsYXp5XFxcXG4gICAgICAgIC8qIOW/q+mAn+WRiuiviXg15YiX6KGo5qC35byP77yM5b6I6YeN6KaBICovXFxcXG4gICAgICAgIGxldCBjb2xfdHlwZSA9IHN0b3JhZ2UwLmdldEl0ZW0oJ2g1Y29sX3R5cGUnLCdhdmF0YXInKVxcXFxuICAgICAgICBwdXRWYXIoJ+agt+W8jycsIGNvbF90eXBlKVxcXFxuICAgICAgICBwdXRWYXIoJ+mAieS4reminOiJsicsICcjM0NFNjhFJyk7XFxcXG4gICAgICAgIFxcXFxuICAgICAgICB4eSA9ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0nICsgZ2V0VmFyKCfpgInkuK3popzoibInKSArICc+JyArIHRpdGxlICsgJzwvZm9udD48L2I+JztcXFxcbiAgICAgICAgXFxcXG4gICAgICAgIHh5PSB0aXRsZVN0eWxlKHh5LGNvbF90eXBlKVxcXFxuICAgICAgICAgICAgXFxcXG5cXFxcblxcXFxuXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUgPT0gZ2V0VmFyKCfntKLlvJUnLCBmaXJzdCkgJiYgTVlfUEFHRSA9PSAxID8geHkgOiB0aXRsZSxcXFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxcXG4gICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBjb2xfdHlwZSxcXFxcbiAgICAgICAgICAgIHVybDogJCgnI25vSGlzdG9yeSMjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh0aXRsZSwgZmlyc3QsIHh5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcign57Si5byVJykgIT0gdGl0bGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFg1V2ViVmlldyhnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2R6SG91c2UvaHRtbC9oNemfs+S5kOaSreaUvuWZqC5odG1sJykpXFxcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oZ2V0VmFyKCfntKLlvJUnLCBmaXJzdCksIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIoJ+e0ouW8lScsIGZpcnN0KVxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHRpdGxlLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogeHlcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCfntKLlvJUnLCB0aXRsZSlcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd25sb2FkOi8vJyArIGdldFZhcign5pKt5pS+6ZO+5o6lJyk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxcXG4gICAgICAgICAgICB9LCB0aXRsZSwgZmlyc3QsIHh5KSxcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgaWQ6IHRpdGxlXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICDkvKDovpPliJfooagucHVzaCh7XFxcXG4gICAgICAgICAgICDlsIHpnaI6IGltZyxcXFxcbiAgICAgICAgICAgIOabsuWQjTogdGl0bGUsXFxcXG4gICAgICAgICAgICDmrYzmiYs6IGRlc2MsXFxcXG4gICAgICAgICAgICDlnLDlnYA6IHVybCxcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG5cXFxcbiAgICDkvKDovpPliJfooaggPSBzdG9yYWdlMC5nZXRWYXIoJ+e8k+WtmOaVsOaNricsIFtdKS5jb25jYXQo5Lyg6L6T5YiX6KGoKVxcXFxuICAgIHN0b3JhZ2UwLnB1dFZhcign57yT5a2Y5pWw5o2uJywg5Lyg6L6T5YiX6KGoKVxcXFxuICAgIHN0b3JhZ2UwLnB1dFZhcign5pWw5o2u5qCh5a+5JywgbGlzdClcXFxcbn1cXFxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgY2xlYXJWYXIoJ+agt+W8jycpO1xcXFxuICAgIGNsZWFyVmFyKCfntKLlvJUnKTtcXFxcbiAgICBjbGVhclZhcign5pKt5pS+6ZO+5o6lJyk7XFxcXG4gICAgY2xlYXJWYXIoJ+aVsOaNruagoeWvuScpO1xcXFxuICAgIGNsZWFyVmFyKCfnvJPlrZjmlbDmja4nKTtcXFxcbn0pKVxcXFxu5Lyg6L6T5YiX6KGoID0gc3RvcmFnZTAuZ2V0VmFyKCfnvJPlrZjmlbDmja4nKVxcXFxucHV0VmFyKCfpn7PkuZDmlbDmja4nLCBKU09OLnN0cmluZ2lmeSjkvKDovpPliJfooagpKVxcXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxcXFxuICAgICAgICBkZXNjOiAnMzAwJiZmbG9hdCcsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICB1YTogTU9CSUxFX1VBLFxcXFxuICAgICAgICAgICAgYXV0b1BsYXk6IHRydWVcXFxcbiAgICAgICAgfSxcXFxcbiAgICAgICAgdXJsOiBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2R6SG91c2UvaHRtbC9oNemfs+S5kOaSreaUvuWZqC5odG1sJylcXFxcbiAgICB9KTtcXFxcbn1cXFxcblxcXFxuc2V0UmVzdWx0KGQpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6K6+572uXFxcIixcXFwicGF0aFxcXCI6XFxcInNldFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW11cXFxcblxcXFxuXFxcXG5cXFxcbmlmIChNWV9QQUdFID09IDEpIHtcXFxcblxcXFxuICAgIHZhciBkZW1vID0gYOKAnOKAnOKAneKAnTxzbWFsbD48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAke2dldFJhbmdlQ29sb3JzKCl9XFxcXFxcXCI+5qC35byP6aKE6KeIYCArICc8c3Bhbj48L3NtYWxsPidcXFxcblxcXFxuICAgIGRlbW8gPSB0aXRsZVN0eWxlKGRlbW8sc3R5bGUpXFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZGVtbyxcXFxcbiAgICAgICAgY29sX3R5cGU6IHN0b3JhZ2UwLmdldEl0ZW0oJ3N0eWxlJywgJ3RleHRfNCcpLFxcXFxuICAgICAgICBpbWc6ICdodHRwczovL2NkbjMuaWNvbmZpbmRlci5jb20vZGF0YS9pY29ucy9idWRpY29uLWNocm9tYS1tdXNpYy8yNC9wbGF5LWNpcmNsZS02NC5wbmcnLFxcXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5J1xcXFxuICAgIH0pXFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+Wtl+S9k+agt+W8jzonICsgc3RvcmFnZTAuZ2V0SXRlbSgnZnN0eWxlJywgJycpLFxcXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IGFsbF9jb2xzID0gWycnLCAnc21hbGwnLCAnYiddXFxcXG4gICAgICAgICAgICBsZXQgY29sID0gc3RvcmFnZTAuZ2V0SXRlbSgnZnN0eWxlJywgJycpXFxcXG4gICAgICAgICAgICBsZXQg5a2X5L2T5qC35byPID0gYWxsX2NvbHMubWFwKChpdCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBpdCA9PT0gY29sID8gJ+Keoe+4jycgKyBpdCA6IGl0O1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBsZXQgdGlwcyA9ICfor7fpgInmi6nmoLflvI8nO1xcXFxuICAgICAgICAgICAgcmV0dXJuICQo5a2X5L2T5qC35byPLCAyLCB0aXBzKS5zZWxlY3QoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgv4p6h77iPL2csICcnKTtcXFxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdmc3R5bGUnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxcXG5cXFxcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdmc3R5bGUnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5a2X5L2T5qC35byPOicgKyBzdG9yYWdlMC5nZXRJdGVtKCdmc3R5bGUnLCAnJylcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaLlrZfkvZPmoLflvI/kuLo6JyArIGlucHV0O1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBpZDogJ2ZzdHlsZSdcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG5cXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBg6ZqP5py66aKc6ImyYCxcXFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBhbGxfY29scyA9IFsn5pW05L2T6ZqP5py6OjEnLCAn5YWo6YOo6ZqP5py6OjInXVxcXFxuICAgICAgICAgICAgYWxsX2NvbHMudW5zaGlmdCgn5Zu65a6a6aKc6ImyOicgKyBpbnB1dClcXFxcbiAgICAgICAgICAgIHJldHVybiAkKGFsbF9jb2xzLCAxLCAnMeaVtOS9k+maj+acuiAy5YWo6YOo6ZqP5py6Jykuc2VsZWN0KCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBpbnB1dC5zcGxpdCgnOicpWzFdXFxcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnY29sb3InLCBjb2xvcik7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgZGVzYzogJyPlvIDlpLTpopzoibLku6PnoIHmiJbogIUx5ZKMMicsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHN0b3JhZ2UwLmdldEl0ZW0oJ2NvbG9yJywgJyMwMDAnKSxcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgfSlcXFxcblxcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICflm77moIfmoLflvI8nLFxcXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IGFsbF9jb2xzID0gZ2V0Q29sVHlwZXMoKTtcXFxcbiAgICAgICAgICAgIGFsbF9jb2xzID0gYWxsX2NvbHMuZmlsdGVyKGl0ZW0gPT4gLyhpY298dGV4dF98YXZhdGFyfGJ1dHRvbikvLnRlc3QoaXRlbSkgJiYgIS8oc2VhcmNoKS8udGVzdChpdGVtKSlcXFxcbiAgICAgICAgICAgIHJldHVybiAkKGFsbF9jb2xzLCAyLCAn6K+35Zu+5qCH5pi+56S65qC35byPJylcXFxcbiAgICAgICAgICAgICAgICAuc2VsZWN0KCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnc3R5bGUnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogc3RvcmFnZTAuZ2V0SXRlbSgnc3R5bGUnLCAndGV4dF80JyksXFxcXG4gICAgICAgIH1cXFxcblxcXFxuICAgIH0pXFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+WOn+eUn+S6jOe6p+agt+W8jycsXFxcXG4gICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICBsZXQgYWxsX2NvbHMgPSBnZXRDb2xUeXBlcygpO1xcXFxuICAgICAgICAgICAgcmV0dXJuICQoYWxsX2NvbHMsIDIsICfor7fpgInmi6nljp/nlJ/kuoznuqfnuqfmmL7npLrmoLflvI8nKVxcXFxuICAgICAgICAgICAgICAgIC5zZWxlY3QoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdjb2xfdHlwZScsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5Y6f55Sf5LqM57qn5pi+56S65qC35byPJyArIGlucHV0XFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBzdG9yYWdlMC5nZXRJdGVtKCdjb2xfdHlwZScsICdhdmF0YXInKSxcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgfSlcXFxcbiAgICBcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ0g15LqM57qn5qC35byPJyxcXFxcbiAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBhbGxfY29scyA9IGdldENvbFR5cGVzKCk7XFxcXG4gICAgICAgICAgICBhbGxfY29scyA9IGFsbF9jb2xzLmZpbHRlcihpdGVtID0+IS8oYmxhbmt8bGluZXxyaWNofGxvbmd8eDV8aW5wdXR8c2VhcmNoKS8udGVzdChpdGVtKSYmICEvXihwaWNfMXxwaWNfMnxtb3ZpZV8yfG1vdmllXzMpJC9tLnRlc3QoaXRlbSkpXFxcXG4gICAgICAgICAgICByZXR1cm4gJChhbGxfY29scywgMiwgJ+ivt+mAieaLqUg15LqM57qn5pi+56S65qC35byPJylcXFxcbiAgICAgICAgICAgICAgICAuc2VsZWN0KCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnaDVjb2xfdHlwZScsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2iSDXkuoznuqfmmL7npLrmoLflvI8nICsgaW5wdXRcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHN0b3JhZ2UwLmdldEl0ZW0oJ2g1Y29sX3R5cGUnLCAnYXZhdGFyJyksXFxcXG4gICAgICAgIH1cXFxcblxcXFxuICAgIH0pXFxcXG4gICAgXFxcXG4gICAgdmFyIHRpdGxlPSfmtYvor5UnXFxcXG4gICAgcHV0VmFyKCfpgInkuK3popzoibInLCAnIzNDRTY4RScpO1xcXFxuICAgIHRpdGxlPSfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0nICsgZ2V0VmFyKCfpgInkuK3popzoibInKSArICc+JyArIHRpdGxlICsgJzwvZm9udD48L2I+JyxcXFxcbiAgICB0aXRsZSA9IHRpdGxlU3R5bGUodGl0bGUsc3RvcmFnZTAuZ2V0SXRlbSgnaDVjb2xfdHlwZScsJ2F2YXRhcicpKVxcXFxuICAgIFxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOnRpdGxlLFxcXFxuICAgICAgICBpbWc6J2hpa2VyOi8vaW1hZ2VzL2hvbWVfcGljMycsXFxcXG4gICAgICAgIGNvbF90eXBlOnN0b3JhZ2UwLmdldEl0ZW0oJ2g1Y29sX3R5cGUnLCdhdmF0YXInKVxcXFxuICAgICAgICBcXFxcbiAgICB9KVxcXFxuXFxcXG5cXFxcbiAgICBzZXRIb21lUmVzdWx0KGQpXFxcXG5cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnlYzpnaLlpITnkIZcXFwiLFxcXCJwYXRoXFxcIjpcXFwidWlcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5cXFxcbmZ1bmN0aW9uIGxhYlRpdGxlKHN0cixzdHlsZSkge1xcXFxuICAgIFxcXFxuICAgIGlmICgvKGF2YXRhcnxpY29uX3NtYWxsXzMpLy50ZXN0KHN0eWxlKSkge1xcXFxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgn4oCc4oCc4oCd4oCdJywgJycpXFxcXG4gICAgfVxcXFxuICAgIGlmICgvKGljb25fMnx0ZXh0X2ljb24pLy50ZXN0KHN0eWxlKSkge1xcXFxuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgn4oCc4oCc4oCd4oCdJywgJycpXFxcXG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC88W14+XSs+L2dtLCAnJylcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHN0clxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBzZXRGc3l0bGUoc3RyKSB7XFxcXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oPFxcXFxcXFxcLz8pc21hbGwoPikvZ20sIChhLCBiLCBjKSA9PiB7XFxcXG4gICAgICAgIHZhciBmc3R5bGUgPSBzdG9yYWdlMC5nZXRJdGVtKCdmc3R5bGUnLCAnJylcXFxcbiAgICAgICAgaWYgKGZzdHlsZSAhPSAnJykge1xcXFxuICAgICAgICAgICAgcmV0dXJuIGIgKyBmc3R5bGUgKyBjXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJydcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIHRpdGxlU3R5bGUoc3RyLHMpIHtcXFxcbiAgICBzdHIgPSBsYWJUaXRsZShzdHIscylcXFxcbiAgICBzdHIgPSBzZXRGc3l0bGUoc3RyKVxcXFxuICAgIHJldHVybiBzdHJcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmnIDmlrDkuIrkvKBcXFwiLFxcXCJwYXRoXFxcIjpcXFwidXBcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZD1bXVxcXFxudmFyIHBhZ2UgPSBNWV9QQUdFXFxcXG5cXFxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvdG9rZW4nKSkucnVsZSkgXFxcXG5cXFxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbGF6eScpKS5ydWxlKSBcXFxcblxcXFxudmFyIHRpbWUgPSBEYXRlLm5vdygpXFxcXG5cXFxcblxcXFxudmFyIGRhdGEgPSB7XFxcXG4gICAgcGFnZTogcGFnZSxcXFxcbiAgICBfdDogdGltZVxcXFxufVxcXFxuXFxcXG52YXIgYm9keSA9IHtcXFxcbiAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICBcXFxcXFxcIl90XFxcXFxcXCI6IHRpbWUsXFxcXG4gICAgXFxcXFxcXCJ0b2tlblxcXFxcXFwiOiBnZXRUb2tlbihkYXRhKVxcXFxufVxcXFxuXFxcXG5cXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL3Rlc3QucXVhbmppYW4uY29tLmNuL20vYXBpL3RvcC9zb25nJywge1xcXFxuICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IE1PQklMRV9VQSxcXFxcbiAgICAgICAgJ09yaWdpbic6ICdodHRwczovL3Rvb2wubGl1bWluZ3llLmNuJyxcXFxcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXFxcbiAgICB9LFxcXFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxcXFxuICAgIG1ldGhvZDogXFxcXFxcXCJQT1NUXFxcXFxcXCJcXFxcbn0pKS5kYXRhLmxpc3Q7XFxcXG5cXFxcbmlmIChsaXN0Lmxlbmd0aCA9PSAwKSB7XFxcXG4gICAgdG9hc3QoJ+epuicpXFxcXG59XFxcXG5saXN0Lm1hcCh4ID0+IHtcXFxcbiAgICAvL+WkhOeQhuWbvueJh1xcXFxuICAgIHZhciBwaWMgPSB4LnBpY1xcXFxuICAgIGlmIChwaWMgPT0gdW5kZWZpbmVkKSB7XFxcXG4gICAgICAgIHBpYyA9IHguYWxidW0ucGljXFxcXG4gICAgfVxcXFxuICAgIHBpYyA9IHBpYy5yZXBsYWNlKC8oXFxcXFxcXFw/fFxcXFxcXFxcQCkuKiQvZ20sICcnKVxcXFxuXFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdmFyIGFydCA9IHguYXJ0aXN0WzBdLm5hbWVcXFxcbiAgICB9IGNhdGNoIHtcXFxcbiAgICAgICAgYXJ0ID0gJydcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcXFxuICAgICAgICBkZXNjOiBhcnQsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXFxcbiAgICAgICAgaW1nOiBwaWMsXFxcXG4gICAgICAgIHVybDogeC5oYXNoICsgJyMnICsgeC5uYW1lICsgJyMnICsgYXJ0ICsgbGF6eVxcXFxuICAgIH0pXFxcXG59KVxcXFxuXFxcXG5cXFxcbnNldEhvbWVSZXN1bHQoZClcXFwifV1cIn0iLCJwaWNVcmwiOiJodHRwOi8vcDEubXVzaWMuMTI2Lm5ldC80V3U0cGpWRXl5a21Ia3VpZGZZdVBRPT0vMTA5OTUxMTY4NjA4OTIzMTk5LmpwZz9pbWFnZVZpZXc9MSZ0aHVtYm5haWw9ODAweTgwMCZlbmxhcmdlPTElN0NpbWFnZVZpZXc9MSZ3YXRlcm1hcmsmdHlwZT0xJmltYWdlPWIySnFMM2MxYmtSclRVdFJkM0pNUkdwRWVrTnRPRTl0THpJNU16TXdPREV4TXpnekx6WTNOMkV2TWpBeU16WXhNekV4TXpjek1DOTRPRFl4TVRZNE9USXhPVFExTURJMk55NXdibWM9JmR4PTAmZHk9MCU3Q3dhdGVybWFyayZ0eXBlPTEmaW1hZ2U9YjJKcUwzZHZia1JzYzB0VmQzSk1RMnhIYWtOdE9FdDRMekkzTmpFd05EazNNRFl5TDJWbE9UTXZPVEl4WVM4Mk5qRTRMemRoTURjNVpEZzBOVFl5TURBd1ptVmtaV0ptTWpWallqRTROamhrT1dFekxuQnVadz09JmR4PTAmZHk9MCU3Q2ltYWdlVmlldz0xJnRodW1ibmFpbD0xNDB5MTQwJkBSZWZlcmVyPSIsInRpdGxlIjoi5pel57O75LiA5aSPIHwg5riF5paw5pel6Z+z5bim5p2l5YeJ54i95LiA5aSPIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement