CINXE.COM
华为智能光伏官网-太阳能光伏发电站解决方案-光伏逆变器
<!DOCTYPE html> <html lang="zh" data-region="cn"> <head id="Head1"><meta name="keywords" content="华为光伏,光伏发电站,太阳能光伏发电站,华为光伏逆变器,光伏电站解决方案,华为,Huawei, FusionSolar, 华为光伏,智能光伏,光伏业务,光伏发电,逆变器,光伏逆变器,光伏电站,网络能源,大型地面,领跑者,分布式,户用,扶贫"><meta name="description" content="华为智能光伏推出领先的户用光伏发电、户用光伏储能、工商业光伏发电、工商业储能电站、大型地面智能光伏电站建设的解决方案,华为光伏逆变器,储能、智能光伏优化器等产品大幅提升光伏发电效率,更多太阳能光伏发电解决方案,请关注华为智能官方官网。,华为率先将20多年积累的数字信息技术、互联网技术与光伏技术进行跨界融合,推出领先的智能光伏解决方案。基于简单、全数字化、全球化自动营维等创新理念,打造 “高效发电、智能营维、安全可靠” 的智能光伏电站。"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title> 华为智能光伏官网-太阳能光伏发电站解决方案-光伏逆变器 </title> <meta name="applicable-device" content="pc,mobile"> <link rel="canonical" href="https://solar.huawei.com/cn/"> <link rel="stylesheet" href="/Assets/Solar/v4/css/aui3.css?ver=202411131551"> <link rel="stylesheet" href="/Assets/Solar/v4/css/common.css?ver=202411131551"> <script src="/Assets/Solar/v4/js/utils/jquery-3.6.0.min.js?ver=202411131551"></script> <link rel="stylesheet" type="text/css" href="/-/media/SolarV4/solar-version2/common/seo/common-style.css?ver=202411131551"> <style> .nav-top-right .js-header-login,.nav-top-right .js-header-account,.nav-top-right .js-header-logout,.container .js-mheader-login,.container .js-mheader-account{ display:none !important; } </style><link rel="stylesheet" type="text/css" href="/Assets/Solar/v4/js/utils/swiper-new.min.css?ver=202411131551"> <link rel="stylesheet" type="text/css" href="/Assets/Solar/v4/css/index.css?ver=202411131551"> <style type="text/css"> .home_global .home_glb_content { will-change: transform; } /* 修改首页增加一屏轮播的被切情况 -- 开始 */ .dig_banner .dig_swiper_picture>img { height: auto; } @media screen and (max-width: 1440px) { .dig_banner .dig_swiper_picture>img { height: auto; } } .dig_banner { height: auto; } /* 修改首页增加一屏轮播的被切情况 -- 结束 */ .home_banner_title>p{ line-height: 80px; } .home_banner_title span{ display: block; line-height: 55px; } .home_banner_title p+span{ margin-top: 30px; } @media screen and (max-width: 768px){ .home_banner_title>p{ font-size: 27px; line-height: 36px; } .home_banner_title span{ font-size: 14px; line-height: 23px; } } </style><link rel="Shortcut Icon" href="/Assets/solar/v4/img/img_ent_en_logo_ico.ico"></head> <body class="aui3 ev_no_wcag"> <form method="post" action="/cn" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTc0MDY0NDU1Mw8WAh4TVmFsaWRhdGVSZXF1ZXN0TW9kZQIBFgYCAg9kFgJmD2QWAmYPZBYMAgEPFgIeBFRleHQFjDA8ZGl2IGNsYXNzPSJuYXYtYWxsTGFuZ0JveCI+CiAgICA8ZGl2IGNsYXNzPSJpY29uLWNsb3NlIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImN1cnItbGFuZyI+PHNwYW4gY2xhc3M9Imljb24tY3VyciI+PC9zcGFuPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9lbiI+RnVzaW9uU29sYXIgR2xvYmFsIC8gRW5nbGlzaDwvYT4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWxsTGFuZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iYXJlYUl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhVGV4dCI+QXNpYSBQYWNpZmljPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdMaXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYXUiPkF1c3RyYWxpYSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NuIj5DaGluYSAvIOeugOS9k+S4reaWhzwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vaGsiPkhvbmcgS29uZywgQ2hpbmEgLyDnuYHpq5TkuK3mloc8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2lkIj5JbmRvbmVzaWEgLyBJbmRvbmVzaWFuPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9qcCI+SmFwYW4gLyDml6XmnKzoqp48L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL215Ij5NYWxheXNpYSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3BoIj5QaGlsaXBwaW5lcyAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3NnIj5TaW5nYXBvcmUgLyBFbmdsaXNoPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9rciI+U291dGggS29yZWEgLyDtlZzqta3slrQ8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3RoIj5UaGFpbGFuZCAvIOC5hOC4l+C4ojwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vdm4iPlZpZXRuYW0gLyBFbmdsaXNoPC9hPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhSXRlbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFyZWFUZXh0Ij5FdXJvcGU8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0xpc3QiPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYXQiPkF1c3RyaWEgLyBEZXV0c2NoPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9iZS1mciI+QmVsZ2l1bSAvIEZyYW7Dp2FpczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYmUiPkJlbGdpdW0gLyBOZWRlcmxhbmRzPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9iZyI+QnVsZ2FyaWEgLyDQsdGK0LvQs9Cw0YDRgdC60Lg8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2hyIj5Dcm9hdGlhIC8gaHJ2YXRza2k8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2N6Ij5DemVjaGlhIC8gxI1lxaF0aW5hPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9kayI+RGVubWFyayAvIERhbnNrPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9mciI+RnJhbmNlIC8gRnJhbsOnYWlzPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9kZSI+R2VybWFueSAvIERldXRzY2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2dyIj5HcmVlY2UgLyDOlc67zrvOt869zrnOus6sPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9odSI+SHVuZ2FyeSAvIEh1bmdhcmlhbjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vaWUiPklyZWxhbmQgLyBFbmdsaXNoPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9pdCI+SXRhbHkgLyBJdGFsaWFubzwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbmwiPk5ldGhlcmxhbmRzIC8gRHV0Y2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3BsIj5Qb2xhbmQgLyBQb2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3B0Ij5Qb3J0dWdhbCAvIHBvcnR1Z3XDqnM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3JvIj5Sb21hbmlhIC8gcm9tw6JuxIM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3NrIj5TbG92YWtpYSAvIHNsb3ZlbsSNaW5hPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9lcyI+U3BhaW4gLyBFc3Bhw7FvbDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vc2UiPlN3ZWRlbiAvIFN2ZW5za2E8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NoIj5Td2l0emVybGFuZCAvIERldXRzY2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NoLWZyIj5Td2l0emVybGFuZCAvIEZyYW7Dp2FpczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vdHIiPlTDvHJraXllIC8gVMO8cmvDp2U8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3VhIj5Va3JhaW5lIC8g0KPQutGA0LDRl9C90LA8L2E+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFyZWFJdGVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXJlYVRleHQiPkxhdGluIEFtZXJpY2E8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0xpc3QiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9iciI+QnJhemlsIC8gUG9ydHVndWVzZTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbGF0YW0iPkxhdGluIEFtZXJpY2EgLyBFc3Bhw7FvbDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbXgiPk3DqXhpY28gLyBFc3Bhw7FvbDwvYT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYXJlYUl0ZW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhcmVhVGV4dCI+TWlkZGxlIEVhc3QgJmFtcDsgQWZyaWNhPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdMaXN0Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vZWciPkVneXB0IC8g2KfZhNmE2LrYqSDYp9mE2LnYsdio2YrYqTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20va2UiPktlbnlhIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vbWEiPk1vcm9jY28gLyBGcmFuw6dhaXM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL25nIj5OaWdlcmlhIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vcGsiPlBha2lzdGFuIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vc2EiPlNhdWRpIEFyYWJpYSAvINin2YTZhNi62Kkg2KfZhNi52LHYqNmK2KkgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9zYS1lbiI+U2F1ZGkgQXJhYmlhIC8gRW5nbGlzaDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vemEiPlNvdXRoIEFmcmljYSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsYW5nSXRlbSI+PGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL3RuIj5UdW5pc2lhIC8gRnJhbsOnYWlzPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGFuZ0l0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9hZSI+VUFFIC8g2KfZhNmE2LrYqSDYp9mE2LnYsdio2YrYqTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxhbmdJdGVtIj48YSBocmVmPSJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vYWUtZW4iPlVBRSAvIEVuZ2xpc2g8L2E+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2Pgo8L2Rpdj5kAgIPFgIeC18hSXRlbUNvdW50AgYWDGYPZBYEZg8VBA8vY24vaG9tZS1vd25lcnMA5AR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYxNUIyM0Y3JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3lrrbluq3kuJrkuLsnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0hvbWUgT3duZXJzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5a625bqt5Lia5Li7ZAIBDxYCHwIC/////w9kAgEPZBYEZg8VBBMvY24vYnVzaW5lc3Mtb3duZXJzAOwEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGMUM1RUQ1MicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LyB5Lia5Lia5Li7Jyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0J1c2luZXNzIE93bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5LyB5Lia5Lia5Li7ZAIBDxYCHwIC/////w9kAgIPZBYEZg8VBBgvY24vdXRpbGl0eS1wbGFudC1vd25lcnMA8QR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYzNzhFQzE3JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3nlLXnq5nkuJrkuLsnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonVXRpbGl0eSBQbGFudCBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOeUteermeS4muS4u2QCAQ8WAh8CAv////8PZAIDD2QWBGYPFQQdL2NuL3Byb2Zlc3Npb25hbHMvcmVzaWRlbnRpYWwA6gR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYxNDVGNUIxJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuJPkuJrkurrlo6snLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5LiT5Lia5Lq65aOrZAIBDxYEHwICBh4HVmlzaWJsZWcWDGYPZBYCZg8VBB0vY24vcHJvZmVzc2lvbmFscy9yZXNpZGVudGlhbACcBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjYyREQ1RUQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS4k+S4muS6uuWjqy3lrrbluq3nu7/nlLUnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnUmVzaWRlbnRpYWwgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOWutuW6ree7v+eUtWQCAQ9kFgJmDxUEFS9jbi9wcm9mZXNzaW9uYWxzL2MtaQCTBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjJCQjI1RTknLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS4k+S4muS6uuWjqy3ooYzkuJrnu7/nlLUnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKydDJkkgU21hcnQgUFYgJiBFU1MgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOihjOS4mue7v+eUtWQCAg9kFgJmDxUEGS9jbi9wcm9mZXNzaW9uYWxzL3V0aWxpdHkAkgV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYxRUMyNzg0JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuJPkuJrkurrlo6st5pm66IO95YWJ5LyPJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ1V0aWxpdHkgU21hcnQgUFYgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuaZuuiDveWFieS8j+eUteermWQCAw9kFgJmDxUEFS9jbi9wcm9mZXNzaW9uYWxzL2VzcwCaBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjc3OERBOEQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS4k+S4muS6uuWjqy3mmbrog73nu4TkuLInLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnVXRpbGl0eSBTbWFydCBTdHJpbmcgRVNTIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRXmmbrog73nu4TkuLLlvI/lgqjog71kAgQPZBYCZg8VBBwvY24vcHJvZmVzc2lvbmFscy9taWNyby1ncmlkAJIFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNzY4MkJFQScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LiT5Lia5Lq65aOrLeaZuuiDveW+rue9kScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKydTbWFydCBNaWNyby1ncmlkIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzmmbrog73lvq7nvZFkAgUPZBYCZg8VBB0vY24vcHJvZmVzc2lvbmFscy9TbWFydERlc2lnbgCNBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0MzM1RUU4NEZFNl9DNkY1QTdCNEEyQkNDNUInLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS4k+S4muS6uuWjqy3mmbrog73orr7orqHlt6XlhbcnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKydTbWFydERlc2lnbiAyLjAnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuaZuuiDveiuvuiuoeW3peWFt2QCBA9kFgRmDxUEIS9jbi9wYXJ0bmVycy9wYXJ0bmVyLWludHJvZHVjdGlvbgDlBHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjJCNzg3NTQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeWQiOS9nOS8meS8tCcsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0ZpcnN0X05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOiAnRmlyc3RfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5ZCI5L2c5LyZ5Ly0ZAIBDxYEHwICBR8DZxYKZg9kFgJmDxUEIS9jbi9wYXJ0bmVycy9wYXJ0bmVyLWludHJvZHVjdGlvbgCIBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjc0NzIzMTQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeWQiOS9nOS8meS8tC3kvJnkvLTku4vnu40nLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1BhcnRuZXJzJysnKycrJ1BhcnRuZXIgSW50cm9kdWN0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzkvJnkvLTku4vnu41kAgEPZBYCZg8VBC5odHRwczovL3BhcnRuZXIuaHVhd2VpLmNvbS9lY3ByaS8jLz9sYW5nPXpoX0NOBl9ibGFua4QFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNUUyNEQ4RicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5ZCI5L2c5LyZ5Ly0LeaIkOS4uuS8meS8tCcsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnQmVjb21lIGEgUGFydG5lcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5oiQ5Li65LyZ5Ly0ZAICD2QWAmYPFQQwaHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9wYXJ0bmVyIy9jbi9tYWluBl9ibGFua4EFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGN0I0M0QwQicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5ZCI5L2c5LyZ5Ly0LXBvd2VycGFydG5lcicsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnUG93ZXItUGFydG5lcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0NUG93ZXItUGFydG5lcmQCAw9kFgJmDxUEMGh0dHBzOi8vY29tbXVuaXR5LnNvbGFyLmh1YXdlaS5jb20vY24vaW5kZXguaHRtbAZfYmxhbmuLBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjdCMDkwQUYnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeWQiOS9nOS8meS8tC3lronoo4XllYbnpL7ljLonLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1BhcnRuZXJzJysnKycrJ0luc3RhbGxlcnMgQ29tbXVuaXR5JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ/lronoo4XllYbnpL7ljLpkAgQPZBYCZg8VBB8vY24vcGFydG5lcnMvbWFwP3R5cGU9aW5zdGFsbGVyAIgFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQzMzVFRTg0RkU2X0M4MjA5QzdDNDA0NEJCNycsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5ZCI5L2c5LyZ5Ly0LeWvu+aJvuWuieijheWVhicsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnRmluZCBhbiBJbnN0YWxsZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319D+Wvu+aJvuWuieijheWVhmQCBQ9kFgRmDxUEHi9jbi9wcm9mZXNzaW9uYWxzL2FsbC1wcm9kdWN0cwDcBHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjAzQjI2NEInLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS6p+WTgScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2R1Y3RzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0G5Lqn5ZOBZAIBDxYCHwIC/////w9kAgMPFgIfAgIDFgZmD2QWBGYPFQQXL2NuL3NlcnZpY2Utc3VwcG9ydC90c2MA3AR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYyOUQyMUJCJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3mlK/mjIEnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319BuaUr+aMgWQCAQ8WBB8CAgMfA2cWBmYPZBYCZg8VBBcvY24vc2VydmljZS1zdXBwb3J0L3RzYwD+BHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0MzM1RUU4NEZFNl9DNkY1QjM2RjQ5RTIzQTknLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeaKgOacr+aUr+aMgeS4reW/gycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKydTZXJ2aWNlcyBhbmQgU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319D+acjeWKoeS4juaUr+aMgWQCAQ9kFgJmDxUEU2h0dHBzOi8vZm9ydW0uaHVhd2VpLmNvbS9lbnRlcnByaXNlL3poL2ZvcnVtcy81ODA4Nzk3OTk2NzU2NjIzMzYvNTgwODc5ODIzMDkyNDYxNTY4Bl9ibGFua+kEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNDJBMkUyNycsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5pSv5oyBLeiuuuWdmycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidTdXBwb3J0JysnKycrJ0ZvcnVtJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0G6K665Z2bZAICD2QWAmYPFQRjaHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9yb2JvdGNoYXQvIy9ob21lL2luZGV4P2xhbmc9emhfQ04mZG9tYWluPXNtYXJ0cHYmZnJvbV90aXRsZV96aD0xMTE3Bl9ibGFua/kEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNDc3Q0FGNScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5pSv5oyBLeWcqOe6v+aUr+aMgScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKydPbmxpbmUgU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOWcqOe6v+aUr+aMgWQCAQ9kFgRmDxUEMGh0dHBzOi8vY29tbXVuaXR5LnNvbGFyLmh1YXdlaS5jb20vY24vaW5kZXguaHRtbAZfYmxhbmveBHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjJBMEI5NDAnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeekvuWMuicsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0ZpcnN0X05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOiAnRmlyc3RfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidDb21tdW5pdHknKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQbnpL7ljLpkAgEPFgIfAgL/////D2QCAg9kFgRmDxUEImh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9jbi9pbmZvLy8GX2JsYW5r4QR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY0REVDQTEwJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuIvovb3kuK3lv4MnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0Rvd25sb2FkJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5LiL6L295Lit5b+DZAIBDxYEHwICAh8DZxYEZg9kFgJmDxUEImh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9jbi9pbmZvLy8GX2JsYW5riAV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY2RjA4QTVGJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuIvovb3kuK3lv4Mt5Lqn5ZOB6LWE5paZ5Lit5b+DJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidEb3dubG9hZCcrJysnKydQcm9kdWN0IERvY3VtZW50JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0S5Lqn5ZOB6LWE5paZ5Lit5b+DZAIBD2QWAmYPFQQ5aHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9wb3dlci1tYXJrZXRpbmcvIy9jbi9ob21lBl9ibGFua4QFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNDdFRDdFNScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LiL6L295Lit5b+DLeiQpemUgOi1hOaWmeS4reW/gycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonRG93bmxvYWQnKycrJysnTUtUIERvY3VtZW50JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0S6JCl6ZSA6LWE5paZ5Lit5b+DZAIEDxYCHwICARYCZg9kFgJmDxUEDS9jbi9vcmRlci1ub3cAqgR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY0NDE1QjUwJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3nq4vljbPotK3kubAnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCdXlfQ2xpY2snLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J0J1eV9DbGljaycsJ2V2ZW50TGFiZWwnOidPcmRlciBOb3cnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQznq4vljbPotK3kubBkAgYPFgIfAgIJFhJmD2QWBAIBDxYGHgRocmVmBQ8vY24vaG9tZS1vd25lcnMeBnRhcmdldGQeB29uY2xpY2sF5AR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYxNUIyM0Y3JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3lrrbluq3kuJrkuLsnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0hvbWUgT3duZXJzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEM5a625bqt5Lia5Li7ZAIFDxYCHwIC/////w9kAgEPZBYEAgEPFgYfBAUTL2NuL2J1c2luZXNzLW93bmVycx8FZB8GBewEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGMUM1RUQ1MicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LyB5Lia5Lia5Li7Jyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0J1c2luZXNzIE93bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEM5LyB5Lia5Lia5Li7ZAIFDxYCHwIC/////w9kAgIPZBYEAgEPFgYfBAUYL2NuL3V0aWxpdHktcGxhbnQtb3duZXJzHwVkHwYF8QR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYzNzhFQzE3JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3nlLXnq5nkuJrkuLsnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonVXRpbGl0eSBQbGFudCBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FgJmDxUBDOeUteermeS4muS4u2QCBQ8WAh8CAv////8PZAIDD2QWBgIBDxYEHwQFDGphdmFzY3JpcHQ6Ox8GBeoEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGMTQ1RjVCMScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LiT5Lia5Lq65aOrJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FgJmDxUBDOS4k+S4muS6uuWjq2QCAw8WAh8DZ2QCBQ8WBB8CAgYfA2cWDAIBD2QWAmYPFQQdL2NuL3Byb2Zlc3Npb25hbHMvcmVzaWRlbnRpYWwAnAV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY2MkRENUVEJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuJPkuJrkurrlo6st5a625bqt57u/55S1Jyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ1Jlc2lkZW50aWFsIFNtYXJ0IFBWICYgRVNTIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzlrrbluq3nu7/nlLVkAgIPZBYCZg8VBBUvY24vcHJvZmVzc2lvbmFscy9jLWkAkwV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYyQkIyNUU5JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuJPkuJrkurrlo6st6KGM5Lia57u/55S1Jyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnQyZJIFNtYXJ0IFBWICYgRVNTIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzooYzkuJrnu7/nlLVkAgMPZBYCZg8VBBkvY24vcHJvZmVzc2lvbmFscy91dGlsaXR5AJIFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGMUVDMjc4NCcsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LiT5Lia5Lq65aOrLeaZuuiDveWFieS8jycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZmVzc2lvbmFscycrJysnKydVdGlsaXR5IFNtYXJ0IFBWIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRLmmbrog73lhYnkvI/nlLXnq5lkAgQPZBYCZg8VBBUvY24vcHJvZmVzc2lvbmFscy9lc3MAmgV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY3NzhEQThEJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuJPkuJrkurrlo6st5pm66IO957uE5LiyJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQcm9mZXNzaW9uYWxzJysnKycrJ1V0aWxpdHkgU21hcnQgU3RyaW5nIEVTUyBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0V5pm66IO957uE5Liy5byP5YKo6IO9ZAIFD2QWAmYPFQQcL2NuL3Byb2Zlc3Npb25hbHMvbWljcm8tZ3JpZACSBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjc2ODJCRUEnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS4k+S4muS6uuWjqy3mmbrog73lvq7nvZEnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnU21hcnQgTWljcm8tZ3JpZCBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5pm66IO95b6u572RZAIGD2QWAmYPFQQdL2NuL3Byb2Zlc3Npb25hbHMvU21hcnREZXNpZ24AjQV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDMzNUVFODRGRTZfQzZGNUE3QjRBMkJDQzVCJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuJPkuJrkurrlo6st5pm66IO96K6+6K6h5bel5YW3Jyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J1Byb2Zlc3Npb25hbHMnKycrJysnU21hcnREZXNpZ24gMi4wJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRLmmbrog73orr7orqHlt6XlhbdkAgQPZBYGAgEPFgQfBAUMamF2YXNjcmlwdDo7HwYF5QR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYyQjc4NzU0JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3lkIjkvZzkvJnkvLQnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FgJmDxUBDOWQiOS9nOS8meS8tGQCAw8WAh8DZ2QCBQ8WBB8CAgUfA2cWCgIBD2QWAmYPFQQhL2NuL3BhcnRuZXJzL3BhcnRuZXItaW50cm9kdWN0aW9uAIgFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNzQ3MjMxNCcsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5ZCI5L2c5LyZ5Ly0LeS8meS8tOS7i+e7jScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnUGFydG5lciBJbnRyb2R1Y3Rpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOS8meS8tOS7i+e7jWQCAg9kFgJmDxUELmh0dHBzOi8vcGFydG5lci5odWF3ZWkuY29tL2VjcHJpLyMvP2xhbmc9emhfQ04GX2JsYW5rhAV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY1RTI0RDhGJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3lkIjkvZzkvJnkvLQt5oiQ5Li65LyZ5Ly0Jyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydCZWNvbWUgYSBQYXJ0bmVyJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzmiJDkuLrkvJnkvLRkAgMPZBYCZg8VBDBodHRwczovL2RpZ2l0YWxwb3dlci5odWF3ZWkuY29tL3BhcnRuZXIjL2NuL21haW4GX2JsYW5rgQV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY3QjQzRDBCJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3lkIjkvZzkvJnkvLQtcG93ZXJwYXJ0bmVyJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydQb3dlci1QYXJ0bmVyJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ1Qb3dlci1QYXJ0bmVyZAIED2QWAmYPFQQwaHR0cHM6Ly9jb21tdW5pdHkuc29sYXIuaHVhd2VpLmNvbS9jbi9pbmRleC5odG1sBl9ibGFua4sFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGN0IwOTBBRicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5ZCI5L2c5LyZ5Ly0LeWuieijheWVhuekvuWMuicsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUGFydG5lcnMnKycrJysnSW5zdGFsbGVycyBDb21tdW5pdHknKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319D+WuieijheWVhuekvuWMumQCBQ9kFgJmDxUEHy9jbi9wYXJ0bmVycy9tYXA/dHlwZT1pbnN0YWxsZXIAiAV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDMzNUVFODRGRTZfQzgyMDlDN0M0MDQ0QkI3JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3lkIjkvZzkvJnkvLQt5a+75om+5a6J6KOF5ZWGJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidQYXJ0bmVycycrJysnKydGaW5kIGFuIEluc3RhbGxlcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0P5a+75om+5a6J6KOF5ZWGZAIFD2QWBAIBDxYGHwQFHi9jbi9wcm9mZXNzaW9uYWxzL2FsbC1wcm9kdWN0cx8FZB8GBdwEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGMDNCMjY0QicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5Lqn5ZOBJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonUHJvZHVjdHMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRYCZg8VAQbkuqflk4FkAgUPFgIfAgL/////D2QCBg9kFgYCAQ8WBB8EBQxqYXZhc2NyaXB0OjsfBgXcBHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjI5RDIxQkInLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeaUr+aMgScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0ZpcnN0X05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOiAnRmlyc3RfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidTdXBwb3J0JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEG5pSv5oyBZAIDDxYCHwNnZAIFDxYEHwICAx8DZxYGAgEPZBYCZg8VBBcvY24vc2VydmljZS1zdXBwb3J0L3RzYwD+BHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0MzM1RUU4NEZFNl9DNkY1QjM2RjQ5RTIzQTknLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeaKgOacr+aUr+aMgeS4reW/gycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKydTZXJ2aWNlcyBhbmQgU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319D+acjeWKoeS4juaUr+aMgWQCAg9kFgJmDxUEU2h0dHBzOi8vZm9ydW0uaHVhd2VpLmNvbS9lbnRlcnByaXNlL3poL2ZvcnVtcy81ODA4Nzk3OTk2NzU2NjIzMzYvNTgwODc5ODIzMDkyNDYxNTY4Bl9ibGFua+kEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNDJBMkUyNycsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5pSv5oyBLeiuuuWdmycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnU3ViX05hdmlnYXRpb24nLHsnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidTdWJfTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOidTdXBwb3J0JysnKycrJ0ZvcnVtJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0G6K665Z2bZAIDD2QWAmYPFQRjaHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9yb2JvdGNoYXQvIy9ob21lL2luZGV4P2xhbmc9emhfQ04mZG9tYWluPXNtYXJ0cHYmZnJvbV90aXRsZV96aD0xMTE3Bl9ibGFua/kEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNDc3Q0FGNScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5pSv5oyBLeWcqOe6v+aUr+aMgScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonU3VwcG9ydCcrJysnKydPbmxpbmUgU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOWcqOe6v+aUr+aMgWQCBw9kFgQCAQ8WBh8EBTBodHRwczovL2NvbW11bml0eS5zb2xhci5odWF3ZWkuY29tL2NuL2luZGV4Lmh0bWwfBQUGX2JsYW5rHwYF3gR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkYyQTBCOTQwJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3npL7ljLonLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdGaXJzdF9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzogJ0ZpcnN0X05hdmlnYXRpb24nLCdldmVudExhYmVsJzonQ29tbXVuaXR5JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEG56S+5Yy6ZAIFDxYCHwIC/////w9kAggPZBYGAgEPFgQfBAUMamF2YXNjcmlwdDo7HwYF4QR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY0REVDQTEwJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteeciS3kuIvovb3kuK3lv4MnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgIGd0YWcoJ2V2ZW50JywnRmlyc3RfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6ICdGaXJzdF9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0Rvd25sb2FkJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0WAmYPFQEM5LiL6L295Lit5b+DZAIDDxYCHwNnZAIFDxYEHwICAh8DZxYEAgEPZBYCZg8VBCJodHRwczovL3NvbGFyLmh1YXdlaS5jb20vY24vaW5mby8vBl9ibGFua4gFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNkYwOEE1RicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt5LiL6L295Lit5b+DLeS6p+WTgei1hOaWmeS4reW/gycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1N1Yl9OYXZpZ2F0aW9uJyx7J2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50QWN0aW9uJzonU3ViX05hdmlnYXRpb24nLCdldmVudExhYmVsJzonRG93bmxvYWQnKycrJysnUHJvZHVjdCBEb2N1bWVudCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuS6p+WTgei1hOaWmeS4reW/g2QCAg9kFgJmDxUEOWh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vcG93ZXItbWFya2V0aW5nLyMvY24vaG9tZQZfYmxhbmuEBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjQ3RUQ3RTUnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG155yJLeS4i+i9veS4reW/gy3okKXplIDotYTmlpnkuK3lv4MnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTdWJfTmF2aWdhdGlvbicseydldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudEFjdGlvbic6J1N1Yl9OYXZpZ2F0aW9uJywnZXZlbnRMYWJlbCc6J0Rvd25sb2FkJysnKycrJ01LVCBEb2N1bWVudCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuiQpemUgOi1hOaWmeS4reW/g2QCBw8WAh8CAgEWAmYPZBYCZg8VBA0vY24vb3JkZXItbm93AKoEdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGNDQxNUI1MCcsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXnnIkt56uL5Y2z6LSt5LmwJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQnV5X0NsaWNrJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRBY3Rpb24nOidCdXlfQ2xpY2snLCdldmVudExhYmVsJzonT3JkZXIgTm93JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M56uL5Y2z6LSt5LmwZAIED2QWDGYPZBYCZg9kFgICAQ8WAh8CAgUWCmYPZBYCZg8VBS88YSBocmVmPSIvY24vaG9tZS1vd25lcnMiIHRhcmdldD0iIiBvbmNsaWNrPSIiPl0vLS9tZWRpYS9Tb2xhclY0L3NvbGFyLXZlcnNpb24yL2FzaWEtcGFjaWZpYy9jbi9ob21lcGFnZS9zd2lwZXJiYW5uZXIvYmFubmVyLTIwMjQwODA1L21vYi5qcGdcLy0vbWVkaWEvU29sYXJWNC9zb2xhci12ZXJzaW9uMi9hc2lhLXBhY2lmaWMvY24vaG9tZXBhZ2Uvc3dpcGVyYmFubmVyL2Jhbm5lci0yMDI0MDgwNS9wYy5qcGecGzxkaXYgY2xhc3M9InNvbGFyLWJ1dHRvbi13cmFwLTIiPgogICAgPGRpdiBjbGFzcz0ic29sYXItYnV0dG9uLXBvc2l0aW9uLTIiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9jbi9ob21lLW93bmVycyIgY2xhc3M9InNvbGFyLWNvbW1vbi1idXR0b24iCiAgICAgICAgICAgIG9uY2xpY2s9InRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0MzM1RUU4NEZFNl9DODFERTZCRUVBQUI0QTknLCB1ZW1fbGFiZWw6ICfmjInpkq4t6aaW6aG1LUJhbm5lcui3s+i9rOWutuW6reS4muS4uycsfSk7IH0gY2F0Y2ggKGUpIHt9OyB0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCAnQmFubmVyX0NsaWNrJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOiBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOiAnQmFubmVyX0NsaWNrJywnZXZlbnRMYWJlbCc6ICdIdWF3ZWkgSG9tZSBHcmVlbiBQb3dlcicrJysnKycwLTEnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSk7ICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319Ij7kuobop6Pmm7TlpJo8L2E+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICAKICAKICA8c3R5bGU+CiAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0yIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgCiAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0yIC5zb2xhci1idXR0b24tcG9zaXRpb24tMiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNS4ydnc7CiAgICAgICAgbGVmdDogOS42dnc7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTIgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0yIC5zb2xhci1jb21tb24tYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTEuODc1cmVtOwogICAgICAgIGhlaWdodDogMy4xMjVyZW07CiAgICAgICAgYm9yZGVyLXJhZGl1czogMS41cmVtOwogICAgICAgIC8qIG9wYWNpdHk6IDA7ICovCiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgZm9udC1zaXplOiAwLjcyOTE2N3Z3OwogICAgICAgIG1pbi13aWR0aDogNnJlbTsKICAgICAgICBwYWRkaW5nOiAwIDFyZW07CiAgICAgICAKICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpOwogICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQsIGNvbG9yLCBib3JkZXIsIHdpZHRoLCBoZWlnaHQ7CiAgICB9CiAgCiAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0yIC5zb2xhci1idXR0b24tcG9zaXRpb24tMiAuc29sYXItY29tbW9uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDAwMDAwOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTsKICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTIgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0yIC5zb2xhci1jb21tb24tYnV0dG9uOmZvY3VzIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAxLjVyZW07CiAgICB9CiAgCiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTIgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0yIHsKICAgICAgICAgICAgdG9wOiAzMy4ydnc7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgIH0KICAKICAgICAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0yIC5zb2xhci1idXR0b24tcG9zaXRpb24tMiAuc29sYXItY29tbW9uLWJ1dHRvbiB7CiAgICAgICAgICAgIG1pbi13aWR0aDogMTA4cHg7CiAgICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogICAgICAgIH0KICAKICAgICAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0yIC5zb2xhci1idXR0b24tcG9zaXRpb24tMiAuc29sYXItY29tbW9uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIH0KICAgIH0KICAKICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE2NTBweCkgewogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTIgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0yIC5zb2xhci1jb21tb24tYnV0dG9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIH0KICAgIH0KICAgIEBtZWRpYSBzY3JlZW4gYW5kICh3aWR0aDoxMDI0cHgpIHsKICAgICAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0yIC5zb2xhci1idXR0b24tcG9zaXRpb24tMiB7CiAgICBsZWZ0OiA1LjZ2dzsKfQoKICAgIH0KICAgIEBtZWRpYSBzY3JlZW4gYW5kICh3aWR0aDo4MzRweCkgewogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTIgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0yIHsKICAgIGxlZnQ6IDMuNnZ3Owp9CiAgICB9CiAgICBAbWVkaWEgc2NyZWVuIGFuZCAod2lkdGg6MTE5NHB4KSB7CiAgICAgICAgLmRpZ19iYW5uZXJfY29udGVudCAuc29sYXItYnV0dG9uLXdyYXAtMiAuc29sYXItYnV0dG9uLXBvc2l0aW9uLTIgewogICAgbGVmdDogN3Z3Owp9CiAgICB9CiAgPC9zdHlsZT4EPC9hPmQCAQ9kFgJmDxUFAF0vLS9tZWRpYS9Tb2xhclY0L3NvbGFyLXZlcnNpb24yL2FzaWEtcGFjaWZpYy9jbi9ob21lcGFnZS9zd2lwZXJiYW5uZXIvYmFubmVyLTIwMjQwNzE2L21vYi5qcGdcLy0vbWVkaWEvU29sYXJWNC9zb2xhci12ZXJzaW9uMi9hc2lhLXBhY2lmaWMvY24vaG9tZXBhZ2Uvc3dpcGVyYmFubmVyL2Jhbm5lci0yMDI0MDcxNi9wYy5qcGfhQzxkaXYgY2xhc3M9InNvbGFyLWJ1dHRvbi13cmFwLTEiPgogICAgPGRpdiBjbGFzcz0ic29sYXItYnV0dG9uLXBvc2l0aW9uLTEiPgogICAgICAgIDxwIGNsYXNzPSJzb2xhci12aWRlby1idG4tY2xpY2siCiAgICAgICAgICAgIGRhdGEtc29sYXJQb3BWaWRlbz0iLy0vbWVkaWEvU29sYXJWNC9zb2xhci12ZXJzaW9uMi9hc2lhLXBhY2lmaWMvY24vaG9tZXBhZ2Uvc3dpcGVyYmFubmVyL2Jhbm5lci0yMDI0MDcxNi9iYW5uZXItdmlkZW8ubXA0IgogICAgICAgICAgICBkYXRhLXNvbGFyUG9wSW1nPSIvLS9tZWRpYS9Tb2xhclY0L3NvbGFyLXZlcnNpb24yL2FzaWEtcGFjaWZpYy9jbi9ob21lcGFnZS9zd2lwZXJiYW5uZXIvYmFubmVyLTIwMjQwNzE2L3ZpZGVvLWltZyIKICAgICAgICAgICAgZGF0YS1uYW1lPSJIdWF3ZWkgSG9tZSBHcmVlbiBQb3dlciI+5LqG6Kej5pu05aSaPC9wPgogICAgICAgIDxkaXYgY2xhc3M9InNvbGFyLXBvcC12aWRlby1iZyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNvbGFyLXBvcC12aWRlby1jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvQXNzZXRzL1NvbGFyL3Y0L2ltZy9Ib21lL2Nsb3NlLnBuZyIgYWx0PSIiIGNsYXNzPSJzb2xhci1wb3AtY2xvc2UiPgogICAgICAgICAgICAgICAgPHZpZGVvIGRhdGEtdmlkZW8tcmF0aW89IjE2OjkiIGF1dG9wbGF5IGNsYXNzPSJzb2xhci1wb3AtdmlkZW8iIGNvbnRyb2xzPSIiIHBsYXlzaW5saW5lPSJ0cnVlIgogICAgICAgICAgICAgICAgICAgIHdlYmtpdC1wbGF5c2lubGluZT0idHJ1ZSIgY29udHJvbHNsaXN0PSJub2Rvd25sb2FkIiB3ZWJraXQtcGxheXNpbmxpbmU9InRydWUiCiAgICAgICAgICAgICAgICAgICAgeC13ZWJraXQtYWlycGxheT0idHJ1ZSIgeDUtdmlkZW8tcGxheWVyLXR5cGU9Img1IiB4NS12aWRlby1wbGF5ZXItZnVsbHNjcmVlbj0idHJ1ZSIgcG9zdGVyPSIiCiAgICAgICAgICAgICAgICAgICAgc3JjPSIiPjwvdmlkZW8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKPHN0eWxlPgogICAgLmRpZ19iYW5uZXJfY29udGVudCAuc29sYXItYnV0dG9uLXdyYXAtMSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQoKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTEgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0xIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDogM3Z3OwogICAgICAgIHRvcDogMTl2dzsKICAgIH0KCiAgICAuc29sYXItcG9wLXZpZGVvLWNvbnRlbnQgdmlkZW8gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgIC5zb2xhci1wb3AtdmlkZW8tYmcgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNik7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAuc29sYXItcG9wLXZpZGVvLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDQ1JTsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgd2lkdGg6IDcwdnc7CiAgICB9CgogICAgLnNvbGFyLXBvcC12aWRlby1jb250ZW50IC5zb2xhci1wb3AtY2xvc2UgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgd2lkdGg6IDJ2dzsKICAgICAgICB6LWluZGV4OiA5OTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLnNvbGFyLXZpZGVvLWJ0bi1jbGljayB7CiAgICAgICAgd2lkdGg6IDExLjg3NXJlbTsKICAgICAgICBoZWlnaHQ6IDMuMTI1cmVtOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNXJlbTsKICAgICAgICAvKiBvcGFjaXR5OiAwOyAqLwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGZvbnQtc2l6ZTogMC43MjkxNjd2dzsKICAgICAgICBtaW4td2lkdGg6IDZyZW07CiAgICAgICAgcGFkZGluZzogMCAxcmVtOwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC42NSwgMC4wNSwgMC4zNiwgMSk7CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZCwgY29sb3IsIGJvcmRlciwgd2lkdGgsIGhlaWdodDsKICAgIH0KCiAgICAuc29sYXItdmlkZW8tYnRuLWNsaWNrOmhvdmVyIHsKICAgICAgICBib3JkZXItY29sb3I6ICMwMDAwMDA7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpOwogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5zb2xhci12aWRlby1idG4tY2xpY2s6Zm9jdXMgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNXJlbTsKICAgIH0KCiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWFzcGVjdC1yYXRpbzogMTEgLyAxMCkgewogICAgICAgIC5zb2xhci1wb3AtdmlkZW8tY29udGVudCB7CiAgICAgICAgICAgIHRvcDogNjV2dzsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB3aWR0aDogOTV2dzsKICAgICAgICB9CgogICAgICAgIC5zb2xhci1wb3AtdmlkZW8tYmcgewogICAgICAgICAgICB3aWR0aDogMTAwdnc7CiAgICAgICAgICAgIGhlaWdodDogMTY3Ljg4ODg4OXZ3OwogICAgICAgICAgICB0b3A6IC03OXZ3OwogICAgICAgICAgICBsZWZ0OiAtMzV2dzsKICAgICAgICB9CgogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTEgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0xIHsKICAgICAgICAgICAgdG9wOiA2Mi4ydnc7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgIH0KCiAgICAgICAgLnNvbGFyLXZpZGVvLWJ0bi1jbGljayB7CiAgICAgICAgICAgIG1pbi13aWR0aDogMTA4cHg7CiAgICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmOwogICAgICAgIH0KCiAgICAgICAgLnNvbGFyLXZpZGVvLWJ0bi1jbGljazpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIH0KICAgIH0KPC9zdHlsZT4KPHNjcmlwdD4KCiAgICAkKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgZnVuY3Rpb24gc2V0dXBHQShuYW1lKSB7CiAgICAgICAgICAgIGxldCBwbGF5ZWRQZXJjZW50ID0gW107CgogICAgICAgICAgICBmdW5jdGlvbiBwdXNoRGF0YSh2aWRlb05hbWUsIHZpZGVvU3RlcCkgewogICAgICAgICAgICAgICAgZ3RhZygnZXZlbnQnLCAnVmlkZW9fUGxheScsIHsKICAgICAgICAgICAgICAgICAgICAnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnRvVXBwZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgJ2V2ZW50QWN0aW9uJzogJ1ZpZGVvX1BsYXknLAogICAgICAgICAgICAgICAgICAgICdldmVudExhYmVsJzogdmlkZW9OYW1lICsgJysnICsgdmlkZW9TdGVwICsgJysnICsgKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gdmlkZW9TdGVwKHZpZGVvLCB2aWRlb05hbWUsIGluZGV4KSB7CiAgICAgICAgICAgICAgICBsZXQgcHJvZ3Jlc3MgPSBNYXRoLmZsb29yKHZpZGVvLmN1cnJlbnRUaW1lICogMTAwIC8gdmlkZW8uZHVyYXRpb24pOwogICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzID49IDI1ICYmIHByb2dyZXNzIDwgNTAgJiYgIXBsYXllZFBlcmNlbnRbaW5kZXhdLl8yNSkgewogICAgICAgICAgICAgICAgICAgIHB1c2hEYXRhKHZpZGVvTmFtZSwgJzI1JScpOwogICAgICAgICAgICAgICAgICAgIHBsYXllZFBlcmNlbnRbaW5kZXhdLl8yNSA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb2dyZXNzID49IDUwICYmIHByb2dyZXNzIDwgNzUgJiYgIXBsYXllZFBlcmNlbnRbaW5kZXhdLl81MCkgewogICAgICAgICAgICAgICAgICAgIHB1c2hEYXRhKHZpZGVvTmFtZSwgJzUwJScpOwogICAgICAgICAgICAgICAgICAgIHBsYXllZFBlcmNlbnRbaW5kZXhdLl81MCA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb2dyZXNzID49IDc1ICYmIHByb2dyZXNzIDwgMTAwICYmICFwbGF5ZWRQZXJjZW50W2luZGV4XS5fNzUpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoRGF0YSh2aWRlb05hbWUsICc3NSUnKTsKICAgICAgICAgICAgICAgICAgICBwbGF5ZWRQZXJjZW50W2luZGV4XS5fNzUgPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9ncmVzcyA+PSAwICYmIHByb2dyZXNzIDwgMjUgJiYgIXBsYXllZFBlcmNlbnRbaW5kZXhdLl8wKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaERhdGEodmlkZW9OYW1lLCAnMCUnKTsKICAgICAgICAgICAgICAgICAgICBwbGF5ZWRQZXJjZW50W2luZGV4XS5fMCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHZpZGVvU3RhdHVzKHZpZGVvLCB2aWRlb05hbWUsIGluZGV4KSB7CgogICAgICAgICAgICAgICAgdmlkZW8ub250aW1ldXBkYXRlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZpZGVvU3RlcCh2aWRlbywgdmlkZW9OYW1lLCBpbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgIHZpZGVvLm9uZW5kZWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFwbGF5ZWRQZXJjZW50W2luZGV4XS5fMTAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hEYXRhKHZpZGVvTmFtZSwgJzEwMCUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVkUGVyY2VudFtpbmRleF0uXzEwMCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IGJhbmVyQm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNvbGFyLXBvcC12aWRlby1jb250ZW50JykKICAgICAgICAgICAgYmFuZXJCb3guZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHsKICAgICAgICAgICAgICAgIGxldCBwZXJjZW50ID0gewogICAgICAgICAgICAgICAgICAgIF8wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBfMjU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIF81MDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgXzc1OiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBfMTAwOiBmYWxzZSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBwbGF5ZWRQZXJjZW50LnB1c2gocGVyY2VudCk7CiAgICAgICAgICAgICAgICBsZXQgdmlkZW8gPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5zb2xhci1wb3AtdmlkZW8tY29udGVudCB2aWRlbycpCiAgICAgICAgICAgICAgICBpZiAoIXZpZGVvKQogICAgICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICAgICAgICAgIC8vIGxldCBuYW1lID0gJCgiLmZ1dHVyZS12aWRlby1ib3gyIHZpZGVvIilbMF0uZGF0YXNldC5uYW1lCiAgICAgICAgICAgICAgICB2aWRlb1N0YXR1cyh2aWRlbywgbmFtZSwgaW5kZXgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgICQoIi5zb2xhci12aWRlby1idG4tY2xpY2siKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJCh0aGlzKS5vbigiY2xpY2siLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgICAgICAgICAgICAkKHRoaXMpLm5leHQoKS5jc3MoImRpc3BsYXkiLCAiYmxvY2siKQogICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCkuZmluZCgidmlkZW8iKS5hdHRyKCJzcmMiLCAkKHRoaXMpLmF0dHIoImRhdGEtc29sYXJQb3BWaWRlbyIpKQogICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCkuZmluZCgidmlkZW8iKS5hdHRyKCJwb3N0ZXIiLCAkKHRoaXMpLmF0dHIoImRhdGEtc29sYXJQb3BJbWciKSkKICAgICAgICAgICAgICAgIC8vICQoIi5zb2xhci1wb3AtdmlkZW8tY29udGVudCB2aWRlbyIpLmxvYWQoKTsKICAgICAgICAgICAgICAgIHZhciB2X3dpZHRoID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCAqIDAuODsKICAgICAgICAgICAgICAgIHZhciB2X2hlaWdodCA9IHZfd2lkdGggKiAwLjU2MjU7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mICgkKHRoaXMpLmRhdGEoJ3ZpZGVvLXJhdGlvJykpID09ICdzdHJpbmcnICYmIC9eWzAtOV17MSwyfTpbMC05XXsxLDJ9JC8udGVzdCh2aWRlby4kKHRoaXMpLmRhdGEoJ3ZpZGVvLXJhdGlvJykpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJhdGlvID0gdmlkZW8uJCh0aGlzKS5kYXRhKCd2aWRlby1yYXRpbycpLnNwbGl0KCc6Jyk7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gd2lkdGggKiBwYXJzZUludChyYXRpb1sxXSkgLyBwYXJzZUludChyYXRpb1swXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyAkKCIuc29sYXItcG9wLXZpZGVvLWNvbnRlbnQiKS5jc3MoIndpZHRoIiwgdl93aWR0aCkKICAgICAgICAgICAgICAgIC8vICQoIi5zb2xhci1wb3AtdmlkZW8tY29udGVudCIpLmNzcygiaGVpZ2h0Iiwgdl9oZWlnaHQpCiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGd0YWcoJ2V2ZW50JywgJ0Jhbm5lcl9DbGljaycsIHsKICAgICAgICAgICAgICAgICAgICAgICAgJ1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICdldmVudENhdGVnb3J5JzogZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50QWN0aW9uJzogJ0Jhbm5lcl9DbGljaycsCiAgICAgICAgICAgICAgICAgICAgICAgICdldmVudExhYmVsJzogJ0h1YXdlaSBIb21lIEdyZWVuIFBvd2VyJyArICcrJyArICcwLTInICsgJysnICsgKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgc2V0dXBHQSgkKHRoaXMpLmRhdGEoJ25hbWUnKSkKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCgogICAgICAgIH0pCgogICAgICAgICQoIi5zb2xhci1wb3AtY2xvc2UiKS5vbigiY2xpY2siLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoIi5zb2xhci1wb3AtdmlkZW8tYmciKS5jc3MoImRpc3BsYXkiLCAibm9uZSIpCiAgICAgICAgICAgICQodGhpcykubmV4dCgpLmF0dHIoInNyYyIsIiIpCiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiYXV0byI7CiAgICAgICAgfSkKICAgIH0pCjwvc2NyaXB0PgBkAgIPZBYCZg8VBQBdLy0vbWVkaWEvU29sYXJWNC9zb2xhci12ZXJzaW9uMi9hc2lhLXBhY2lmaWMvY24vaG9tZXBhZ2Uvc3dpcGVyYmFubmVyL2Jhbm5lci0yMDI0MTAyMy9tb2IuanBnXC8tL21lZGlhL1NvbGFyVjQvc29sYXItdmVyc2lvbjIvYXNpYS1wYWNpZmljL2NuL2hvbWVwYWdlL3N3aXBlcmJhbm5lci9iYW5uZXItMjAyNDEwMjMvcGMuanBnkRc8ZGl2IGNsYXNzPSJzb2xhci1idXR0b24td3JhcC0zIj4KICAgIDxkaXYgY2xhc3M9InNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0zIj4KICAgICAgICA8YSBocmVmPSIvY24vYWN0aXZpdHkvcHVyY2hhc2VQVmNvbnRyb2xsZXItZ2V0bW9iaWxlZnJlZSIgY2xhc3M9InNvbGFyLWNvbW1vbi1idXR0b24tMyIKICAgICAgICAgICAgb25jbGljaz0idHJ5IHsKICAgICAgICAgICAgICAgIGd0YWcoJ2V2ZW50JywgJ0Jhbm5lcl9DbGljaycseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzogZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzogJ0Jhbm5lcl9DbGljaycsJ2V2ZW50TGFiZWwnOiAnSHVhd2VpIFNtYXJ0IFBWIDE1MCBTdXByZW1lIFJld2FyZCBTZWFzb24nKycrJysnMC0zJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pOwogICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0iPuS6huino+abtOWkmjwvYT4KICAgIDwvZGl2PgogIDwvZGl2PgogIAogIAogIDxzdHlsZT4KICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTMgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTMgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0zIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDIwLjV2dzsKICAgIGxlZnQ6IDkuOXZ3OwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTMgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0zIC5zb2xhci1jb21tb24tYnV0dG9uLTMgewogICAgICAgIHdpZHRoOiAxMS44NzVyZW07CiAgICAgICAgaGVpZ2h0OiAzLjEyNXJlbTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxLjVyZW07CiAgICAgICAgLyogb3BhY2l0eTogMDsgKi8KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBmb250LXNpemU6IDAuNzI5MTY3dnc7CiAgICAgICAgbWluLXdpZHRoOiA2cmVtOwogICAgICAgIHBhZGRpbmc6IDAgMXJlbTsKICAgICAgIAogICAgICAgIGNvbG9yOiAjMDAwMDAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC42NSwgMC4wNSwgMC4zNiwgMSk7CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZCwgY29sb3IsIGJvcmRlciwgd2lkdGgsIGhlaWdodDsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwLTMgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbi0zIC5zb2xhci1jb21tb24tYnV0dG9uLTM6aG92ZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogIzAwMDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgfQogIAogICAgLmRpZ19iYW5uZXJfY29udGVudCAuc29sYXItYnV0dG9uLXdyYXAtMyAuc29sYXItYnV0dG9uLXBvc2l0aW9uLTMgLnNvbGFyLWNvbW1vbi1idXR0b24tMzpmb2N1cyB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMS41cmVtOwogICAgfQogIAogICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0zIC5zb2xhci1idXR0b24tcG9zaXRpb24tMyB7CiAgICAgICAgICAgIHRvcDogMjcuMnZ3OwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICB9CiAgCiAgICAgICAgLmRpZ19iYW5uZXJfY29udGVudCAuc29sYXItYnV0dG9uLXdyYXAtMyAuc29sYXItYnV0dG9uLXBvc2l0aW9uLTMgLnNvbGFyLWNvbW1vbi1idXR0b24tMyB7CiAgICAgICAgICAgIG1pbi13aWR0aDogMTA4cHg7CiAgICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwogICAgICAgIH0KICAKICAgICAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcC0zIC5zb2xhci1idXR0b24tcG9zaXRpb24tMyAuc29sYXItY29tbW9uLWJ1dHRvbi0zOmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgfQogICAgfQogIAogICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTY1MHB4KSB7CiAgICAgICAgLmRpZ19iYW5uZXJfY29udGVudCAuc29sYXItYnV0dG9uLXdyYXAtMyAuc29sYXItYnV0dG9uLXBvc2l0aW9uLTMgLnNvbGFyLWNvbW1vbi1idXR0b24tMyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB9CiAgICB9CiAgPC9zdHlsZT4AZAIDD2QWAmYPFQWwBDxhIGhyZWY9Ii9jbi9wcm9mZXNzaW9uYWxzL3Jlc2lkZW50aWFsIiB0YXJnZXQ9IiIgb25jbGljaz0idHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywgJ0Jhbm5lcl9DbGljaycseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzogZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzogJ0Jhbm5lcl9DbGljaycsJ2V2ZW50TGFiZWwnOiAnUmVzaWRlbnRpYWwgU21hcnQgUFYgU29sdXRpb24nKycrJysnMC00JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pOyAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fSI+XS8tL21lZGlhL1NvbGFyVjQvc29sYXItdmVyc2lvbjIvYXNpYS1wYWNpZmljL2NuL2hvbWVwYWdlL3N3aXBlcmJhbm5lci9iYW5uZXItc2h1aW1pYW4vbW9iLmpwZ1wvLS9tZWRpYS9Tb2xhclY0L3NvbGFyLXZlcnNpb24yL2FzaWEtcGFjaWZpYy9jbi9ob21lcGFnZS9zd2lwZXJiYW5uZXIvYmFubmVyLXNodWltaWFuL3BjLmpwZwAEPC9hPmQCBA9kFgJmDxUFAFkvLS9tZWRpYS9Tb2xhclY0L3NvbGFyLXZlcnNpb24yL2FzaWEtcGFjaWZpYy9jbi9ob21lcGFnZS9zd2lwZXJiYW5uZXIveWFsb25namlhbmcvbW9iLmpwZ1gvLS9tZWRpYS9Tb2xhclY0L3NvbGFyLXZlcnNpb24yL2FzaWEtcGFjaWZpYy9jbi9ob21lcGFnZS9zd2lwZXJiYW5uZXIveWFsb25namlhbmcvcGMuanBn7hY8ZGl2IGNsYXNzPSJzb2xhci1idXR0b24td3JhcCI+CiAgICA8ZGl2IGNsYXNzPSJzb2xhci1idXR0b24tcG9zaXRpb24iPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc29sYXIuaHVhd2VpLmNvbS9jbi9zdWNjZXNzLXN0b3JpZXMvY24vMjAyMy9TdG9yaWUyMCIgY2xhc3M9InNvbGFyLWNvbW1vbi1idXR0b24iCiAgICAgICAgICAgIG9uY2xpY2s9InRyeSB7CiAgICAgICAgICAgICAgICBndGFnKCdldmVudCcsICdCYW5uZXJfQ2xpY2snLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6IGRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6ICdCYW5uZXJfQ2xpY2snLCdldmVudExhYmVsJzogJ1dIRU4gU09MQVIgTUVFVFMgSFlEUk8nKycrJysnMC01JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pOwogICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0iPuS6huino+abtOWkmjwvYT4KICAgIDwvZGl2PgogIDwvZGl2PgogIAogIAogIDxzdHlsZT4KICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgCiAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcCAuc29sYXItYnV0dG9uLXBvc2l0aW9uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxOS4ydnc7CiAgICAgICAgbGVmdDogNC42dnc7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwIC5zb2xhci1idXR0b24tcG9zaXRpb24gLnNvbGFyLWNvbW1vbi1idXR0b24gewogICAgICAgIHdpZHRoOiAxMS44NzVyZW07CiAgICAgICAgaGVpZ2h0OiAzLjEyNXJlbTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxLjVyZW07CiAgICAgICAgLyogb3BhY2l0eTogMDsgKi8KICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBmb250LXNpemU6IDAuNzI5MTY3dnc7CiAgICAgICAgbWluLXdpZHRoOiA2cmVtOwogICAgICAgIHBhZGRpbmc6IDAgMXJlbTsKICAgICAgIAogICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmZmZmY7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC42NSwgMC4wNSwgMC4zNiwgMSk7CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZCwgY29sb3IsIGJvcmRlciwgd2lkdGgsIGhlaWdodDsKICAgIH0KICAKICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwIC5zb2xhci1idXR0b24tcG9zaXRpb24gLnNvbGFyLWNvbW1vbi1idXR0b246aG92ZXIgewogICAgICAgIGJvcmRlci1jb2xvcjogIzAwMDAwMDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7CiAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICB9CiAgCiAgICAuZGlnX2Jhbm5lcl9jb250ZW50IC5zb2xhci1idXR0b24td3JhcCAuc29sYXItYnV0dG9uLXBvc2l0aW9uIC5zb2xhci1jb21tb24tYnV0dG9uOmZvY3VzIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAxLjVyZW07CiAgICB9CiAgCiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwIC5zb2xhci1idXR0b24tcG9zaXRpb24gewogICAgICAgICAgICB0b3A6IDYyLjJ2dzsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgfQogIAogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwIC5zb2xhci1idXR0b24tcG9zaXRpb24gLnNvbGFyLWNvbW1vbi1idXR0b24gewogICAgICAgICAgICBtaW4td2lkdGg6IDEwOHB4OwogICAgICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICAgICAgICB9CiAgCiAgICAgICAgLmRpZ19iYW5uZXJfY29udGVudCAuc29sYXItYnV0dG9uLXdyYXAgLnNvbGFyLWJ1dHRvbi1wb3NpdGlvbiAuc29sYXItY29tbW9uLWJ1dHRvbjpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIH0KICAgIH0KICAKICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE2NTBweCkgewogICAgICAgIC5kaWdfYmFubmVyX2NvbnRlbnQgLnNvbGFyLWJ1dHRvbi13cmFwIC5zb2xhci1idXR0b24tcG9zaXRpb24gLnNvbGFyLWNvbW1vbi1idXR0b24gewogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgfQogICAgfQogIDwvc3R5bGU+AGQCAg9kFgJmD2QWAmYPDxYCHwNoZGQCAw9kFgJmD2QWAgIBDxYCHwICAxYGZg9kFgJmDxUEKy8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvaG9tZV9pY29uMS5zdmccNzY5NeS6v+W6pue0r+iuoee7v+iJsuWPkeeUtQUxMTA5NRjkur/luqbntK/orqHnu7/oibLlj5HnlLVkAgEPZBYCZg8VBCsvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL2hvbWVfaWNvbjIuc3ZnGjMuNeS6v+WQqOetieaViENP4oKC5YeP5o6SBDUuMjcX5Lq/5ZCo562J5pWIQ0/igoLlh4/mjpJkAgIPZBYCZg8VBCsvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL2hvbWVfaWNvbjMuc3ZnGDQuOOS6v+ajteetieaViOenjeakjeagkQQ3LjE5FeS6v+ajteetieaViOenjeakjeagkWQCBA9kFgJmD2QWAmYPFgIfAgIFFgpmD2QWAmYPFQUAOC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvdXBkYXRlL2hvbWUtY2Fyb3VzZV81XzEucG5nOC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvdXBkYXRlL2hvbWUtY2Fyb3VzZV81XzEucG5nIeW8lemihue7hOS4sumAhuWPmOWZqOaIkOS4uuS4u+a1gSHlvJXpoobnu4TkuLLpgIblj5jlmajmiJDkuLrkuLvmtYFkAgEPZBYCZg8VBQA4Ly0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS91cGRhdGUvaG9tZS1jYXJvdXNlXzVfMi5wbmc4Ly0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS91cGRhdGUvaG9tZS1jYXJvdXNlXzVfMi5wbmce5byV6aKG5YKo6IO957O757uf5p625p6E5Yib5pawHuW8lemihuWCqOiDveezu+e7n+aetuaehOWIm+aWsGQCAg9kFgJmDxUFADgvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3VwZGF0ZS9ob21lLWNhcm91c2VfNV8zLnBuZzgvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3VwZGF0ZS9ob21lLWNhcm91c2VfNV8zLnBuZx7lvJXpoobmlbDlrZfljJbmmbrog73ljJbljYfnuqce5byV6aKG5pWw5a2X5YyW5pm66IO95YyW5Y2H57qnZAIDD2QWAmYPFQUAOC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvdXBkYXRlL2hvbWUtY2Fyb3VzZV81XzQucG5nOC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvdXBkYXRlL2hvbWUtY2Fyb3VzZV81XzQucG5nHuW8lemihuWFieS8j+ezu+e7n+WuieWFqOWNh+e6px7lvJXpooblhYnkvI/ns7vnu5/lronlhajljYfnuqdkAgQPZBYCZg8VBQZhY3RpdmU4Ly0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS91cGRhdGUvaG9tZS1jYXJvdXNlXzVfNS5qcGc4Ly0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS91cGRhdGUvaG9tZS1jYXJvdXNlXzVfNS5qcGcS5byV6aKG5bm2572R5Y+L5aW9EuW8lemihuW5tue9keWPi+WlvWQCBQ9kFgJmD2QWAmYPFgIfAgIFFgpmD2QWAmYPFRASaG9tZV9wdlN5c3RlbV90YWcwJC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvcHYxLnBuZwNwdjEM5pm66IO95b6u572RFmhvbWVfcHZTeXN0ZW1fdGFnX3N1YjAlLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9zdWIxLnBuZwzmmbrog73lvq7nvZEM5pm66IO95b6u572RGC9jbi91dGlsaXR5LXBsYW50LW93bmVycwD0A3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1NjZW5lX1NlbGVjdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzonaG9tZSBwYWdlJywnZXZlbnRBY3Rpb24nOidTY2VuZV9TZWxlY3Rpb24nLCdldmVudExhYmVsJzonU21hcnQgTWljcm8tZ3JpZCBTb2x1dGlvbicrJysnKydVdGlsaXR5IFBsYW50IE93bmVycycrJysnKyAod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOeUteermeS4muS4uxwvY24vcHJvZmVzc2lvbmFscy9taWNyby1ncmlkAOwDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidTbWFydCBNaWNyby1ncmlkIFNvbHV0aW9uJysnKycrJ1Byb2Zlc3Npb25hbHMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOS4k+S4muS6uuWjq2QCAQ9kFgJmDxUQEmhvbWVfcHZTeXN0ZW1fdGFnMSQvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3B2Mi5wbmcS5pm66IO95YWJ5YKo55S156uZEuaZuuiDveWFieWCqOeUteermRZob21lX3B2U3lzdGVtX3RhZ19zdWIxJS8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvc3ViMi5wbmcS5pm66IO95YWJ5YKo55S156uZEuaZuuiDveWFieWCqOeUteermRgvY24vdXRpbGl0eS1wbGFudC1vd25lcnMA9AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTY2VuZV9TZWxlY3Rpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6J2hvbWUgcGFnZScsJ2V2ZW50QWN0aW9uJzonU2NlbmVfU2VsZWN0aW9uJywnZXZlbnRMYWJlbCc6J1V0aWxpdHkgU21hcnQgUFYgU29sdXRpb24nKycrJysnVXRpbGl0eSBQbGFudCBPd25lcnMnKycrJysgKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQznlLXnq5nkuJrkuLsZL2NuL3Byb2Zlc3Npb25hbHMvdXRpbGl0eQDtA3RyeSB7ICAgICBndGFnKCdldmVudCcsJ1NjZW5lX1NlbGVjdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzogJCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5JzonaG9tZSBwYWdlJywnZXZlbnRBY3Rpb24nOidTY2VuZV9TZWxlY3Rpb24nLCdldmVudExhYmVsJzonVXRpbGl0eSBTbWFydCBQViBTb2x1dGlvbicrJysnKyAnUHJvZmVzc2lvbmFscycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5LiT5Lia5Lq65aOrZAICD2QWAmYPFRASaG9tZV9wdlN5c3RlbV90YWcyJC8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvcHYzLnBuZwzooYzkuJrnu7/nlLUM6KGM5Lia57u/55S1FmhvbWVfcHZTeXN0ZW1fdGFnX3N1YjIlLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9zdWIzLnBuZwzooYzkuJrnu7/nlLUM6KGM5Lia57u/55S1Ey9jbi9idXNpbmVzcy1vd25lcnMA8AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTY2VuZV9TZWxlY3Rpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6J2hvbWUgcGFnZScsJ2V2ZW50QWN0aW9uJzonU2NlbmVfU2VsZWN0aW9uJywnZXZlbnRMYWJlbCc6J0MmSSBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKydCdXNpbmVzcyBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOS8geS4muS4muS4uxUvY24vcHJvZmVzc2lvbmFscy9jLWkA7gN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTY2VuZV9TZWxlY3Rpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6J2hvbWUgcGFnZScsJ2V2ZW50QWN0aW9uJzonU2NlbmVfU2VsZWN0aW9uJywnZXZlbnRMYWJlbCc6J0MmSSBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKydQcm9mZXNzaW9uYWxzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzkuJPkuJrkurrlo6tkAgMPZBYCZg8VEBJob21lX3B2U3lzdGVtX3RhZzMkLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9wdjQucG5nDOWutuW6ree7v+eUtQzlrrbluq3nu7/nlLUWaG9tZV9wdlN5c3RlbV90YWdfc3ViMyUvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3N1YjQucG5nDOWutuW6ree7v+eUtQzlrrbluq3nu7/nlLUPL2NuL2hvbWUtb3duZXJzAPQDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidSZXNpZGVudGlhbCBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKydIb21lIE93bmVycycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSAgIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5a625bqt5Lia5Li7HS9jbi9wcm9mZXNzaW9uYWxzL3Jlc2lkZW50aWFsAPYDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidSZXNpZGVudGlhbCBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKydQcm9mZXNzaW9uYWxzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzkuJPkuJrkurrlo6tkAgQPZBYCZg8VEBJob21lX3B2U3lzdGVtX3RhZzQkLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS9wdjUucG5nFeaZuuiDvee7hOS4suW8j+WCqOiDvRXmmbrog73nu4TkuLLlvI/lgqjog70WaG9tZV9wdlN5c3RlbV90YWdfc3ViNCUvLS9tZWRpYS9Tb2xhclY0L2ltYWdlcy9Ib21lL3N1YjUucG5nFeaZuuiDvee7hOS4suW8j+WCqOiDvRXmmbrog73nu4TkuLLlvI/lgqjog70YL2NuL3V0aWxpdHktcGxhbnQtb3duZXJzAPsDdHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnU2NlbmVfU2VsZWN0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiAkKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOidob21lIHBhZ2UnLCdldmVudEFjdGlvbic6J1NjZW5lX1NlbGVjdGlvbicsJ2V2ZW50TGFiZWwnOidVdGlsaXR5IFNtYXJ0IFN0cmluZyBFU1MgU29sdXRpb24nKycrJysnVXRpbGl0eSBQbGFudCBPd25lcnMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgICB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOeUteermeS4muS4uxUvY24vcHJvZmVzc2lvbmFscy9lc3MA9AN0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdTY2VuZV9TZWxlY3Rpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6ICQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6J2hvbWUgcGFnZScsJ2V2ZW50QWN0aW9uJzonU2NlbmVfU2VsZWN0aW9uJywnZXZlbnRMYWJlbCc6J1V0aWxpdHkgU21hcnQgU3RyaW5nIEVTUyBTb2x1dGlvbicrJysnKydQcm9mZXNzaW9uYWxzJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pICAgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzkuJPkuJrkurrlo6tkAgYPZBYCZg9kFgJmDxYCHwICAxYGZg9kFgRmDxUDGGluQ29udF9sZWZ0X3ZhbHVlX3llbGxvdwQxNjArIeWFqOeQg+aKgOacr+aUr+aMgeWSjOWkh+S7tuS4reW/g2QCAQ8WAh8CAgQWCAIBD2QWAmYPFQIBNRLmioDmnK/mlK/mjIHkuK3lv4NkAgIPZBYCZg8VAgE1EuWkh+S7tui/kOS9nOS4reW/g2QCAw9kFgJmDxUCATIS5aSH5Lu257u05L+u5Lit5b+DZAIED2QWAmYPFQIEMTQwKxjlm73lrrblpIfku7bnianmtYHkuK3lv4NkAgEPZBYEZg8VAxhpbkNvbnRfbGVmdF92YWx1ZV9vcmFuZ2UFMTc2MCsS5YWo55CD5ZCI5L2c5LyZ5Ly0ZAIBDxYCHwICAxYGAgEPZBYCZg8VAgUxNzAwKwzplIDllK7kvJnkvLRkAgIPZBYCZg8VAgM2MCsM5pyN5Yqh5LyZ5Ly0ZAIDD2QWAmYPFQIFMjAwMCsP6K6k6K+B5a6J6KOF5ZWGZAICD2QWBGYPFQMXaW5Db250X2xlZnRfdmFsdWVfZ3JlZW4CMTcS5YWo55CD56CU56m25Lit5b+DZAIBDxYCHwICAxYGAgEPZBYCZg8VAgE1DOiDveWKm+S4reW/g2QCAg9kFgJmDxUCAjEyDOeglOWPkeS4reW/g2QCAw9kFgJmDxUCBDIzJSsS56CU5Y+R6LS555So5oqV5YWlZAIFD2QWAmYPZBYCZg9kFggCAg8WAh8CAgUWCmYPZBYEZg8VARjlhbPkuo7ljY7kuLrmmbrog73lhYnkvI9kAgEPFgIfAgIFFgoCAQ9kFgJmDxUEDS9jbi9uZXdzLXJvb20A+gR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY5QUU5RjAyJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3mlrDpl7vliqjmgIEnLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnQWJvdXQgRnVzaW9uU29sYXInKycrJysnTmV3cycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOaWsOmXu+WKqOaAgWQCAg9kFgJmDxUEDy9jbi9ldmVudHMtbGlzdAD7BHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjY4NUJFRTInLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeWxleS8mua0u+WKqCcsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ0Fib3V0IEZ1c2lvblNvbGFyJysnKycrJ0V2ZW50cycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOWxleS8mua0u+WKqGQCAw9kFgJmDxUEEy9jbi9zdWNjZXNzLXN0b3JpZXMAhgV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY2MDBDNkE5JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3miJDlip/mlYXkuosnLCB9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ0Fib3V0IEZ1c2lvblNvbGFyJysnKycrJ1N1Y2Nlc3MgU3RvcmllcycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOaIkOWKn+aVheS6i2QCBA9kFgJmDxUEJC9jbi9ldmVudHMtbGlzdC9jbi8yMDIzL3B1YmxpY2F0aW9ucwCABXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkE3RkU5MjUnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeWHuueJiOeJqScsIH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnQWJvdXQgRnVzaW9uU29sYXInKycrJysnUHVibGljYXRpb25zJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0J5Ye654mI54mpZAIFD2QWAmYPFQQOL2NuL25ld3NsZXR0ZXIAgQV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY5MkQ0MDM5JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3pgq7ku7borqLpmIUnLCB9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ0Fib3V0IEZ1c2lvblNvbGFyJysnKycrJ05ld3NsZXR0ZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQzpgq7ku7borqLpmIVkAgEPZBYEZg8VARXkuqflk4EgJiDop6PlhrPmlrnmoYhkAgEPFgIfAgIHFg4CAQ9kFgJmDxUEHS9jbi9wcm9mZXNzaW9uYWxzL3Jlc2lkZW50aWFsAJwFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGQzY4QTFCMScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXohJot5a625bqt57u/55S1JywgfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ1Jlc2lkZW50aWFsIFNtYXJ0IFBWICYgRVNTIFNvbHV0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5a625bqt57u/55S1ZAICD2QWAmYPFQQVL2NuL3Byb2Zlc3Npb25hbHMvYy1pAJQFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGOTE3RkNCRicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXohJot6KGM5Lia57u/55S1JywgfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ0MmSSBTbWFydCBQViAmIEVTUyBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOihjOS4mue7v+eUtWQCAw9kFgJmDxUEGS9jbi9wcm9mZXNzaW9uYWxzL3V0aWxpdHkAlgV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkZDMTI5Njk5JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3mmbrog73lhYnkvI/nlLXnq5knLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ1V0aWxpdHkgU21hcnQgUFYgU29sdXRpb24nKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRLmmbrog73lhYnkvI/nlLXnq5lkAgQPZBYCZg8VBBUvY24vcHJvZmVzc2lvbmFscy9lc3MAoQV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY5NDA3REEyJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3mmbrog73nu4TkuLLlvI/lgqjog70nLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ1V0aWxpdHkgU21hcnQgU3RyaW5nIEVTUyBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319FeaZuuiDvee7hOS4suW8j+WCqOiDvWQCBQ9kFgJmDxUEHC9jbi9wcm9mZXNzaW9uYWxzL21pY3JvLWdyaWQAkgV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkY4NTY1NDFDJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3mmbrog73lvq7nvZEnLCB9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1Byb2R1Y3RzICYgU29sdXRpb24nKycrJysnU21hcnQgTWljcm8tZ3JpZCBTb2x1dGlvbicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOaZuuiDveW+rue9kWQCBg9kFgJmDxUEHi9jbi9wcm9mZXNzaW9uYWxzL2FsbC1wcm9kdWN0cwCEBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjgyRkFDOTQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeaJgOacieS6p+WTgScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ0FsbCBQcm9kdWN0cycrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOaJgOacieS6p+WTgWQCBw9kFgJmDxUEHS9jbi9wcm9mZXNzaW9uYWxzL1NtYXJ0RGVzaWduAI4FdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGQTUwQkZBMicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXohJot5pm66IO96K6+6K6h5bel5YW3JywgfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQcm9kdWN0cyAmIFNvbHV0aW9uJysnKycrJ1NtYXJ0RGVzaWduIDIuMCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuaZuuiDveiuvuiuoeW3peWFt2QCAg9kFgRmDxUBDOWQiOS9nOS8meS8tGQCAQ8WAh8CAgQWCAIBD2QWAmYPFQQhL2NuL3BhcnRuZXJzL3BhcnRuZXItaW50cm9kdWN0aW9uAIEFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGQUE4OTU3RicsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXohJot5LyZ5Ly05LuL57uNJyx9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1BhcnRuZXJzJysnKycrJ1BhcnRuZXIgSW50cm9kdWN0aW9uJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5LyZ5Ly05LuL57uNZAICD2QWAmYPFQQuaHR0cHM6Ly9wYXJ0bmVyLmh1YXdlaS5jb20vZWNwcmkvIy8/bGFuZz16aF9DTgZfYmxhbmv9BHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRjkwODk1OTInLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeaIkOS4uuS8meS8tCcsIH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQYXJ0bmVycycrJysnKydCZWNvbWUgYSBQYXJ0bmVyJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5oiQ5Li65LyZ5Ly0ZAIDD2QWAmYPFQQfL2NuL3BhcnRuZXJzL21hcD90eXBlPWluc3RhbGxlcgD/BHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkE1RDg4NDcnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeWvu+aJvuWuieijheWVhicsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUGFydG5lcnMnKycrJysnRmluZCBhbiBJbnN0YWxsZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fQ/lr7vmib7lronoo4XllYZkAgQPZBYCZg8VBDBodHRwczovL2RpZ2l0YWxwb3dlci5odWF3ZWkuY29tL3BhcnRuZXIjL2NuL21haW4GX2JsYW5r/AR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkZDOTAyRkE1JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi1Qb3dlci1QYXJ0bmVyJywgfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdQYXJ0bmVycycrJysnKydQb3dlci1QYXJ0bmVyJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0NUG93ZXItUGFydG5lcmQCAw9kFgRmDxUBD+acjeWKoeS4juaUr+aMgWQCAQ8WAh8CAgYWDAIBD2QWAmYPFQQXL2NuL3NlcnZpY2Utc3VwcG9ydC90c2MAlQV0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkZFOEUwMTg3JywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3mioDmnK/mlK/mjIHkuK3lv4MnLCB9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1NlcnZpY2UgJiBTdXBwb3J0JysnKycrJ1RlY2huaWNhbCBTdXBwb3J0IENlbnRlcicrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuaKgOacr+aUr+aMgeS4reW/g2QCAg9kFgJmDxUEOWh0dHBzOi8vZGlnaXRhbHBvd2VyLmh1YXdlaS5jb20vcG93ZXItbWFya2V0aW5nLyMvY24vaG9tZQZfYmxhbmuJBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkI1NUNCQkInLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeiQpemUgOi1hOaWmeS4reW/gycsIH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnU2VydmljZSAmIFN1cHBvcnQnKycrJysnTUtUIERvY3VtZW50JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0S6JCl6ZSA6LWE5paZ5Lit5b+DZAIDD2QWAmYPFQQiaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NuL2luZm8vLwZfYmxhbmuNBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkRDNkMzMkMnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeS6p+WTgei1hOaWmeS4reW/gycsIH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnU2VydmljZSAmIFN1cHBvcnQnKycrJysnUHJvZHVjdCBEb2N1bWVudCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319EuS6p+WTgei1hOaWmeS4reW/g2QCBA9kFgJmDxUEMGh0dHBzOi8vY29tbXVuaXR5LnNvbGFyLmh1YXdlaS5jb20vY24vaW5kZXguaHRtbAZfYmxhbmv6BHRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkVBMTMwNzAnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeekvuWMuicsIH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnU2VydmljZSAmIFN1cHBvcnQnKycrJysnQ29tbXVuaXR5JysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0G56S+5Yy6ZAIFD2QWAmYPFQRTaHR0cHM6Ly9mb3J1bS5odWF3ZWkuY29tL2VudGVycHJpc2UvemgvZm9ydW1zLzU4MDg3OTc5OTY3NTY2MjMzNi81ODA4Nzk4MjMwOTI0NjE1NjgGX2JsYW5r9gR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QkZDMDZGMEJDJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3orrrlnZsnLCB9KTsgfSBjYXRjaCAoZSkge307dHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1NlcnZpY2UgJiBTdXBwb3J0JysnKycrJ0ZvcnVtJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0G6K665Z2bZAIGD2QWAmYPFQRjaHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9yb2JvdGNoYXQvIy9ob21lL2luZGV4P2xhbmc9emhfQ04mZG9tYWluPXNtYXJ0cHYmZnJvbV90aXRsZV96aD0xMTE3Bl9ibGFua4UFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGQkMwQzA0NCcsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXohJot5Zyo57q/5pSv5oyBJywgfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdTZXJ2aWNlICYgU3VwcG9ydCcrJysnKydPbmxpbmUgU3VwcG9ydCcrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319DOWcqOe6v+aUr+aMgWQCBA9kFgRmDxUBDOW/q+mAn+mTvuaOpWQCAQ8WAh8CAgUWCgIBD2QWAmYPFQQaaHR0cHM6Ly93d3cuaHVhd2VpLmNvbS9jbi8GX2JsYW5r/wR0cnkgeyB3aW5kb3cuaHdhKCd0cmFja1N0cnVjdEV2ZW50JywgeyB1ZW1faWQ6ICdQODFENDQ4Q0JGQ0EyMkZfQzgxREU2QzAwQ0M4NjREJywgdWVtX2xhYmVsOiAn54K55Ye7IOmhteiEmi3ljY7kuLrpm4blm6InLH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdRdWljayBMaW5rcycrJysnKydIdWF3ZWkgQ29ycG9yYXRlJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0M5Y2O5Li66ZuG5ZuiZAICD2QWAmYPFQQYaHR0cHM6Ly9lLmh1YXdlaS5jb20vY24vBl9ibGFua4cFdHJ5IHsgd2luZG93Lmh3YSgndHJhY2tTdHJ1Y3RFdmVudCcsIHsgdWVtX2lkOiAnUDgxRDQ0OENCRkNBMjJGX0M4MURFNkJGRTJGMUZEQScsIHVlbV9sYWJlbDogJ+eCueWHuyDpobXohJot5Y2O5Li65LyB5Lia5Lia5YqhJywgfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsICdldmVudExhYmVsJzogJ1F1aWNrIExpbmtzJysnKycrJ0h1YXdlaSBFbnRlcnByaXNlJysnKycrKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLnJlcGxhY2UoL1wvJC8sICcnKX0pIH0gY2F0Y2ggKGVycm9yKSB7aWYgKGVycm9yLm1lc3NhZ2UgPT09ICdndGFnIGlzIG5vdCBkZWZpbmVkJykge2NvbnNvbGUubG9nKCdHb29nbGUgQW5hbHl0aWNzIGlzIG5vdCBhdmFpbGFibGUuIEV2ZW50IHRyYWNraW5nIGlzIGRpc2FibGVkLicpO30gZWxzZSB7dGhyb3cgZXJyb3I7fX0S5Y2O5Li65LyB5Lia5Lia5YqhZAIDD2QWAmYPFQQuaHR0cHM6Ly9kaWdpdGFscG93ZXIuaHVhd2VpLmNvbS9jbi8/ZnJvbT1zb2xhcgZfYmxhbmuLBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkYxMUY0RTQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeWNjuS4uuaVsOWtl+iDvea6kCcsIH0pOyB9IGNhdGNoIChlKSB7fTt0cnkgeyAgICAgZ3RhZygnZXZlbnQnLCdCb3R0b21fTmF2aWdhdGlvbicseydTaXRlX0NvdW50cnlfQ29kZV9IJzokKCdodG1sJykuYXR0cignZGF0YS1yZWdpb24nKS5yZXBsYWNlKC9bL10vZywgJycpLnRvVXBwZXJDYXNlKCksJ2V2ZW50Q2F0ZWdvcnknOmRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLCdldmVudEFjdGlvbic6J0JvdHRvbV9OYXZpZ2F0aW9uJywgJ2V2ZW50TGFiZWwnOiAnUXVpY2sgTGlua3MnKycrJysnSHVhd2VpIERpZ2l0YWwgUG93ZXInKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fRLljY7kuLrmlbDlrZfog73mupBkAgQPZBYCZg8VBFlodHRwczovL2ludGwuZnVzaW9uc29sYXIuaHVhd2VpLmNvbS9wdm1zd2Vic2l0ZS9ub2xvZ2luL2Fzc2V0cy9idWlsZC9pbmRleC5odG1sIy9qdW1wcGFnZQZfYmxhbmuxBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZDMDA1RTdCNDUnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeS4i+i9veaZuuiDveWFieS8j0FwcO+8iOenu+WKqOerr++8iScsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdRdWljayBMaW5rcycrJysnKydEb3dubG9hZCBGdXNpb25Tb2xhciBBcHAgKE1vYmlsZSBWZXJzaW9uKScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319JOS4i+i9veaZuuiDveWFieS8j0FwcO+8iOenu+WKqOerr++8iWQCBQ9kFgJmDxUEJGh0dHBzOi8vaW50bC5mdXNpb25zb2xhci5odWF3ZWkuY29tLwZfYmxhbmuXBXRyeSB7IHdpbmRvdy5od2EoJ3RyYWNrU3RydWN0RXZlbnQnLCB7IHVlbV9pZDogJ1A4MUQ0NDhDQkZDQTIyRl9DODFERTZCRkRFQTZBMEQnLCB1ZW1fbGFiZWw6ICfngrnlh7sg6aG16ISaLeeZu+W9leaZuuiDveWFieS8j+euoeeQhuezu+e7nycsfSk7IH0gY2F0Y2ggKGUpIHt9O3RyeSB7ICAgICBndGFnKCdldmVudCcsJ0JvdHRvbV9OYXZpZ2F0aW9uJyx7J1NpdGVfQ291bnRyeV9Db2RlX0gnOiQoJ2h0bWwnKS5hdHRyKCdkYXRhLXJlZ2lvbicpLnJlcGxhY2UoL1svXS9nLCAnJykudG9VcHBlckNhc2UoKSwnZXZlbnRDYXRlZ29yeSc6ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUsJ2V2ZW50QWN0aW9uJzonQm90dG9tX05hdmlnYXRpb24nLCAnZXZlbnRMYWJlbCc6ICdRdWljayBMaW5rcycrJysnKydGdXNpb25Tb2xhciBTbWFydFBWTVMnKycrJysod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXC8kLywgJycpfSkgfSBjYXRjaCAoZXJyb3IpIHtpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ2d0YWcgaXMgbm90IGRlZmluZWQnKSB7Y29uc29sZS5sb2coJ0dvb2dsZSBBbmFseXRpY3MgaXMgbm90IGF2YWlsYWJsZS4gRXZlbnQgdHJhY2tpbmcgaXMgZGlzYWJsZWQuJyk7fSBlbHNlIHt0aHJvdyBlcnJvcjt9fR7nmbvlvZXmmbrog73lhYnkvI/nrqHnkIbns7vnu59kAgMPFgIfAQUgwqkgMjAyNCDljY7kuLrmioDmnK/mnInpmZDlhazlj7hkAgQPFgIfAgIBFgJmD2QWAmYPFQOmBDxhIGNsYXNzPSJpdGVtLWxpbmsiIGhyZWY9Ii9jbi9wcml2YWN5IiB0YXJnZXQ9IiIgb25jbGljaz0idHJ5IHsgICAgIGd0YWcoJ2V2ZW50JywnQm90dG9tX05hdmlnYXRpb24nLHsnU2l0ZV9Db3VudHJ5X0NvZGVfSCc6JCgnaHRtbCcpLmF0dHIoJ2RhdGEtcmVnaW9uJykucmVwbGFjZSgvWy9dL2csICcnKS50b1VwcGVyQ2FzZSgpLCdldmVudENhdGVnb3J5Jzpkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZSwnZXZlbnRBY3Rpb24nOidCb3R0b21fTmF2aWdhdGlvbicsJ2V2ZW50TGFiZWwnOiAnUHJpdmFjeScrJysnKyh3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKS5yZXBsYWNlKC9cLyQvLCAnJyl9KSB9IGNhdGNoIChlcnJvcikge2lmIChlcnJvci5tZXNzYWdlID09PSAnZ3RhZyBpcyBub3QgZGVmaW5lZCcpIHtjb25zb2xlLmxvZygnR29vZ2xlIEFuYWx5dGljcyBpcyBub3QgYXZhaWxhYmxlLiBFdmVudCB0cmFja2luZyBpcyBkaXNhYmxlZC4nKTt9IGVsc2Uge3Rocm93IGVycm9yO319IiAgcmVsPSJub3JlZmVycmVyIj4M6ZqQ56eB5pS/562WBDwvYT5kAgUPZBYCAgEPFgIfAQWVOjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgogIC5wYWdlLWZvb3RlciAuZm9vdGVyLWJ1dHRvbSAuZm9vdGVyLWxpbmsgLmxpbmstaW1nLXNoaXBpbmhhbyB7CiAgICAgIGJhY2tncm91bmQ6IHVybCgiLy0vbWVkaWEvU29sYXJWNC9pbWFnZXMvSG9tZS91cGRhdGUvc2hpcGluaGFvLnN2ZyIpIDAgMCBuby1yZXBlYXQ7CiAgfQogIC5kYXJrIC5wYWdlLWZvb3RlciAuZm9vdGVyLWJ1dHRvbSAuZm9vdGVyLWxpbmsgLmxpbmstaW1nLXNoaXBpbmhhbyB7CiAgICBiYWNrZ3JvdW5kOiB1cmwoIi8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvdXBkYXRlL3NoaXBpbmhhb19kYXJrX3Y1LnN2ZyIpIDAgMCBuby1yZXBlYXQ7Cn0KICA8L3N0eWxlPgogIAogIDxkaXYgY2xhc3M9InNvY2lhbC1pdGVtIHNvY2lhbC1pY29uIj4KICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlci1saW5rLWltZyBsaW5rLWltZy13ZWNoYXQiPgogICAgICA8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImhvdmVyLXBvcCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLWNsb3NlIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBvcC10ZXh0Ij4KICAgICAgICAgICAgICA8cD7lrpjmlrnlvq7kv6E8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBvcC1pbWciPgogICAgICAgICAgICAgIDxpbWcgc3JjPSIvQXNzZXRzL1NvbGFyL3Y0L2ltZy9jb21tb24vd2VjaGF0LnBuZyI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ic29jaWFsLWl0ZW0gc29jaWFsLWljb24gbGFzdC1pY29uIj4KICAgICAgPHNwYW4gY2xhc3M9ImZvb3Rlci1saW5rLWltZyBsaW5rLWltZy10b3V0aWFvIj4KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJob3Zlci1wb3AiPgogICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbi1jbG9zZSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3AtdGV4dCI+CiAgICAgICAgICAgICAgPHA+5aS05p2hPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwb3AtaW1nIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iL0Fzc2V0cy9Tb2xhci92NC9pbWcvY29tbW9uL3RvdXRpYW8ucG5nIj4KICAgICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJzb2NpYWwtaXRlbSBzb2NpYWwtaWNvbiBsYXN0LWljb24iPgogICAgICA8c3BhbiBjbGFzcz0iZm9vdGVyLWxpbmstaW1nIGxpbmstaW1nLXNoaXBpbmhhbyI+CiAgICAgIDwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0iaG92ZXItcG9wIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Imljb24tY2xvc2UiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icG9wLXRleHQiPgogICAgICAgICAgICAgIDxwPuinhumikeWPtzwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icG9wLWltZyI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Ii8tL21lZGlhL1NvbGFyVjQvaW1hZ2VzL0hvbWUvdXBkYXRlL2hvbWUtZm9vdGVyLWljb25fMy5qcGciPgogICAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKCgogIDwhLS0gY29va2llIC0tPgo8c2NyaXB0PgogICAgKGZ1bmN0aW9uIChjb25maWcpIHsKICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvY24nKSkgewogICAgICAgICAgICByZXR1cm4KICAgICAgICB9CiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IGNvbmZpZy5uYW1lc3BhY2UgfHwgImh3YSI7CiAgICAgICAgaWYgKHNlbGZbbmFtZXNwYWNlXSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzY3JpcHQjdWVtX2YiKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHNlbGZbbmFtZXNwYWNlXSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgKHNlbGZbbmFtZXNwYWNlXS5xID0gc2VsZltuYW1lc3BhY2VdLnEgfHwgW10pLnB1c2goYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgZWxlbWVudC5UUkFDS0VSX0NPTkZJRyA9IGNvbmZpZzsKICAgICAgICBlbGVtZW50LmFzeW5jID0gdHJ1ZTsKICAgICAgICBlbGVtZW50LmlkID0gInVlbV9mIjsKICAgICAgICBlbGVtZW50LnNyYyA9IGNvbmZpZy5zcmMgKyAiP18iICsgbmV3IERhdGUoKS50b0pTT04oKS5zcGxpdCgiVCIpWzBdOwogICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICB9KSh7CiAgICAgICAgcGxhdGZvcm06ICJ3ZWIiLAogICAgICAgIGVkaXRpb246ICJoaXMiLAogICAgICAgIGVudjogInByb2QiLAogICAgICAgIGFwcEtleTogIjRhYjBkMmU1MWI0YWYxMWQwYTlkOTQ3YTg5YTg4MmNiIiwKICAgICAgICBzcmM6ICJodHRwczovL2h3YS5oaXMuaHVhd2VpLmNvbS9kaXN0L3VlbV9mLmpzIgogICAgfSk7Cjwvc2NyaXB0PgoKPHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgc3JjPSJodHRwczovL3N0YXRpYy5zZW5zb3JzZGF0YS5jbi9zZGsvMS4yNi4xNy9zZW5zb3JzZGF0YS5taW4uanM/dmVyPTIwMjQwODAyMTMxNiI+PC9zY3JpcHQ+CjxzY3JpcHQgY2hhcnNldD0iVVRGLTgiPgogICAgdmFyIHNlbnNvcnMgPSB3aW5kb3dbJ3NlbnNvcnNEYXRhQW5hbHl0aWMyMDE1MDUnXTsKICAgIHNlbnNvcnMudXNlKCdQYWdlTGVhdmUnLCB7fSk7CiAgICBzZW5zb3JzLmluaXQoewogICAgICAgIHNlcnZlcl91cmw6ICdodHRwczovL2NkcC50ZXN0Lmh1YXdlaS5jb20vc2EnLAogICAgICAgIGhlYXRtYXA6IHsgc2Nyb2xsX25vdGljZV9tYXA6ICdkZWZhdWx0JyB9LAogICAgICAgIHVzZV9jbGllbnRfdGltZTogdHJ1ZSwKICAgICAgICBzZW5kX3R5cGU6ICdiZWFjb24nCiAgICB9KTsKICAgIHNlbnNvcnMucXVpY2soJ2F1dG9UcmFjaycpOwo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImJyb3dzZWhhcHB5IFJlYWRQb2xpY3kiPgogICAgPHA+5pys56uZ54K55L2/55SoY29va2llcyznu6fnu63mtY/op4jooajnpLrmgqjlkIzmhI/miJHku6zkvb/nlKhjb29raWVz44CCPGEgaHJlZj0iaHR0cHM6Ly9zb2xhci5odWF3ZWkuY29tL2NuL3ByaXZhY3kiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgICAgPHNwYW4+Q29va2llc+WSjOmakOengeaUv+etliAmZ3Q8L3NwYW4+PC9hPjxhIGhyZWY9ImphdmFzY3JpcHQ6Y2xvc2VDb29raWVCYW5uZXIoKSIgY2xhc3M9ImNsb3NlIiB0aXRsZT0iY2xvc2UiPjwvYT4KICAgIDwvcD4KPC9kaXY+Cgo8c2NyaXB0PgogICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgIGpRdWVyeS5DYWNoZSA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgICAgdmFyIHZhbDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhbCA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpKTsKICAgICAgICAgICAgfSBjYXRjaCAoX2UpIHsgfQogICAgICAgICAgICByZXR1cm4gdmFsOwogICAgICAgIH0sCiAgICAgICAgc2V0OiBmdW5jdGlvbiAoa2V5LCBfdmFsdWUsIGV4cGlyZURheXMpIHsKICAgICAgICAgICAgdmFyIHZhbHVlID0gX3ZhbHVlOwogICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47CiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgICB2YWx1ZSA9IHsgdmFsdWU6IF92YWx1ZSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBkID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgZC5zZXRUaW1lKGQuZ2V0VGltZSgpICsgMjQgKiA2MCAqIDYwICogMTAwMCAqIGV4cGlyZURheXMpOwogICAgICAgICAgICB2YXIgZXhwaXJlID0gZDsKICAgICAgICAgICAgdmFsdWUuZXhwaXJlID0gZXhwaXJlOwogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKTsKICAgICAgICB9LAogICAgICAgIGRlbDogZnVuY3Rpb24gKGtleSkgewogICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpOwogICAgICAgIH0sCiAgICB9OwogICAgY29uc3QgY29tbW9uTW9kdWxlID0gd2luZG93LmNvbW1vbk1vZHVsZSB8fCB7fTsKICAgIGNvbW1vbk1vZHVsZS5icm93c2VoYXBweSA9IGZ1bmN0aW9uIGJyb3dzZWhhcHB5KCkgewogICAgICAgIGlmICghJC5DYWNoZSkgewogICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgIGJyb3dzZWhhcHB5KCk7CiAgICAgICAgICAgIH0sIDIwMCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGxldCBicm93c2VoYXBweUNhY2hlID0gJC5DYWNoZS5nZXQoJ2Jyb3dzZWhhcHB5Jyk7CiAgICAgICAgbGV0IGhpZGVDYWNoZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJC5DYWNoZS5zZXQoJ2Jyb3dzZWhhcHB5JywgJ2Jyb3dzZWhhcHB5JywgMzY1KTsKICAgICAgICB9OwoKICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmJyb3dzZWhhcHB5IGEuY2xvc2UnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5icm93c2VoYXBweScpLnNsaWRlVXAoaGlkZUNhY2hlKTsKICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoIWJyb3dzZWhhcHB5Q2FjaGUgfHwgbmV3IERhdGUoYnJvd3NlaGFwcHlDYWNoZS5leHBpcmUpIC0gbmV3IERhdGUoKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAkLkNhY2hlLmRlbCgnYnJvd3NlaGFwcHknKTsKICAgICAgICAgICAgICAgICQoJy5icm93c2VoYXBweScpLnByZXBlbmRUbygnYm9keScpLnNsaWRlRG93bigpOwogICAgICAgICAgICAgICAgJCgnLmJyb3dzZWhhcHB5JykuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7CiAgICAgICAgICAgICAgICBoaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gJ21hbnVhbCc7CiAgICAgICAgICAgICAgICAkKCdodG1sLGJvZHknKS5hbmltYXRlKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgJ2Zhc3QnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGlzdG9yeS5zY3JvbGxSZXN0b3JhdGlvbiA9ICdhdXRvJzsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKF9lKSB7IH0KICAgIH07CiAgICBjb21tb25Nb2R1bGUuYnJvd3NlaGFwcHkoKTsKCiAgICBmdW5jdGlvbiBjbG9zZUNvb2tpZUJhbm5lcigpIHsKICAgICAgICBoaWRlQ2FjaGUoKTsKICAgICAgICAkKCcuYnJvd3NlaGFwcHknKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpCiAgICB9Cn0sMTApCiAgICA8L3NjcmlwdD4KCjxzdHlsZT4KICAgIC5SZWFkUG9saWN5IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOwogICAgICAgIGNvbG9yOiAjMjgyODI4OwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgcGFkZGluZzogMTZweCAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHotaW5kZXg6IDEwMDAwOwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICB9CgogICAgLlJlYWRQb2xpY3kgcCB7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyNTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgICAgd2lkdGg6IDkzLjcwNSU7CiAgICAgICAgbWF4LXdpZHRoOiAxNzk5LjEzNnB4OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAuUmVhZFBvbGljeSBwIHNwYW4gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgICB9CgogICAgLlJlYWRQb2xpY3kgcCBhIGVtIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC41czsKICAgICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgfQoKICAgIC5SZWFkUG9saWN5IGEgewogICAgICAgIGNvbG9yOiAjYzcwMDBiOwogICAgfQoKICAgIC5SZWFkUG9saWN5IHAgYTpob3ZlciBlbSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOwogICAgfQoKICAgIC5SZWFkUG9saWN5IC5jbG9zZSB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDBweDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDMwcHg7CiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBtYXJnaW4tdG9wOiAtN3B4OwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CgogICAgLlJlYWRQb2xpY3kgLmNsb3NlOmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJ+Kclic7CiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgaGVpZ2h0OiAzMHB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtZmFtaWx5OiAnY29ycGZvbnQnICFpbXBvcnRhbnQ7CiAgICAgICAgY29sb3I6ICMzMzM7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHsKICAgICAgICAuUmVhZFBvbGljeSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgYm90dG9tOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB6LWluZGV4OiA5OTk7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgLlJlYWRQb2xpY3lbc3R5bGUqPSdibG9jayddfi5idG4tZ28tdG9wIHsKICAgICAgICAgICAgYm90dG9tOiAxMDBweDsKICAgICAgICB9CgogICAgICAgIC5SZWFkUG9saWN5W3N0eWxlKj0nYmxvY2snXX4ucG9wdXAtaWNvbiB7CiAgICAgICAgICAgIGJvdHRvbTogMTQzcHg7CiAgICAgICAgfQoKICAgICAgICAuUmVhZFBvbGljeVtzdHlsZSo9J2Jsb2NrJ11+Zm9vdGVyIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNjZweDsKICAgICAgICB9CiAgICB9Cjwvc3R5bGU+ZGSJeFSpXj0SLHiejXZnetmPZ7NfW00of9HAScLB+evVqQ=="> </div> </form> <input type="hidden" id="hidUserStatusUrl" value="/en/user"> <div id="pageHeaderWrapper" class=""> <div class="global_header_wrapper"> <div class="global_header_fixed"> <div class="nav-wrapper"> <div class="nav-top"> <div class="nav-top-right"> <div class="nav-top-item"> <a href="/cn/online-experience-hall?step=card" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF8B83575', uem_label: '点击 页眉-在线体验专区',}); } catch (e) {};try { gtag('event','Navigation_Function',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Navigation_Function','eventLabel':'Online Experience Hall'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">在线体验专区</a> </div> <div class="nav-top-item nav-top-language"> <span class="language_ic"></span> <span>中国</span> <span class="language_select"></span> </div> </div> </div> <div class="nav-language"> <div class="nav-allLangBox"> <div class="icon-close"></div> <div class="curr-lang"><span class="icon-curr"></span> <a href="https://solar.huawei.com/en">FusionSolar Global / English</a> </div> <div class="allLang"> <div class="areaItem"> <div class="areaText">Asia Pacific</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/au">Australia / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/cn">China / 简体中文</a></div> <div class="langItem"><a href="https://solar.huawei.com/hk">Hong Kong, China / 繁體中文</a></div> <div class="langItem"><a href="https://solar.huawei.com/id">Indonesia / Indonesian</a></div> <div class="langItem"><a href="https://solar.huawei.com/jp">Japan / 日本語</a></div> <div class="langItem"><a href="https://solar.huawei.com/my">Malaysia / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/ph">Philippines / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/sg">Singapore / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/kr">South Korea / 한국어</a></div> <div class="langItem"><a href="https://solar.huawei.com/th">Thailand / ไทย</a></div> <div class="langItem"><a href="https://solar.huawei.com/vn">Vietnam / English</a></div> </div> </div> <div class="areaItem"> <div class="areaText">Europe</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/at">Austria / Deutsch</a></div> <div class="langItem"><a href="https://solar.huawei.com/be-fr">Belgium / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/be">Belgium / Nederlands</a></div> <div class="langItem"><a href="https://solar.huawei.com/bg">Bulgaria / български</a></div> <div class="langItem"><a href="https://solar.huawei.com/hr">Croatia / hrvatski</a></div> <div class="langItem"><a href="https://solar.huawei.com/cz">Czechia / čeština</a></div> <div class="langItem"><a href="https://solar.huawei.com/dk">Denmark / Dansk</a></div> <div class="langItem"><a href="https://solar.huawei.com/fr">France / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/de">Germany / Deutsch</a></div> <div class="langItem"><a href="https://solar.huawei.com/gr">Greece / Ελληνικά</a></div> <div class="langItem"><a href="https://solar.huawei.com/hu">Hungary / Hungarian</a></div> <div class="langItem"><a href="https://solar.huawei.com/ie">Ireland / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/it">Italy / Italiano</a></div> <div class="langItem"><a href="https://solar.huawei.com/nl">Netherlands / Dutch</a></div> <div class="langItem"><a href="https://solar.huawei.com/pl">Poland / Polish</a></div> <div class="langItem"><a href="https://solar.huawei.com/pt">Portugal / português</a></div> <div class="langItem"><a href="https://solar.huawei.com/ro">Romania / română</a></div> <div class="langItem"><a href="https://solar.huawei.com/sk">Slovakia / slovenčina</a></div> <div class="langItem"><a href="https://solar.huawei.com/es">Spain / Español</a></div> <div class="langItem"><a href="https://solar.huawei.com/se">Sweden / Svenska</a></div> <div class="langItem"><a href="https://solar.huawei.com/ch">Switzerland / Deutsch</a></div> <div class="langItem"><a href="https://solar.huawei.com/ch-fr">Switzerland / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/tr">Türkiye / Türkçe</a></div> <div class="langItem"><a href="https://solar.huawei.com/ua">Ukraine / Україна</a></div> </div> </div> <div class="areaItem"> <div class="areaText">Latin America</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/br">Brazil / Portuguese</a></div> <div class="langItem"><a href="https://solar.huawei.com/latam">Latin America / Español</a></div> <div class="langItem"><a href="https://solar.huawei.com/mx">México / Español</a></div> </div> </div> <div class="areaItem"> <div class="areaText">Middle East & Africa</div> <div class="langList"> <div class="langItem"><a href="https://solar.huawei.com/eg">Egypt / اللغة العربية</a></div> <div class="langItem"><a href="https://solar.huawei.com/ke">Kenya / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/ma">Morocco / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/ng">Nigeria / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/pk">Pakistan / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/sa">Saudi Arabia / اللغة العربية </a></div> <div class="langItem"><a href="https://solar.huawei.com/sa-en">Saudi Arabia / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/za">South Africa / English</a></div> <div class="langItem"><a href="https://solar.huawei.com/tn">Tunisia / Français</a></div> <div class="langItem"><a href="https://solar.huawei.com/ae">UAE / اللغة العربية</a></div> <div class="langItem"><a href="https://solar.huawei.com/ae-en">UAE / English</a></div> </div> </div> </div> </div> </div> </div> <div class="pageheader_container" id="pageHeader"> <div class="pageheader"> <div class="pageheader-box grid--align-spread"> <div class="pageheader-menu-left"> <a class="header-left" href="/cn"> <div class="header-logo"> <img src="/-/media/SolarV4/Common/logo-v1.svg" alt="logo v1" class="whiteLogo"> <img src="/-/media/SolarV4/Common/logo-dark-v2.svg" alt="logo dark v2" class="darkLogo"> </div> </a> <div class="pageheader-menu"> <ul> <li class="menu_item_li "><a class="menu_item_a" href="/cn/home-owners" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF15B23F7', uem_label: '点击 页眉-家庭业主',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Home Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">家庭业主</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/cn/business-owners" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF1C5ED52', uem_label: '点击 页眉-企业业主',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Business Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">企业业主</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/cn/utility-plant-owners" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF378EC17', uem_label: '点击 页眉-电站业主',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Utility Plant Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">电站业主</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/cn/professionals/residential" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF145F5B1', uem_label: '点击 页眉-专业人士',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">专业人士</a> <div class="submenu submenu-hidden"> <a href="/cn/professionals/residential" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF62DD5ED', uem_label: '点击 页眉-专业人士-家庭绿电',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Residential Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">家庭绿电</div> </a> <a href="/cn/professionals/c-i" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF2BB25E9', uem_label: '点击 页眉-专业人士-行业绿电',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'C&I Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">行业绿电</div> </a> <a href="/cn/professionals/utility" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF1EC2784', uem_label: '点击 页眉-专业人士-智能光伏',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart PV Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">智能光伏电站</div> </a> <a href="/cn/professionals/ess" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF778DA8D', uem_label: '点击 页眉-专业人士-智能组串',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart String ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">智能组串式储能</div> </a> <a href="/cn/professionals/micro-grid" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7682BEA', uem_label: '点击 页眉-专业人士-智能微网',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Smart Micro-grid Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">智能微网</div> </a> <a href="/cn/professionals/SmartDesign" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C6F5A7B4A2BCC5B', uem_label: '点击 页眉-专业人士-智能设计工具',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'SmartDesign 2.0'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">智能设计工具</div> </a> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/cn/partners/partner-introduction" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF2B78754', uem_label: '点击 页眉-合作伙伴',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Partners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">合作伙伴</a> <div class="submenu submenu-hidden"> <a href="/cn/partners/partner-introduction" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7472314', uem_label: '点击 页眉-合作伙伴-伙伴介绍',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Partner Introduction'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">伙伴介绍</div> </a> <a href="https://partner.huawei.com/ecpri/#/?lang=zh_CN" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF5E24D8F', uem_label: '点击 页眉-合作伙伴-成为伙伴',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Become a Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">成为伙伴</div> </a> <a href="https://digitalpower.huawei.com/partner#/cn/main" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7B43D0B', uem_label: '点击 页眉-合作伙伴-powerpartner',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Power-Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">Power-Partner</div> </a> <a href="https://community.solar.huawei.com/cn/index.html" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7B090AF', uem_label: '点击 页眉-合作伙伴-安装商社区',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Installers Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">安装商社区</div> </a> <a href="/cn/partners/map?type=installer" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C8209C7C4044BB7', uem_label: '点击 页眉-合作伙伴-寻找安装商',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Find an Installer'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">寻找安装商</div> </a> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="/cn/professionals/all-products" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF03B264B', uem_label: '点击 页眉-产品',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Products'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">产品</a> <div class="submenu submenu-hidden"> </div> </li> </ul> </div> </div> <div class="pageheader-menu-right"> <div class="pageheader-menu"> <ul> <li class="menu_item_li "><a class="menu_item_a" href="/cn/service-support/tsc" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF29D21BB', uem_label: '点击 页眉-支持',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">支持</a> <div class="submenu submenu-hidden"> <a href="/cn/service-support/tsc" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C6F5B36F49E23A9', uem_label: '点击 页眉-技术支持中心',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Services and Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">服务与支持</div> </a> <a href="https://forum.huawei.com/enterprise/zh/forums/580879799675662336/580879823092461568" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF42A2E27', uem_label: '点击 页眉-支持-论坛',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Forum'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">论坛</div> </a> <a href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=zh_CN&domain=smartpv&from_title_zh=1117" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF477CAF5', uem_label: '点击 页眉-支持-在线支持',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Online Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">在线支持</div> </a> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="https://community.solar.huawei.com/cn/index.html" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF2A0B940', uem_label: '点击 页眉-社区',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">社区</a> <div class="submenu submenu-hidden"> </div> </li> <li class="menu_item_li "><a class="menu_item_a" href="https://solar.huawei.com/cn/info/" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF4DECA10', uem_label: '点击 页眉-下载中心',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Download'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">下载中心</a> <div class="submenu submenu-hidden"> <a href="https://solar.huawei.com/cn/info/" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF6F08A5F', uem_label: '点击 页眉-下载中心-产品资料中心',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'Product Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">产品资料中心</div> </a> <a href="https://digitalpower.huawei.com/power-marketing/#/cn/home" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF47ED7E5', uem_label: '点击 页眉-下载中心-营销资料中心',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'MKT Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="sub_menu_a">营销资料中心</div> </a> </div> </li> </ul> </div> <div class="pageheader-right grid--vertical-align-center"> <a href="/cn/order-now" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF4415B50', uem_label: '点击 页眉-立即购买',}); } catch (e) {};try { gtag('event','Buy_Click',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Buy_Click','eventLabel':'Order Now'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <div class="header-contact"> <button id="ev_bt_1005" class="ev_button default border-radius-24" title="" tabindex="0" type="button"> <span class="ev_button_text">立即购买</span> </button> </div> </a> </div> </div> </div> </div> <div class="pageheader-min"> <div class="pageheader-min-box grid--align-spread"> <a class="header-left" href="/cn"> <div class="headerLeft"> <span class="header-min-logo"> <img src="/-/media/SolarV4/Common/logo-v1.svg" alt="logo v1" class="min-white-logo"> <img src="/-/media/SolarV4/Common/logo-dark-v2.svg" alt="logo dark v2" class="min-dark-logo"> </span> </div> </a> <div class="nav-top-min nav-top-language"><span class="language_ic"></span><span>中国</span><span class="language_select"></span></div> <div class="container"> </div> <div class="headerRight grid--vertical-align-center"> <span class="header-icon header-min-setting"></span> <span class="header-icon header-min-close"></span> </div> </div> </div> <div class="header-drawer"> <ul class="header-drawer-box"> <li class="textItem"> <div class="textItem_div"> <a href="/cn/home-owners" id="header_0_rptMobileMainNav_lkLink_0" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF15B23F7', uem_label: '点击 页眉-家庭业主',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Home Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>家庭业主</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="/cn/business-owners" id="header_0_rptMobileMainNav_lkLink_1" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF1C5ED52', uem_label: '点击 页眉-企业业主',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Business Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>企业业主</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="/cn/utility-plant-owners" id="header_0_rptMobileMainNav_lkLink_2" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF378EC17', uem_label: '点击 页眉-电站业主',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Utility Plant Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>电站业主</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_3" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF145F5B1', uem_label: '点击 页眉-专业人士',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>专业人士</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="/cn/professionals/residential" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF62DD5ED', uem_label: '点击 页眉-专业人士-家庭绿电',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Residential Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">家庭绿电</a></li> <li class="textItem"><a class="item-link" href="/cn/professionals/c-i" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF2BB25E9', uem_label: '点击 页眉-专业人士-行业绿电',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'C&I Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">行业绿电</a></li> <li class="textItem"><a class="item-link" href="/cn/professionals/utility" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF1EC2784', uem_label: '点击 页眉-专业人士-智能光伏',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart PV Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能光伏电站</a></li> <li class="textItem"><a class="item-link" href="/cn/professionals/ess" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF778DA8D', uem_label: '点击 页眉-专业人士-智能组串',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Utility Smart String ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能组串式储能</a></li> <li class="textItem"><a class="item-link" href="/cn/professionals/micro-grid" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7682BEA', uem_label: '点击 页眉-专业人士-智能微网',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'Smart Micro-grid Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能微网</a></li> <li class="textItem"><a class="item-link" href="/cn/professionals/SmartDesign" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C6F5A7B4A2BCC5B', uem_label: '点击 页眉-专业人士-智能设计工具',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Professionals'+'+'+'SmartDesign 2.0'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能设计工具</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_4" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF2B78754', uem_label: '点击 页眉-合作伙伴',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Partners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>合作伙伴</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="/cn/partners/partner-introduction" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7472314', uem_label: '点击 页眉-合作伙伴-伙伴介绍',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Partner Introduction'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">伙伴介绍</a></li> <li class="textItem"><a class="item-link" href="https://partner.huawei.com/ecpri/#/?lang=zh_CN" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF5E24D8F', uem_label: '点击 页眉-合作伙伴-成为伙伴',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Become a Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">成为伙伴</a></li> <li class="textItem"><a class="item-link" href="https://digitalpower.huawei.com/partner#/cn/main" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7B43D0B', uem_label: '点击 页眉-合作伙伴-powerpartner',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Power-Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Power-Partner</a></li> <li class="textItem"><a class="item-link" href="https://community.solar.huawei.com/cn/index.html" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF7B090AF', uem_label: '点击 页眉-合作伙伴-安装商社区',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Installers Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">安装商社区</a></li> <li class="textItem"><a class="item-link" href="/cn/partners/map?type=installer" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C8209C7C4044BB7', uem_label: '点击 页眉-合作伙伴-寻找安装商',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Partners'+'+'+'Find an Installer'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">寻找安装商</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a href="/cn/professionals/all-products" id="header_0_rptMobileMainNav_lkLink_5" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF03B264B', uem_label: '点击 页眉-产品',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Products'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>产品</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_6" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF29D21BB', uem_label: '点击 页眉-支持',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>支持</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="/cn/service-support/tsc" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C6F5B36F49E23A9', uem_label: '点击 页眉-技术支持中心',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Services and Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">服务与支持</a></li> <li class="textItem"><a class="item-link" href="https://forum.huawei.com/enterprise/zh/forums/580879799675662336/580879823092461568" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF42A2E27', uem_label: '点击 页眉-支持-论坛',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Forum'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">论坛</a></li> <li class="textItem"><a class="item-link" href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=zh_CN&domain=smartpv&from_title_zh=1117" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF477CAF5', uem_label: '点击 页眉-支持-在线支持',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Support'+'+'+'Online Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">在线支持</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a href="https://community.solar.huawei.com/cn/index.html" id="header_0_rptMobileMainNav_lkLink_7" class="item-link" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF2A0B940', uem_label: '点击 页眉-社区',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>社区</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a href="javascript:;" id="header_0_rptMobileMainNav_lkLink_8" class="item-link" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF4DECA10', uem_label: '点击 页眉-下载中心',}); } catch (e) {};try { gtag('event','First_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction': 'First_Navigation','eventLabel':'Download'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>下载中心</span> </a> <span class="textItem_arr"></span> </div> <ul class="submenu" style="display: none;"> <li class="textItem"><a class="item-link" href="https://solar.huawei.com/cn/info/" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF6F08A5F', uem_label: '点击 页眉-下载中心-产品资料中心',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'Product Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">产品资料中心</a></li> <li class="textItem"><a class="item-link" href="https://digitalpower.huawei.com/power-marketing/#/cn/home" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF47ED7E5', uem_label: '点击 页眉-下载中心-营销资料中心',}); } catch (e) {};try { gtag('event','Sub_Navigation',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Sub_Navigation','eventLabel':'Download'+'+'+'MKT Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">营销资料中心</a></li> </ul> </li> <li class="textItem"> <div class="textItem_div"> <a class="item-link" href="/cn/online-experience-hall?step=card" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF8B83575', uem_label: '点击 页眉-在线体验专区',}); } catch (e) {};try { gtag('event','Navigation_Function',{'eventCategory':document.location.pathname,'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Navigation_Function','eventLabel':'Online Experience Hall'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>在线体验专区</span> </a> </div> </li> <li class="textItem"> <div class="textItem_div"> <a class="item-link" href="/cn/order-now" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF4415B50', uem_label: '点击 页眉-立即购买',}); } catch (e) {};try { gtag('event','Buy_Click',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventAction':'Buy_Click','eventLabel':'Order Now'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <span>立即购买</span> </a> </div> </li> </ul> </div> </div> </div> </div> </div> <input id="pagelang" type="hidden" value="zh"> <div class="main"> <!--HWDocContent--> <div id="dig_swiper_banner" class="dig_banner"> <div class="swiper dig_swiper"> <div class="swiper-wrapper"> <div class="swiper-slide"> <a href="/cn/home-owners" target="" onclick=""> <picture class="dig_banner_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20240805/mob.jpg"></source> <img src="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20240805/pc.jpg"> </picture> <div class="dig_banner_content"> <div class="solar-button-wrap-2"> <div class="solar-button-position-2"> <a href="https://solar.huawei.com/cn/home-owners" class="solar-common-button" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C81DE6BEEAAB4A9', uem_label: '按钮-首页-Banner跳转家庭业主',}); } catch (e) {}; try { gtag('event', 'Banner_Click',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': document.location.pathname,'eventAction': 'Banner_Click','eventLabel': 'Huawei Home Green Power'+'+'+'0-1'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}); } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">了解更多</a> </div> </div> <style> .dig_banner_content .solar-button-wrap-2 { position: relative; } .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 { position: absolute; top: 5.2vw; left: 9.6vw; line-height: 1.6; } .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 .solar-common-button { width: 11.875rem; height: 3.125rem; border-radius: 1.5rem; /* opacity: 0; */ display: inline-flex; font-size: 0.729167vw; min-width: 6rem; padding: 0 1rem; color: #000; border: 1px solid #000; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s cubic-bezier(0.65, 0.05, 0.36, 1); transition-property: background, color, border, width, height; } .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 .solar-common-button:hover { border-color: #000000; background: rgba(0, 0, 0, 0.7); color: #ffffff; } .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 .solar-common-button:focus { border-radius: 1.5rem; } @media screen and (max-width: 768px) { .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 { top: 33.2vw; left: 50%; transform: translateX(-50%); } .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 .solar-common-button { min-width: 108px; width: auto; height: 32px; font-size: 12px; background-color: transparent; color: #000; border: 1px solid #000; } .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 .solar-common-button:hover { border-color: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8); color: #fff; } } @media screen and (max-width: 1650px) { .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 .solar-common-button { font-size: 12px; } } @media screen and (width:1024px) { .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 { left: 5.6vw; } } @media screen and (width:834px) { .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 { left: 3.6vw; } } @media screen and (width:1194px) { .dig_banner_content .solar-button-wrap-2 .solar-button-position-2 { left: 7vw; } } </style> </div> </a> </div> <div class="swiper-slide"> <picture class="dig_banner_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20240716/mob.jpg"></source> <img src="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20240716/pc.jpg"> </picture> <div class="dig_banner_content"> <div class="solar-button-wrap-1"> <div class="solar-button-position-1"> <p class="solar-video-btn-click" data-solarpopvideo="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20240716/banner-video.mp4" data-solarpopimg="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20240716/video-img" data-name="Huawei Home Green Power">了解更多</p> <div class="solar-pop-video-bg"> <div class="solar-pop-video-content"> <img src="/Assets/Solar/v4/img/Home/close.png" alt="" class="solar-pop-close"> <video data-video-ratio="16:9" autoplay="" class="solar-pop-video" controls="" playsinline="true" webkit-playsinline="true" controlslist="nodownload" webkit-playsinline="true" x-webkit-airplay="true" x5-video-player-type="h5" x5-video-player-fullscreen="true" poster="" src=""></video> </div> </div> </div> </div> <style> .dig_banner_content .solar-button-wrap-1 { position: relative; } .dig_banner_content .solar-button-wrap-1 .solar-button-position-1 { position: absolute; left: 3vw; top: 19vw; } .solar-pop-video-content video { width: 100%; } .solar-pop-video-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, .6); display: none; } .solar-pop-video-content { position: absolute; top: 45%; left: 50%; transform: translate(-50%, -50%); width: 70vw; } .solar-pop-video-content .solar-pop-close { position: absolute; top: 0; right: 0; width: 2vw; z-index: 99; cursor: pointer; } .solar-video-btn-click { width: 11.875rem; height: 3.125rem; border-radius: 1.5rem; /* opacity: 0; */ display: inline-flex; font-size: 0.729167vw; min-width: 6rem; padding: 0 1rem; color: #ffffff; border: 1px solid #ffffff; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s cubic-bezier(0.65, 0.05, 0.36, 1); transition-property: background, color, border, width, height; } .solar-video-btn-click:hover { border-color: #000000; background: rgba(0, 0, 0, 0.7); color: #ffffff; } .solar-video-btn-click:focus { border-radius: 1.5rem; } @media screen and (max-aspect-ratio: 11 / 10) { .solar-pop-video-content { top: 65vw; left: 50%; width: 95vw; } .solar-pop-video-bg { width: 100vw; height: 167.888889vw; top: -79vw; left: -35vw; } .dig_banner_content .solar-button-wrap-1 .solar-button-position-1 { top: 62.2vw; left: 50%; transform: translateX(-50%); } .solar-video-btn-click { min-width: 108px; width: auto; height: 32px; font-size: 12px; background-color: transparent; color: #fff; border: 1px solid #fff; } .solar-video-btn-click:hover { border-color: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8); color: #fff; } } </style> <script> $(function () { function setupGA(name) { let playedPercent = []; function pushData(videoName, videoStep) { gtag('event', 'Video_Play', { 'Site_Country_Code_H': $('html').attr('data-region').toUpperCase(), 'eventAction': 'Video_Play', 'eventLabel': videoName + '+' + videoStep + '+' + (window.location.origin + window.location.pathname).replace(/\/$/, '') }) } function videoStep(video, videoName, index) { let progress = Math.floor(video.currentTime * 100 / video.duration); if (progress >= 25 && progress < 50 && !playedPercent[index]._25) { pushData(videoName, '25%'); playedPercent[index]._25 = true; } else if (progress >= 50 && progress < 75 && !playedPercent[index]._50) { pushData(videoName, '50%'); playedPercent[index]._50 = true; } else if (progress >= 75 && progress < 100 && !playedPercent[index]._75) { pushData(videoName, '75%'); playedPercent[index]._75 = true; } else if (progress >= 0 && progress < 25 && !playedPercent[index]._0) { pushData(videoName, '0%'); playedPercent[index]._0 = true; } } function videoStatus(video, videoName, index) { video.ontimeupdate = function () { videoStep(video, videoName, index); } ; video.onended = function () { if (!playedPercent[index]._100) { pushData(videoName, '100%'); playedPercent[index]._100 = true; } } ; } let banerBox = document.querySelectorAll('.solar-pop-video-content') banerBox.forEach(function (item, index) { let percent = { _0: false, _25: false, _50: false, _75: false, _100: false, }; playedPercent.push(percent); let video = item.querySelector('.solar-pop-video-content video') if (!video) return // let name = $(".future-video-box2 video")[0].dataset.name videoStatus(video, name, index); }); } $(".solar-video-btn-click").each(function () { $(this).on("click", function () { document.body.style.overflow = "hidden"; $(this).next().css("display", "block") $(this).next().find("video").attr("src", $(this).attr("data-solarPopVideo")) $(this).next().find("video").attr("poster", $(this).attr("data-solarPopImg")) // $(".solar-pop-video-content video").load(); var v_width = document.body.clientWidth * 0.8; var v_height = v_width * 0.5625; if (typeof ($(this).data('video-ratio')) == 'string' && /^[0-9]{1,2}:[0-9]{1,2}$/.test(video.$(this).data('video-ratio'))) { var ratio = video.$(this).data('video-ratio').split(':'); height = width * parseInt(ratio[1]) / parseInt(ratio[0]); } // $(".solar-pop-video-content").css("width", v_width) // $(".solar-pop-video-content").css("height", v_height) try { gtag('event', 'Banner_Click', { 'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(), 'eventCategory': document.location.pathnam, 'eventAction': 'Banner_Click', 'eventLabel': 'Huawei Home Green Power' + '+' + '0-2' + '+' + (window.location.origin + window.location.pathname).replace(/\/$/, '') }) } catch (error) { if (error.message === 'gtag is not defined') { console.log('Google Analytics is not available. Event tracking is disabled.'); } else { throw error; } } try { setupGA($(this).data('name')) } catch (error) { if (error.message === 'gtag is not defined') { console.log('Google Analytics is not available. Event tracking is disabled.'); } else { throw error; } } }) }) $(".solar-pop-close").on("click", function () { $(".solar-pop-video-bg").css("display", "none") $(this).next().attr("src","") document.body.style.overflow = "auto"; }) }) </script> </div> </div> <div class="swiper-slide"> <picture class="dig_banner_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20241023/mob.jpg"></source> <img src="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-20241023/pc.jpg"> </picture> <div class="dig_banner_content"> <div class="solar-button-wrap-3"> <div class="solar-button-position-3"> <a href="/cn/activity/purchasePVcontroller-getmobilefree" class="solar-common-button-3" onclick="try { gtag('event', 'Banner_Click',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': document.location.pathname,'eventAction': 'Banner_Click','eventLabel': 'Huawei Smart PV 150 Supreme Reward Season'+'+'+'0-3'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}); } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">了解更多</a> </div> </div> <style> .dig_banner_content .solar-button-wrap-3 { position: relative; } .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 { position: absolute; top: 20.5vw; left: 9.9vw; line-height: 1.6; } .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 .solar-common-button-3 { width: 11.875rem; height: 3.125rem; border-radius: 1.5rem; /* opacity: 0; */ display: inline-flex; font-size: 0.729167vw; min-width: 6rem; padding: 0 1rem; color: #000000; border: 1px solid #000000; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s cubic-bezier(0.65, 0.05, 0.36, 1); transition-property: background, color, border, width, height; } .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 .solar-common-button-3:hover { border-color: #000; background: rgba(0, 0, 0, 0.7); color: #ffffff; } .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 .solar-common-button-3:focus { border-radius: 1.5rem; } @media screen and (max-width: 768px) { .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 { top: 27.2vw; left: 50%; transform: translateX(-50%); } .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 .solar-common-button-3 { min-width: 108px; width: auto; height: 32px; font-size: 12px; background-color: transparent; color: #000; border: 1px solid #000; } .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 .solar-common-button-3:hover { border-color: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8); color: #fff; } } @media screen and (max-width: 1650px) { .dig_banner_content .solar-button-wrap-3 .solar-button-position-3 .solar-common-button-3 { font-size: 12px; } } </style> </div> </div> <div class="swiper-slide"> <a href="/cn/professionals/residential" target="" onclick="try { gtag('event', 'Banner_Click',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': document.location.pathname,'eventAction': 'Banner_Click','eventLabel': 'Residential Smart PV Solution'+'+'+'0-4'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}); } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}"> <picture class="dig_banner_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-shuimian/mob.jpg"></source> <img src="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/banner-shuimian/pc.jpg"> </picture> <div class="dig_banner_content"> </div> </a> </div> <div class="swiper-slide"> <picture class="dig_banner_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/yalongjiang/mob.jpg"></source> <img src="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/swiperbanner/yalongjiang/pc.jpg"> </picture> <div class="dig_banner_content"> <div class="solar-button-wrap"> <div class="solar-button-position"> <a href="https://solar.huawei.com/cn/success-stories/cn/2023/Storie20" class="solar-common-button" onclick="try { gtag('event', 'Banner_Click',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': document.location.pathname,'eventAction': 'Banner_Click','eventLabel': 'WHEN SOLAR MEETS HYDRO'+'+'+'0-5'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}); } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">了解更多</a> </div> </div> <style> .dig_banner_content .solar-button-wrap { position: relative; } .dig_banner_content .solar-button-wrap .solar-button-position { position: absolute; top: 19.2vw; left: 4.6vw; line-height: 1.6; } .dig_banner_content .solar-button-wrap .solar-button-position .solar-common-button { width: 11.875rem; height: 3.125rem; border-radius: 1.5rem; /* opacity: 0; */ display: inline-flex; font-size: 0.729167vw; min-width: 6rem; padding: 0 1rem; color: #ffffff; border: 1px solid #ffffff; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s cubic-bezier(0.65, 0.05, 0.36, 1); transition-property: background, color, border, width, height; } .dig_banner_content .solar-button-wrap .solar-button-position .solar-common-button:hover { border-color: #000000; background: rgba(0, 0, 0, 0.7); color: #ffffff; } .dig_banner_content .solar-button-wrap .solar-button-position .solar-common-button:focus { border-radius: 1.5rem; } @media screen and (max-width: 768px) { .dig_banner_content .solar-button-wrap .solar-button-position { top: 62.2vw; left: 50%; transform: translateX(-50%); } .dig_banner_content .solar-button-wrap .solar-button-position .solar-common-button { min-width: 108px; width: auto; height: 32px; font-size: 12px; background-color: transparent; color: #000; border: 1px solid #000; } .dig_banner_content .solar-button-wrap .solar-button-position .solar-common-button:hover { border-color: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8); color: #fff; } } @media screen and (max-width: 1650px) { .dig_banner_content .solar-button-wrap .solar-button-position .solar-common-button { font-size: 12px; } } </style> </div> </div> </div> <div class="swiper-pagination dig_BannerSwiper_pagination"></div> </div> </div> <div class="home_banner"> <video autoplay="" loop="" muted="" playsinline="" poster="/-/media/SolarV4/solar-version2/asia-pacific/cn/homepage/kv-banner/homg-backgroundSuccessful-Stories-img-20230309.jpg" src="/-/media/SolarV4/images/Home/update/homg-background-Successful-Stories-v1.mp4"> </video> <div class="home_banner_content"> <div class="home_banner_title"> <p> 光储融合 全面智能 </p> <span>加速光伏成为主力能源,让绿色电力</span> <span>惠及千行百业、千家万户</span> </div> <div class="banner-buttons home_banner_btn"> <button class="ev_button default button-transparent border-radius-24" title="" tabindex="0" type="button"> <span class="ev_button_text">成功故事</span> </button> </div> </div> </div> <div class="home_banner_HiddenedVideo"> <div class="home_banner_HV_content"> <img class="home_banner_HV_close" src="/Assets/Solar/v4/img/Home/close.png" alt="HV_close"><video src="/-/media/SolarV4/images/Home/update/home-Successful-Stories.mp4" poster="" controls="true"> </video> </div> </div> <div class="home_dig_panel"> <div class="home_dig_panel_items"> <div class="home_dig_panel_item"> <h2> <img src="/-/media/SolarV4/images/Home/home_icon1.svg" alt="7695亿度累计绿色发电"> 11095</h2> <p>亿度累计绿色发电</p> </div> <div class="home_dig_panel_item"> <h2> <img src="/-/media/SolarV4/images/Home/home_icon2.svg" alt="3.5亿吨等效CO₂减排"> 5.27</h2> <p>亿吨等效CO₂减排</p> </div> <div class="home_dig_panel_item"> <h2> <img src="/-/media/SolarV4/images/Home/home_icon3.svg" alt="4.8亿棵等效种植树"> 7.19</h2> <p>亿棵等效种植树</p> </div> </div> </div> <div class="home_XA"> <div class="dig_carouse_accordion"> <div class="dig_carouse_headerTitle"> 引领创新<br>持续为客户创造价值 </div> <div class="dig_carouse_accordion_box"> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/update/home-carouse_5_1.png"></source> <img src="/-/media/SolarV4/images/Home/update/home-carouse_5_1.png" alt="引领组串逆变器成为主流"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> 引领组串逆变器成为主流 </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/update/home-carouse_5_2.png"></source> <img src="/-/media/SolarV4/images/Home/update/home-carouse_5_2.png" alt="引领储能系统架构创新"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> 引领储能系统架构创新 </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/update/home-carouse_5_3.png"></source> <img src="/-/media/SolarV4/images/Home/update/home-carouse_5_3.png" alt="引领数字化智能化升级"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> 引领数字化智能化升级 </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li "> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/update/home-carouse_5_4.png"></source> <img src="/-/media/SolarV4/images/Home/update/home-carouse_5_4.png" alt="引领光伏系统安全升级"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> 引领光伏系统安全升级 </div> </div> <div class="dig_ca_mock"></div> </div> <div class="dig_carouse_accordion_li active"> <picture class="dig_swiper_picture"> <source media="(max-width:768px)" srcset="/-/media/SolarV4/images/Home/update/home-carouse_5_5.jpg"></source> <img src="/-/media/SolarV4/images/Home/update/home-carouse_5_5.jpg" alt="引领并网友好"> </picture> <div class="dig_ca_text_wrap"> <div class="dig_ca_li_title"> 引领并网友好 </div> </div> <div class="dig_ca_mock"></div> </div> </div> </div> </div> <div class="home_pvSystem"> <!-- <video muted src="https://solar.huawei.com/~/media/Solar/videos/_ver2.webm" ></video> --> <video autoplay="" muted="" playsinline="" src="/-/media/SolarV4/images/Home/_ver2.mp4"> </video> <img class="home_pvSystem_bg_m" src="/-/media/SolarV4/images/Home/pvSystem.jpg" alt="pvSystem"> <div class="home_pvSystem_tag home_pvSystem_tag0"> <img src="/-/media/SolarV4/images/Home/pv1.png" alt="pv1"><span class="home_pvSystem_tag_desc">智能微网</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub0"> <img src="/-/media/SolarV4/images/Home/sub1.png" alt="智能微网"> <p class="home_pvSystem_sub_title">智能微网</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/cn/utility-plant-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Smart Micro-grid Solution'+'+'+'Utility Plant Owners'+'+'+ (window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">电站业主</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/cn/professionals/micro-grid" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Smart Micro-grid Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">专业人士</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag1"> <img src="/-/media/SolarV4/images/Home/pv2.png" alt="智能光储电站"><span class="home_pvSystem_tag_desc">智能光储电站</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub1"> <img src="/-/media/SolarV4/images/Home/sub2.png" alt="智能光储电站"> <p class="home_pvSystem_sub_title">智能光储电站</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/cn/utility-plant-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart PV Solution'+'+'+'Utility Plant Owners'+'+'+ (window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">电站业主</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/cn/professionals/utility" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart PV Solution'+'+'+ 'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">专业人士</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag2"> <img src="/-/media/SolarV4/images/Home/pv3.png" alt="行业绿电"><span class="home_pvSystem_tag_desc">行业绿电</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub2"> <img src="/-/media/SolarV4/images/Home/sub3.png" alt="行业绿电"> <p class="home_pvSystem_sub_title">行业绿电</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/cn/business-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'C&I Smart PV & ESS Solution'+'+'+'Business Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">企业业主</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/cn/professionals/c-i" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'C&I Smart PV & ESS Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">专业人士</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag3"> <img src="/-/media/SolarV4/images/Home/pv4.png" alt="家庭绿电"><span class="home_pvSystem_tag_desc">家庭绿电</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub3"> <img src="/-/media/SolarV4/images/Home/sub4.png" alt="家庭绿电"> <p class="home_pvSystem_sub_title">家庭绿电</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/cn/home-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Residential Smart PV & ESS Solution'+'+'+'Home Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">家庭业主</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/cn/professionals/residential" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Residential Smart PV & ESS Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">专业人士</a> </span> </div> </div> </div> <div class="home_pvSystem_tag home_pvSystem_tag4"> <img src="/-/media/SolarV4/images/Home/pv5.png" alt="智能组串式储能"><span class="home_pvSystem_tag_desc">智能组串式储能</span> <div class="home_pvSystem_tag_sub home_pvSystem_tag_sub4"> <img src="/-/media/SolarV4/images/Home/sub5.png" alt="智能组串式储能"> <p class="home_pvSystem_sub_title">智能组串式储能</p> <div class="home_pvSystem_sub_btns"> <span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon1"></span><a href="/cn/utility-plant-owners" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart String ESS Solution'+'+'+'Utility Plant Owners'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">电站业主</a> </span><span class="home_pvSystem_sub_btn"> <span class="home_pvs_sub_icon home_pvs_sub_icon2"></span><a href="/cn/professionals/ess" target="" onclick="try { gtag('event','Scene_Selection',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':'home page','eventAction':'Scene_Selection','eventLabel':'Utility Smart String ESS Solution'+'+'+'Professionals'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">专业人士</a> </span> </div> </div> </div> </div> <div class="home_global_container"> <div class="home_global"> <div class="home_glb_canvas home_glb_canvas_mobile"> <canvas id="homeGlbCanvas" width="784" height="784"></canvas> </div> <div class="home_glb_content"> <div class="home_glb_inner_content"> <div class="inCont_left"> <span class="inCont_left_value inCont_left_value_yellow">160+</span><span class="inCont_left_desc">全球技术支持和备件中心</span> </div> <div class="inCont_split"></div> <div class="inCont_right"> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">5</span> <div class="inCont_right_subItem_desc"> 技术支持中心 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">5</span> <div class="inCont_right_subItem_desc"> 备件运作中心 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">2</span> <div class="inCont_right_subItem_desc"> 备件维修中心 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">140+</span> <div class="inCont_right_subItem_desc"> 国家备件物流中心 </div> </div> </div> </div> </div> <div class="home_glb_content"> <div class="home_glb_inner_content"> <div class="inCont_left"> <span class="inCont_left_value inCont_left_value_orange">1760+</span><span class="inCont_left_desc">全球合作伙伴</span> </div> <div class="inCont_split"></div> <div class="inCont_right"> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">1700+</span> <div class="inCont_right_subItem_desc"> 销售伙伴 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">60+</span> <div class="inCont_right_subItem_desc"> 服务伙伴 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">2000+</span> <div class="inCont_right_subItem_desc"> 认证安装商 </div> </div> </div> </div> </div> <div class="home_glb_content"> <div class="home_glb_inner_content"> <div class="inCont_left"> <span class="inCont_left_value inCont_left_value_green">17</span><span class="inCont_left_desc">全球研究中心</span> </div> <div class="inCont_split"></div> <div class="inCont_right"> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">5</span> <div class="inCont_right_subItem_desc"> 能力中心 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">12</span> <div class="inCont_right_subItem_desc"> 研发中心 </div> </div> <div class="inCont_right_subItem"> <span class="inCont_right_subItem_value">23%+</span> <div class="inCont_right_subItem_desc"> 研发费用投入 </div> </div> </div> </div> </div> </div> </div> <script> var earchFolder = 'en'; </script> <div class="home_onlineHall"> <video autoplay="" loop="" muted="" playsinline="" poster="" src="/-/media/SolarV4/images/Home/online-hall.mp4"> </video> <div class="hO_hallTitle"> <span class="hO_circle"></span> <h2>在线体验专区</h2> <p>身临其境,尽享沉浸体验乐趣</p> </div> <div class="banner-buttons hO_btn"> <a href="/cn/online-experience-hall?step=card" target="" onclick="gtag('event', 'Online_Experience_Entry Interaction',{'Site_Country_Code_H': $('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory': 'home page','eventAction': 'Online_Experience_Entry','eventLabel': 'Take a Tour Now'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')})"> <button id="ev_bt_1007" class="ev_button default button-transparent border-radius-24" title="" tabindex="0" type="button"> <span class="ev_button_text">立即体验</span> </button> </a> </div> </div> <div class="newsletter" id="newsletter"> <picture class="dig_banner_picture"> <source media="(max-aspect-ratio: 11/10)" srcset="/-/media/SolarV4/solar-version2/common/homepage/subscribed/img/newsletter_bg_mob.png"></source> <img src="/-/media/SolarV4/solar-version2/common/homepage/subscribed/img/newsletter_bg_pc.png"> </picture> <div class="inner"> <h2>邮件订阅</h2> <div class="form-info"> <form id="myForm"> <input id="pagelang" type="hidden" value="zh"> <input name="source" type="hidden" value="solar"> <!-- <input name="dataSource" type="hidden" value="newsletter"> --> <div class="form_container"> <div class="input_info"> <div class="input_container"> <input type="text" class="" readonly="readonly" autocomplete="off" value="" name='position' id='position' onblur="changeValue('position')" placeholder="我是一名……" oninput="changeValue('position')" onclick="uemRoleSelector()"> <img src="/-/media/SolarV4/solar-version2/common/homepage/subscribed/img/arrow_down.png"> </div> <ul> <li>安装商</li> <li>经销商</li> <li>家庭业主</li> <li>企业业主</li> <li>电站业主</li> <li>媒体</li> </ul> </div> <span class="" id="span_position"> <span class="mandatory">必填项</span> </span> </div> <div class="form_container"> <div class="input_info"> <input type="text" class="" autocomplete="off" value="" name='email' id='email' onblur="changeValue('email')" oninput="changeValue('email')" placeholder="请输入您的电子邮箱" onporpertychange="propsChange('email')" onclick="uemEmailInput()"> </div> <span class="" id="span_email"> <span class="mandatory">必填项</span> <span class="custom">请输入有效的电子邮箱地址</span> </span> </div> <div class="form_container"> <div class="checkbox_container"> <div class="checkbox_info"> <div class="check_mark"> <input type="checkbox" value="" id='checkbox'> <label for="checkbox"></label> </div> <label title="我愿意接受华为公司及其授权的合作伙伴为我发送华为产品、解决方案或服务的相关信息。我知道我可以随时取消订阅。"><span class="">* </span>我愿意接受华为公司及其授权的合作伙伴为我发送华为产品、解决方案或服务的相关信息。我知道我可以随时取消订阅。</label> </div> <span class="" id="span_checkbox"> <span class="mandatory">必填项 </span> </span> </div> </div> <div class="form_container"> <div class="checkbox_container"> <div class="checkbox_info"> <div class="check_mark"> <input type="checkbox" value="" id='checkbox_privacy'> <label for="checkbox_privacy"></label> </div> <label> <span class="">* </span>我理解并同意按照<a href="https://solar.huawei.com/cn/privacy" target="_blank" rel="noreferrer" title="华为隐私保护条款">华为隐私保护条款</a>和<a href="https://www.huawei.com/cn/legal" target="_blank" rel="noreferrer" title="使用条款">使用条款</a>使用和传递我的个人信息。 </label> </div> <span class="" id="span_checkbox_privacy"> <span class="mandatory">必填项 </span> </span> </div> </div> <div class="form_container"> <button class="submit_btn" type="button" onclick="uemSubscribed()"> <span>点击订阅</span> </button> </div> </form> </div> </div> <div class="success_message"> <div class="inner"> <h2>感谢您的订阅!</h2> <p>您的邮箱将收到一封确认邮件,请留意查收。您可以点击订阅邮件中的取消订阅链接,随时取消订阅。</p> <div class="close_btn"> <img src="/-/media/SolarV4/solar-version2/common/homepage/subscribed/img/close_btn.png"> </div> </div> </div> </div> <!-- cookie --> <script> function uemSubscribed() { try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C6F25EB76594EDD', uem_label: '按钮-首页-点击订阅按钮', }); } catch (error) { } } function uemRoleSelector() { try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C81D4B436B35F6A', uem_label: '按钮-首页-邮件订阅角色框', }); } catch (error) { } } function uemEmailInput() { try { window.hwa('trackStructEvent', { uem_id: 'P81D4335EE84FE6_C81D4BA91CECD67', uem_label: '按钮-首页-邮件订阅文本框', }); } catch (error) { } } </script> <!--/HWDocContent--> </div> <div id="pageFooterWrapper" class="dark"> <div class="page-footer"> <div class="footer-main"> <div class="footer-note"> <p> </p> </div> <div class="footer-top-pc"> <div class="footer-item"> <p class="footer-col-title"> 关于华为智能光伏 <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/cn/news-room" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF9AE9F02', uem_label: '点击 页脚-新闻动态',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'News'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">新闻动态</a> </li> <li> <a href="/cn/events-list" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF685BEE2', uem_label: '点击 页脚-展会活动',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'Events'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">展会活动</a> </li> <li> <a href="/cn/success-stories" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF600C6A9', uem_label: '点击 页脚-成功故事', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'Success Stories'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">成功故事</a> </li> <li> <a href="/cn/events-list/cn/2023/publications" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFA7FE925', uem_label: '点击 页脚-出版物', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'Publications'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">出版物</a> </li> <li> <a href="/cn/newsletter" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF92D4039', uem_label: '点击 页脚-邮件订阅', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'About FusionSolar'+'+'+'Newsletter'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">邮件订阅</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> 产品 & 解决方案 <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/cn/professionals/residential" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFC68A1B1', uem_label: '点击 页脚-家庭绿电', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Residential Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">家庭绿电</a> </li> <li> <a href="/cn/professionals/c-i" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF917FCBF', uem_label: '点击 页脚-行业绿电', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'C&I Smart PV & ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">行业绿电</a> </li> <li> <a href="/cn/professionals/utility" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFC129699', uem_label: '点击 页脚-智能光伏电站',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Utility Smart PV Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能光伏电站</a> </li> <li> <a href="/cn/professionals/ess" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF9407DA2', uem_label: '点击 页脚-智能组串式储能',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Utility Smart String ESS Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能组串式储能</a> </li> <li> <a href="/cn/professionals/micro-grid" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF856541C', uem_label: '点击 页脚-智能微网', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'Smart Micro-grid Solution'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能微网</a> </li> <li> <a href="/cn/professionals/all-products" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF82FAC94', uem_label: '点击 页脚-所有产品',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'All Products'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">所有产品</a> </li> <li> <a href="/cn/professionals/SmartDesign" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFA50BFA2', uem_label: '点击 页脚-智能设计工具', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Products & Solution'+'+'+'SmartDesign 2.0'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">智能设计工具</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> 合作伙伴 <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/cn/partners/partner-introduction" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFAA8957F', uem_label: '点击 页脚-伙伴介绍',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Partner Introduction'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">伙伴介绍</a> </li> <li> <a href="https://partner.huawei.com/ecpri/#/?lang=zh_CN" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BF9089592', uem_label: '点击 页脚-成为伙伴', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Become a Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">成为伙伴</a> </li> <li> <a href="/cn/partners/map?type=installer" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFA5D8847', uem_label: '点击 页脚-寻找安装商',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Find an Installer'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">寻找安装商</a> </li> <li> <a href="https://digitalpower.huawei.com/partner#/cn/main" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFC902FA5', uem_label: '点击 页脚-Power-Partner', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Partners'+'+'+'Power-Partner'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">Power-Partner</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> 服务与支持 <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="/cn/service-support/tsc" target="" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFE8E0187', uem_label: '点击 页脚-技术支持中心', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Technical Support Center'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">技术支持中心</a> </li> <li> <a href="https://digitalpower.huawei.com/power-marketing/#/cn/home" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFB55CBBB', uem_label: '点击 页脚-营销资料中心', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'MKT Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">营销资料中心</a> </li> <li> <a href="https://solar.huawei.com/cn/info/" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFDC6C32C', uem_label: '点击 页脚-产品资料中心', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Product Document'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">产品资料中心</a> </li> <li> <a href="https://community.solar.huawei.com/cn/index.html" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFEA13070', uem_label: '点击 页脚-社区', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Community'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">社区</a> </li> <li> <a href="https://forum.huawei.com/enterprise/zh/forums/580879799675662336/580879823092461568" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFC06F0BC', uem_label: '点击 页脚-论坛', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Forum'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">论坛</a> </li> <li> <a href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=zh_CN&domain=smartpv&from_title_zh=1117" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFBC0C044', uem_label: '点击 页脚-在线支持', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Service & Support'+'+'+'Online Support'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">在线支持</a> </li> </ul> </div> <div class="footer-item"> <p class="footer-col-title"> 快速链接 <span class="textItem_arr"></span> </p> <ul class="footer-col-list"> <li> <a href="https://www.huawei.com/cn" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6C00CC864D', uem_label: '点击 页脚-华为集团',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Huawei Corporate'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">华为集团</a> </li> <li> <a href="https://e.huawei.com/cn" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFE2F1FDA', uem_label: '点击 页脚-华为企业业务', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Huawei Enterprise'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">华为企业业务</a> </li> <li> <a href="https://digitalpower.huawei.com/cn/?from=solar" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFF11F4E4', uem_label: '点击 页脚-华为数字能源', }); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Huawei Digital Power'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">华为数字能源</a> </li> <li> <a href="https://intl.fusionsolar.huawei.com/pvmswebsite/nologin/assets/build/index.html#/jumppage" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6C005E7B45', uem_label: '点击 页脚-下载智能光伏App(移动端)',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'Download FusionSolar App (Mobile Version)'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">下载智能光伏App(移动端)</a> </li> <li> <a href="https://intl.fusionsolar.huawei.com" target="_blank" onclick="try { window.hwa('trackStructEvent', { uem_id: 'P81D448CBFCA22F_C81DE6BFDEA6A0D', uem_label: '点击 页脚-登录智能光伏管理系统',}); } catch (e) {};try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation', 'eventLabel': 'Quick Links'+'+'+'FusionSolar SmartPVMS'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}">登录智能光伏管理系统</a> </li> </ul> </div> </div> <div class="footer-buttom"> <div class="footer-copyright-content"> <div class="footer-copyright footer-copyright-item"> © 2024 华为技术有限公司 </div> <div class="footer-law"> <span class="footer-copyright-item"> <a class="item-link" href="/cn/privacy" target="" onclick="try { gtag('event','Bottom_Navigation',{'Site_Country_Code_H':$('html').attr('data-region').replace(/[/]/g, '').toUpperCase(),'eventCategory':document.location.pathname,'eventAction':'Bottom_Navigation','eventLabel': 'Privacy'+'+'+(window.location.origin + window.location.pathname).replace(/\/$/, '')}) } catch (error) {if (error.message === 'gtag is not defined') {console.log('Google Analytics is not available. Event tracking is disabled.');} else {throw error;}}" rel="noreferrer"> 隐私政策 </a> </span> </div> </div> <div class="footer-link"> <style type="text/css"> .page-footer .footer-buttom .footer-link .link-img-shipinhao { background: url("/-/media/SolarV4/images/Home/update/shipinhao.svg") 0 0 no-repeat; } .dark .page-footer .footer-buttom .footer-link .link-img-shipinhao { background: url("/-/media/SolarV4/images/Home/update/shipinhao_dark_v5.svg") 0 0 no-repeat; } </style> <div class="social-item social-icon"> <span class="footer-link-img link-img-wechat"> </span> <div class="hover-pop"> <div class="icon-close"></div> <div class="pop-text"> <p>官方微信</p> </div> <div class="pop-img"> <img src="/Assets/Solar/v4/img/common/wechat.png"> </div> </div> </div> <div class="social-item social-icon last-icon"> <span class="footer-link-img link-img-toutiao"> </span> <div class="hover-pop"> <div class="icon-close"></div> <div class="pop-text"> <p>头条</p> </div> <div class="pop-img"> <img src="/Assets/Solar/v4/img/common/toutiao.png"> </div> </div> </div> <div class="social-item social-icon last-icon"> <span class="footer-link-img link-img-shipinhao"> </span> <div class="hover-pop"> <div class="icon-close"></div> <div class="pop-text"> <p>视频号</p> </div> <div class="pop-img"> <img src="/-/media/SolarV4/images/Home/update/home-footer-icon_3.jpg"> </div> </div> </div> <!-- cookie --> <script> (function (config) { if (!window.location.href.includes('/cn')) { return } var namespace = config.namespace || "hwa"; if (self[namespace] || document.querySelector("script#uem_f")) { return; } self[namespace] = function () { (self[namespace].q = self[namespace].q || []).push(arguments); }; var element = document.createElement("script"); element.TRACKER_CONFIG = config; element.async = true; element.id = "uem_f"; element.src = config.src + "?_" + new Date().toJSON().split("T")[0]; document.head.appendChild(element); })({ platform: "web", edition: "his", env: "prod", appKey: "4ab0d2e51b4af11d0a9d947a89a882cb", src: "https://hwa.his.huawei.com/dist/uem_f.js" }); </script> <script charset="UTF-8" src="https://static.sensorsdata.cn/sdk/1.26.17/sensorsdata.min.js?ver=202411131551"></script> <script charset="UTF-8"> var sensors = window['sensorsDataAnalytic201505']; sensors.use('PageLeave', {}); sensors.init({ server_url: 'https://cdp.test.huawei.com/sa', heatmap: { scroll_notice_map: 'default' }, use_client_time: true, send_type: 'beacon' }); sensors.quick('autoTrack'); </script> <div class="browsehappy ReadPolicy"> <p>本站点使用cookies,继续浏览表示您同意我们使用cookies。<a href="https://solar.huawei.com/cn/privacy" target="_blank"> <span>Cookies和隐私政策 ></span></a><a href="javascript:closeCookieBanner()" class="close" title="close"></a> </p> </div> <script> setTimeout(function() { jQuery.Cache = { get: function (key) { var val; try { val = JSON.parse(decodeURIComponent(localStorage.getItem(key))); } catch (_e) { } return val; }, set: function (key, _value, expireDays) { var value = _value; if (!value) return; if (typeof value !== "object") { value = { value: _value }; } var d = new Date(); d.setTime(d.getTime() + 24 * 60 * 60 * 1000 * expireDays); var expire = d; value.expire = expire; localStorage.setItem(key, encodeURIComponent(JSON.stringify(value))); }, del: function (key) { localStorage.removeItem(key); }, }; const commonModule = window.commonModule || {}; commonModule.browsehappy = function browsehappy() { if (!$.Cache) { setTimeout(() => { browsehappy(); }, 200); return; } let browsehappyCache = $.Cache.get('browsehappy'); let hideCache = function () { $.Cache.set('browsehappy', 'browsehappy', 365); }; $(document).on('click', '.browsehappy a.close', function (e) { $(this).closest('.browsehappy').slideUp(hideCache); }); try { if (!browsehappyCache || new Date(browsehappyCache.expire) - new Date() <= 0) { $.Cache.del('browsehappy'); $('.browsehappy').prependTo('body').slideDown(); $('.browsehappy').css('display', 'block'); history.scrollRestoration = 'manual'; $('html,body').animate( { scrollTop: 0, }, 'fast' ); } else { history.scrollRestoration = 'auto'; } } catch (_e) { } }; commonModule.browsehappy(); function closeCookieBanner() { hideCache(); $('.browsehappy').css('display', 'none') } },10) </script> <style> .ReadPolicy { background-color: #eeeeee; color: #282828; display: none; padding: 16px 0; width: 100%; z-index: 10000; position: fixed; bottom: 0; right: 0; } .ReadPolicy p { margin: 0 auto; font-size: 14px; line-height: 1.225; position: relative; padding-right: 20px; padding-left: 20px; width: 93.705%; max-width: 1799.136px; text-align: center; } .ReadPolicy p span { display: inline-block; vertical-align: top; letter-spacing: normal; } .ReadPolicy p a em { display: inline-block; vertical-align: top; font-weight: bold; transition: all 0.5s; letter-spacing: normal; } .ReadPolicy a { color: #c7000b; } .ReadPolicy p a:hover em { transform: translateX(10px); } .ReadPolicy .close { text-decoration: none; position: absolute; top: 0; right: 0px; display: block; height: 30px; width: 30px; color: #fff; line-height: 30px; text-align: center; float: right; margin-top: -7px; opacity: 1; } .ReadPolicy .close:before { content: '✖'; width: 30px; height: 30px; display: block; font-family: 'corpfont' !important; color: #333; font-size: 15px; } @media (max-width: 1024px) { .ReadPolicy { position: fixed; bottom: 0; left: 0; z-index: 999; width: 100%; } .ReadPolicy[style*='block']~.btn-go-top { bottom: 100px; } .ReadPolicy[style*='block']~.popup-icon { bottom: 143px; } .ReadPolicy[style*='block']~footer { margin-bottom: 66px; } } </style> </div> </div> </div> </div> </div> <div id="pageSideTips"> <div class="side-tips"> <div class="side-tip"> <div class="icon-download"></div> <div class="hover grid--vertical-align-center"> <a href="https://digitalpower.huawei.com/power-marketing/#/cn/home" target="_blank"> <div class="side-tip-text ml18">营销资料中心</div> </a> <div class="side-tip-line ml12"></div> <a href="https://solar.huawei.com/cn/info/" target="_blank"> <div class="side-tip-text ml12">产品资料中心</div> </a> <div class="icon-download"></div> </div> </div> <div class="side-tip"> <a href="https://community.solar.huawei.com/cn/index.html" target="_blank"> <div class="icon-community"></div> <div class="hover grid--vertical-align-center"> <div class="side-tip-text ml24">社区</div> <div class="icon-community"></div> </div> </a> </div> <div class="side-tip"> <a href="https://digitalpower.huawei.com/robotchat/#/home/index?lang=zh_CN&domain=smartpv&from_title_zh=1117" target="_blank"> <div class="icon-onlineChat"></div> <div class="hover grid--vertical-align-center"> <div class="side-tip-text ml24">在线支持</div> <div class="icon-onlineChat"></div> </div> </a> </div> <div class='side-tip back-top'> <span></span> </div> </div> </div> <!--<script src="/Assets/Solar/v4/js/utils/common.js"></script>--> <script src="/Assets/Solar/v4/js/utils/publicPages.js?ver=202411131551"></script> <!--Solar track code--> <script type="text/javascript"> var utag_data = { site_name: "solar", site_type: "website" }; </script> <script type="text/javascript"> (function (a, b, c, d) { a = ((navigator.languages && navigator.languages.length) ? navigator.languages[0] : (navigator.browserLanguage || navigator.userLanguage || navigator.language || 'en')).toLowerCase() == "zh-cn" ? '//tags.tiqcdn.cn/utag/huawei/solar/prod/utag.js' : '//tags.tiqcdn.com/utag/huawei/solar/prod/utag.js'; b = document; c = 'script'; d = b.createElement(c); d.src = a; d.type = 'text/java' + c; d.async = true; a = b.getElementsByTagName(c)[0]; a.parentNode.insertBefore(d, a); })(); </script> <script src="/-/media/SolarV4/solar-version2/common/data-analysis/analysis-v2.js?ver=202411131551"></script> <script src="/-/media/SolarV4/solar-version2/common/seo/common-seo.js?ver=202411131551"></script> <script src="/Assets/Solar/v4/js/utils/bvideo.js?ver=202411131551"></script> <script src="/Assets/Solar/v4/js/utils/oft.js?ver=202411131551"></script> <script src="/Assets/Solar/v4/js/utils/swiper-new.min.js?ver=202411131551"></script> <!--<script src="/Assets/Solar/v4/js/utils/publicPages.js"></script>--> <script async="" src="/Assets/Solar/v4/js/index.js?ver=202411131551"></script> <script> function insertHtmlByClassName(className, html) { var elements = document.getElementsByClassName(className); for (var i = 0; i < elements.length; i++) { elements[i].innerHTML += html; } } // 使用例子 insertHtmlByClassName('home_dig_panel', '<div class="socialResponsibilityData"><p>截至2023年底,华为光伏逆变器全球累计发货量突破445GW,储能全球累计发货量为20.5GWh。累计发电量在11095亿度,累计减少5.27亿吨二氧化碳排放量,累计等同于植树7.19亿棵树。<br>*换算说明:1. 电量碳排放转换系数,1度电相当于475g二氧化碳(全球平均值),数据来源:国际能源署IEA:《Global Energy & CO₂ Status Report 2018》;2. 树木全生命周期吸收二氧化碳量(等效植数),一棵树一年吸收18.3kg CO₂,每棵树40年寿命,数据来源:北卡罗来纳州立大学网站公开数据。</p></div>'); </script> <style> .socialResponsibilityData { padding: 0 10%; padding-top: 2vw; color: rgba(255, 255, 255, 50%); font-size: 0.72916vw; } @media screen and (max-aspect-ratio: 11 / 10) { .product_feature .product_mark>p { font-size: 2.77777vw; } } </style> </body> </html>