Idioma

Su carrito

eyUtIGNvbW1lbnQgLSV9Y2FjaGVidXN0OjE3NzkzNTk2NTJ7JS0gZW5kY29tbWVudCAtJX0KeyUgaW5jbHVkZSAnZFRfdG9wLXNlYXJjaCcgJX0KeyUgY2FwdHVyZSBwcmltYXJ5TWVudSAlfQp7JS0gaWYgc2VjdGlvbi5zZXR0aW5ncy5waWNrX21lbnUgLSV9CnslLSBhc3NpZ24gbWFpbl9tZW51X2xpbmtsaXN0ID0gc2VjdGlvbi5zZXR0aW5ncy5waWNrX21lbnUtJX0KeyUtIGVsc2UgLSV9CnslLSBhc3NpZ24gbWFpbl9tZW51X2xpbmtsaXN0ID0gJ21haW4tbWVudScgLSV9CnslLSBlbmRpZiAtJX0KCnslLSBpZiBzZWN0aW9uLnNldHRpbmdzLnBpY2tfbWVudSAhPSBibGFuayAtJX0KPHVsIGNsYXNzPSJkdC1zYy1saXN0LWlubGluZSAgZHQtZGVza3RvcC1tZW51IGR0LW5hdiIgZGF0YS1tZW51PSJkdC1tYWluLW1lbnUiPgogIDxsaSBjbGFzcz0iY2xvc2UtbmF2Ij48L2xpPgogIHslLSBmb3IgbGluayBpbiBsaW5rbGlzdHNbbWFpbl9tZW51X2xpbmtsaXN0XS5saW5rcyAtJX0KICB7JS0gYXNzaWduIEZldGNobGV2ZWwgPSB0cnVlIC0lfQogIHslIHJlbmRlciAnbmF2aWdhdGlvbicsIGNsYXNzOiAncHJpbWFyeU1lbnUnLCBsaW5rOiBsaW5rLCBwYWNrOiAnZHQtc2MtbWVudScsIGxvb3A6IGZvcmxvb3AuaW5kZXgsIHNlY3Rpb246IHNlY3Rpb24sIEZldGNobGV2ZWw6IEZldGNobGV2ZWwgJX0gCiAgeyUtIGVuZGZvciAtJX0gICAgICAKPC91bD4KeyUtIHVubGVzcyBzZWN0aW9uLnNldHRpbmdzLnNob3dfc2Vjb25kYXJ5X21lbnUgLSV9CjxkaXYgIGNsYXNzPSJtb2JpbGUtbmF2LWNvbnRhaW5lciBtb2JpbGUtbmF2LW9mZmNhbnZhcy1yaWdodCBkdC1oZWFkZXItbWVudSIgZGF0YS1tZW51PSJkdC1tYWluLW1lbnUiPiAgICAKICA8ZGl2IGNsYXNzPSJtZW51LXRyaWdnZXIiIGRhdGEtbWVudT0iZHQtbWFpbi1tZW51Ij4gIDxpIGNsYXNzPSJtZW51LXRyaWdnZXItaWNvbiI+PC9pPiA8c3Bhbj57eyAnZnQuaGVhZGVyLm1lbnUnIHwgdCB9fTwvc3Bhbj4gIDwvZGl2PiAgICAgICAgICAgICAKPC9kaXY+IAp7JSBlbmR1bmxlc3MgJX0KeyUtIGVuZGlmIC0lfQp7JSAgZW5kY2FwdHVyZSAlfQoKeyUgY2FwdHVyZSBzZWNvbmRhcnlNZW51ICV9CnslLSBpZiBzZWN0aW9uLnNldHRpbmdzLnNob3dfc2Vjb25kYXJ5X21lbnUgLSV9CnslLSBhc3NpZ24gc2Vjb25kYXJ5X21lbnVfbGlua2xpc3QgPSBzZWN0aW9uLnNldHRpbmdzLnNlY29uZGFyeV9tZW51IC0lfQp7JS0gZWxzZSAtJX0KeyUtIGFzc2lnbiBzZWNvbmRhcnlfbWVudV9saW5rbGlzdCA9ICdtYWluLW1lbnUnIC0lfQp7JS0gZW5kaWYgLSV9CnslLSBpZiBzZWN0aW9uLnNldHRpbmdzLnNlY29uZGFyeV9tZW51ICE9IGJsYW5rIC0lfQo8dWwgY2xhc3M9ImR0LXNjLWxpc3QtaW5saW5lICBkdC1kZXNrdG9wLW1lbnUgZHQtbmF2IHNlY29uZGFyeV9fbmF2Ij4KICB7JS0gZm9yIGxpbmsyIGluIGxpbmtsaXN0c1tzZWNvbmRhcnlfbWVudV9saW5rbGlzdF0ubGlua3MgLSV9CiAgeyUtIGFzc2lnbiBGZXRjaGxldmVsID0gdHJ1ZSAtJX0KICB7JSByZW5kZXIgJ25hdmlnYXRpb24nLCBjbGFzczogJ3NlY29uZGFyeU1lbnUnLCBsaW5rOiBsaW5rMiwgcGFjazogJ2R0LXNjLW1lbnUnLCBsb29wOiBmb3Jsb29wLmluZGV4LCBzZWN0aW9uOiBzZWN0aW9uLCBGZXRjaGxldmVsOiBGZXRjaGxldmVsICV9IAogIHslLSBlbmRmb3IgLSV9ICAgICAKPC91bD4KPGRpdiBjbGFzcz0ibW9iaWxlLW5hdi1jb250YWluZXIgbW9iaWxlLW5hdi1vZmZjYW52YXMtcmlnaHQgZHQtaGVhZGVyLW1lbnUiIGRhdGEtbWVudT0iZHQtbWFpbi1tZW51Ij4gICAgCiAgPGRpdiBjbGFzcz0ibWVudS10cmlnZ2VyIiBkYXRhLW1lbnU9ImR0LW1haW4tbWVudSI+ICA8aSBjbGFzcz0ibWVudS10cmlnZ2VyLWljb24iPjwvaT4gPHNwYW4+e3sgJ2Z0LmhlYWRlci5tZW51JyB8IHQgfX08L3NwYW4+ICA8L2Rpdj4gICAgICAgICAgICAgCjwvZGl2PiAKeyUtIGVuZGlmIC0lfQp7JSAgZW5kY2FwdHVyZSAlfQp7JSBjYXB0dXJlIGhlYWRlcl9pY29ucyAlfQp7JSBpZiBzZWN0aW9uLnNldHRpbmdzLnNob3dfYWNjb3VudCBvciAKc2VjdGlvbi5zZXR0aW5ncy5zaG93X2hlYWRlcl9jYXJ0IG9yIApzZWN0aW9uLnNldHRpbmdzLnNob3dfaGVhZGVyX3dpc2hsaXN0IG9yIApzZWN0aW9uLnNldHRpbmdzLnNob3dfaGVhZGVyX2NvbXBhcmUgb3IgCnNlY3Rpb24uc2V0dGluZ3Muc2hvd19oZWFkZXJfY3VycmVuY3kgIG9yIApzZWN0aW9uLnNldHRpbmdzLnNlYXJjaF90eXBlID09ICdzZWFyY2gtaWNvbicgJX0KPGRpdiBjbGFzcz0ic2l0ZS1oZWFkZXJfX2xpbmtzIGR0LXNjLWZsZXgiPgogIHslIGlmIHNob3AuY3VzdG9tZXJfYWNjb3VudHNfZW5hYmxlZCBhbmQgc2VjdGlvbi5zZXR0aW5ncy5zaG93X2FjY291bnQgJX0KICB7JSBpZiBjdXN0b21lciAlfQogIDxhIGhyZWY9Int7IHJvdXRlcy5hY2NvdW50X3VybCB9fSIgY2xhc3M9InNpdGUtaGVhZGVyX19pY29uIHNpdGUtaGVhZGVyX19hY2NvdW50Ij4KICAgIHslIGluY2x1ZGUgJ2ljb24tbG9naW4nICV9CiAgICA8c3BhbiBjbGFzcz0iaWNvbl9fZmFsbGJhY2stdGV4dCI+e3sgJ2xheW91dC5jdXN0b21lci5hY2NvdW50JyB8IHQgfX08L3NwYW4+CiAgPC9hPgogIDxhIGhyZWY9Int7IHJvdXRlcy5hY2NvdW50X2xvZ291dF91cmwgIH19IiBjbGFzcz0ic2l0ZS1oZWFkZXJfX2ljb24gc2l0ZS1oZWFkZXJfX2FjY291bnQiPgogICAgeyUgaW5jbHVkZSAnaWNvbi1sb2dvdXQnICV9CiAgICA8c3BhbiBjbGFzcz0iaWNvbl9fZmFsbGJhY2stdGV4dCI+e3sgJ2xheW91dC5jdXN0b21lci5sb2dfb3V0JyB8IHQgfX08L3NwYW4+CiAgPC9hPgogIHslIGVsc2UgJX0KICA8YSBocmVmPSJ7eyByb3V0ZXMuYWNjb3VudF9sb2dpbl91cmwgfX0iIGNsYXNzPSJzaXRlLWhlYWRlcl9faWNvbiBzaXRlLWhlYWRlcl9fYWNjb3VudCI+CiAgICB7JSBpbmNsdWRlICdpY29uLWxvZ2luJyAlfQogICAgPHNwYW4gY2xhc3M9Imljb25fX2ZhbGxiYWNrLXRleHQiPnt7ICdsYXlvdXQuY3VzdG9tZXIubG9nX2luJyB8IHQgfX08L3NwYW4+CiAgPC9hPgogIDxhIGhyZWY9Int7IHJvdXRlcy5hY2NvdW50X3JlZ2lzdGVyX3VybCAgfX0iIGNsYXNzPSJzaXRlLWhlYWRlcl9faWNvbiBzaXRlLWhlYWRlcl9fYWNjb3VudCI+CiAgICB7JSBpbmNsdWRlICdpY29uLXVzZXInICV9CiAgICA8c3BhbiBjbGFzcz0iaWNvbl9fZmFsbGJhY2stdGV4dCI+e3sgJ2xheW91dC5jdXN0b21lci5jcmVhdGVfYWNjb3VudCcgfCB0IH19PC9zcGFuPgogIDwvYT4KICB7JSBlbmRpZiAlfQogIHslIGVuZGlmICV9CgogIHslIGlmIHNlY3Rpb24uc2V0dGluZ3Muc2hvd19oZWFkZXJfY2FydCAlfQogIDxhIGhyZWY9Int7IHJvdXRlcy5jYXJ0X3VybCB9fSIgeyUgaWYgc2V0dGluZ3MuYWpheF9jYXJ0X21ldGhvZCA9PSAnZHJhd2VyJyAlfWNsYXNzPSJzaXRlLWhlYWRlcl9fY2FydC10b2dnbGUganMtZHJhd2VyLW9wZW4tcmlnaHQgZFRfTWluaUNhcnRNb2RlbEJ0biIgYXJpYS1jb250cm9scz0iQ2FydERyYXdlciIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIHslIGVsc2UgJX1jbGFzcz0ic2l0ZS1oZWFkZXJfX2ljb24gc2l0ZS1oZWFkZXJfX2NhcnQgZHQtc2MtZmxleCJ7JSBlbmRpZiAlfSBpZD0iY2FydC1udW1iZXIiPgogICAgeyUgaW5jbHVkZSAnaWNvbi1jYXJ0JyAlfQogICAgPHNwYW4gY2xhc3M9Imljb25fX2ZhbGxiYWNrLXRleHQiPnt7ICdjYXJ0LmdlbmVyYWwudGl0bGUnIHwgdCB9fTwvc3Bhbj4KICAgIDxkaXYgaWQ9IkNhcnRDb3VudCIgZGF0YS1jYXJ0X2l0ZW1fY291bnQ9Int7IGNhcnQuaXRlbV9jb3VudCB9fSIgZGF0YS1zaG93X2NudF96ZXJvPSJ5ZXMiIGNsYXNzPSJzaXRlLWhlYWRlcl9fY2FydC1jb3VudHslIGlmIGNhcnQuaXRlbV9jb3VudCA9PSAwICV9IHhoaWRleyUgZW5kaWYgJX0iID4KICAgICAgPHNwYW4gY2xhc3M9ImNvdW50IENhcnRDb3VudCI+e3sgY2FydC5pdGVtX2NvdW50IH19PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iY2FydC13b3JkcyI+e3sgJ2NhcnQuZ2VuZXJhbC5pdGVtc19jb3VudCcgfCB0OiBjb3VudDogY2FydC5pdGVtX2NvdW50IH19PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgogIHslIGVuZGlmICV9CgogIHslIGlmIHNlY3Rpb24uc2V0dGluZ3Muc2hvd19oZWFkZXJfd2lzaGxpc3QgJX0KICA8YSBocmVmPSIvcGFnZXMvd2lzaGxpc3QiIGNsYXNzPSJzaXRlLWhlYWRlcl9faWNvbiBzaXRlLWhlYWRlcl9fd2lzaGxpc3QiPgogICAgeyUgaW5jbHVkZSAnaWNvbi1oZWFydCcgJX0gIAogICAgPHNwYW4gY2xhc3M9Imljb25fX2ZhbGxiYWNrLXRleHQiPnt7ICdwcm9kdWN0cy53aXNobGlzdC53aXNobGlzdF9uYW1lJyB8IHQgfX08L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0iY291bnQgZHQtd2lzaGxpc3QtY250Ij48L3NwYW4+CiAgPC9hPgogIHslIGVuZGlmICV9CgogIHslIGlmIHNlY3Rpb24uc2V0dGluZ3Muc2hvd19oZWFkZXJfY29tcGFyZSAlfQogIDxhIGhyZWY9Ii9wYWdlcy9jb21wYXJlIiBjbGFzcz0ic2l0ZS1oZWFkZXJfX2ljb24gc2l0ZS1oZWFkZXJfX2NvbXBhcmUiPgogICAgeyUgaW5jbHVkZSAnaWNvbi1jb21wYXJlJyAlfSAgCiAgICA8c3BhbiBjbGFzcz0iaWNvbl9fZmFsbGJhY2stdGV4dCI+e3sgJ3Byb2R1Y3RzLmNvbXBhcmUuY29tcGFyZV9uYW1lJyB8IHQgfX08L3NwYW4+CiAgPC9hPgogIHslIGVuZGlmICV9CgogIHslIGlmIHNlY3Rpb24uc2V0dGluZ3Muc2VhcmNoX3R5cGUgPT0gJ3NlYXJjaC1pY29uJyAlfQogIDxhIGhyZWY9Ii9zZWFyY2giIGNsYXNzPSJzaXRlLWhlYWRlcl9faWNvbiBzaXRlLWhlYWRlcl9fc2VhcmNoX2ljb24gZFRfVG9wU3RpY2t5U2VhcmNoQnRuIj4KICAgIHslIGluY2x1ZGUgJ2ljb24tc2VhcmNoJyAlfQogICAgPHNwYW4gY2xhc3M9Imljb25fX2ZhbGxiYWNrLXRleHQiPnt7ICdwcm9kdWN0cy5zZWFyY2guc2VhcmNoX25hbWUnIHwgdCB9fTwvc3Bhbj4KICA8L2E+CiAgeyUgZW5kaWYgJX0KCiAgeyUgaWYgc2VjdGlvbi5zZXR0aW5ncy5zaG93X2hlYWRlcl9jdXJyZW5jeSAlfSAgCiAgeyUgZm9ybSAnY3VycmVuY3knJX0KICA8ZGl2IGNsYXNzPSJjdXN0b20tc2VsZWN0Ij4KICAgIDxzZWxlY3QgbmFtZT0iY3VycmVuY3kiPgogICAgICB7JSBmb3IgY3VycmVuY3kgaW4gc2hvcC5lbmFibGVkX2N1cnJlbmNpZXMgJX0KICAgICAgeyUgaWYgY3VycmVuY3kgPT0gY2FydC5jdXJyZW5jeSAlfQogICAgICA8b3B0aW9uIHNlbGVjdGVkPSJ0cnVlIj57e2N1cnJlbmN5Lmlzb19jb2RlfX08L29wdGlvbj4KICAgICAgeyUgZWxzZSAlfQogICAgICA8b3B0aW9uPnt7Y3VycmVuY3kuaXNvX2NvZGV9fTwvb3B0aW9uPgogICAgICB7JSBlbmRpZiAlfQogICAgICB7JSBlbmRmb3IgJX0KICAgIDwvc2VsZWN0PgogIDwvZGl2PgogIHslIGVuZGZvcm0gJX0gICAKICB7JSBlbmRpZiAlfSAgCjwvZGl2Pgp7JSBlbmRpZiAlfQp7JSAgZW5kY2FwdHVyZSAlfQp7JSBjYXB0dXJlIGxvZ28gJX0KeyUgaWYgc2VjdGlvbi5zZXR0aW5ncy5sb2dvICV9CjxkaXYgIGNsYXNzPSJsb2dveyUgdW5sZXNzIHNlY3Rpb24uc2V0dGluZ3MubWVudV9hbGlnbiA9PSAnbG9nb19sZWZ0JyAlfSB0ZXh0LWNlbnRlcnslIGVuZHVubGVzcyAlfSI+CiAgPGEgaHJlZj0ie3sgcm91dGVzLnJvb3RfdXJsIH19Ij4KICAgIDxpbWcgc3JjPSJ7eyBzZWN0aW9uLnNldHRpbmdzLmxvZ28gfCBpbWdfdXJsOiAnbWFzdGVyJyB9fSIgIGFsdD0ie3sgc2VjdGlvbi5zZXR0aW5ncy5sb2dvLmFsdCB9fSIgIHN0eWxlPSJtYXgtd2lkdGg6IHt7IHNlY3Rpb24uc2V0dGluZ3MubG9nb19tYXhfd2lkdGggfX1weCI+CiAgPC9hPiAKPC9kaXY+CnslIGVsc2UgJX0KPGEgaHJlZj0ie3sgcm91dGVzLnJvb3RfdXJsIH19Ij57eyBzaG9wLm5hbWUgfX08L2E+CnslIGVuZGlmICV9IAp7JSBlbmRjYXB0dXJlICV9CjxkaXYgZGF0YS1zZWN0aW9uLWlkPSJ7eyBzZWN0aW9uLmlkIH19IiBkYXRhLXNlY3Rpb24tdHlwZT0iaGVhZGVyLXNlY3Rpb24iIGRhdGEtaGVhZGVyLXNlY3Rpb24+CiAgPGhlYWRlciBpZD0iaGVhZGVyIj4KICAgIHslLSBpZiBzZWN0aW9uLnNldHRpbmdzLnNob3dfYW5ub3VuY2VtZW50IC0lfQogICAgeyUgcmVuZGVyICdhbm5vdW5jZW1lbnQnICV9CiAgICB7JSBlbmRpZiAlfQogICAgeyUgaWYgc2VjdGlvbi5zZXR0aW5ncy5oZWFkZXJfbWFpbCAhPSBibGFuayBvciAgc2VjdGlvbi5zZXR0aW5ncy5oZWFkZXJfcGhvbmUgIT0gYmxhbmsgb3Igc2VjdGlvbi5zZXR0aW5ncy5zaG93X2hlYWRlcl9zb2NpYWwgb3Igc2VjdGlvbi5zZXR0aW5ncy5zZWFyY2hfdHlwZSA9PSAnc2VhcmNoLWJveCcgb3Igc2VjdGlvbi5zZXR0aW5ncy5zaG93X3NlY29uZGFyeV9tZW51ICBvcgogICAgc2VjdGlvbi5zZXR0aW5ncy5zaG93X2FjY291bnQgb3Igc2VjdGlvbi5zZXR0aW5ncy5zaG93X2hlYWRlcl9jYXJ0IG9yICBzZWN0aW9uLnNldHRpbmdzLnNob3dfaGVhZGVyX3dpc2hsaXN0IG9yIHNlY3Rpb24uc2V0dGluZ3Muc2hvd19oZWFkZXJfY29tcGFyZSBvciBzZWN0aW9uLnNldHRpbmdzLnNob3dfaGVhZGVyX2N1cnJlbmN5IC0lfQoKICAgIHslIHVubGVzcyBzZWN0aW9uLnNldHRpbmdzLmRpc2FibGVfdG9wYmFyICV9CiAgICA8c2VjdGlvbiBjbGFzcz0iZHQtc2MtaGVhZGVyLXRvcC1iYXIgeyUgaWYgc2VjdGlvbi5zZXR0aW5ncy5kaXNhYmxlX3RvcGJhcl9tb2JpbGUgJX0gaGlkZS1tb2JpbGUgeyUgZW5kaWYgJX0iPgogICAgICA8ZGl2IGNsYXNzPSJ7JSByZW5kZXIgJ2NvbnRhaW5lci1zZXR0aW5ncycgJX0iPiAKICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuIj4KCiAgICAgICAgICAgIHslIGlmIHNlY3Rpb24uc2V0dGluZ3Muc2hvd19oZWFkZXJfc29jaWFsIG9yIHNlY3Rpb24uc2V0dGluZ3Muc2VhcmNoX3R5cGUgPT0gJ3NlYXJjaC1ib3gnICV9CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImR0LXNjLWxpc3QtaW5saW5lIj4KICAgICAgICAgICAgICB7JSBpZiBzZWN0aW9uLnNldHRpbmdzLnNob3dfaGVhZGVyX3NvY2lhbCAlfQogICAgICAgICAgICAgIHslIGluY2x1ZGUgJ3NvY2lhbC1saW5rcycsIHNvY2lhbF9zdHlsZUNsYXNzOiAnZHQtc2MtbGlzdC1pbmxpbmUnICV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KCiAgICAgICAgICAgICAgeyUgaWYgc2VjdGlvbi5zZXR0aW5ncy5zZWFyY2hfdHlwZSA9PSAnc2VhcmNoLWJveCcgJX0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkdC1zYy1zZWFyY2gtZm9ybSI+CiAgICAgICAgICAgICAgICB7JSByZW5kZXIgJ3NlYXJjaC1iYXInICV9CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIHslIGVuZGlmICV9CgogICAgICAgICAgICB7JS0gaWYgc2VjdGlvbi5zZXR0aW5ncy5zaG93X3NlY29uZGFyeV9tZW51IC0lfQogICAgICAgICAgICB7eyBoZWFkZXJfaWNvbnMgfX0KICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIHslIGVuZHVubGVzcyV9CiAgICB7JSBlbmRpZiAlfQoKICAgIDxzZWN0aW9uIGNsYXNzPSJkdC1zYy1oZWFkZXItbG9nby1zZWMgc3RpY2t5LWhlYWRlciB7JSB1bmxlc3Mgc2VjdGlvbi5zZXR0aW5ncy51c2Vfc3RpY2t5X21vYmlsZSAlfSBzdGlja3lfcmVtb3ZlX29uX21vYmlsZSB7JSBlbmR1bmxlc3MgJX0iIHslIGlmIHNlY3Rpb24uc2V0dGluZ3MudXNlX3N0aWNreV9oZWFkZXIgJX1pZD0ic3RpY2t5LWhlYWRlciJ7JSBlbmRpZiAlfT4KICAgICAgPGRpdiBjbGFzcz0ieyUgcmVuZGVyICdjb250YWluZXItc2V0dGluZ3MnICV9Ij4gCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIHslIHVubGVzcyBzZWN0aW9uLnNldHRpbmdzLnNob3dfc2Vjb25kYXJ5X21lbnUgJX0gICAgICAgICAgCiAgICAgICAgICB7JSBpZiBzZWN0aW9uLnNldHRpbmdzLm1lbnVfYWxpZ24gPT0gJ2xvZ29fdG9wX2NlbnRlcicgJX0gICAgICAgICAgCiAgICAgICAgICB7e2xvZ299fQogICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgIHslIGVuZHVubGVzcyAlfSAgICAgICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28tYWxpZ25tZW50IHslIGlmIHNlY3Rpb24uc2V0dGluZ3Muc2hvd19zZWNvbmRhcnlfbWVudSAlfSBzZWNvbmRhcnktbWVudS1lbmFibGVkeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgICAgIHslIHVubGVzcyBzZWN0aW9uLnNldHRpbmdzLnNob3dfc2Vjb25kYXJ5X21lbnUgJX0KICAgICAgICAgICAgICAgICAgICAgIGR0LXNjLXt7IHNlY3Rpb24uc2V0dGluZ3MubWVudV9hbGlnbiB9fQogICAgICAgICAgICAgICAgICAgICAgeyUgZW5kdW5sZXNzICV9Ij4gICAgICAgICAgICAgCgogICAgICAgICAgICA8bmF2IGlkPSJBY2Nlc3NpYmxlTmF2IiByb2xlPSJuYXZpZ2F0aW9uIiBjbGFzcz0iZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuIiBkYXRhLW1lbnU9ImR0LW1haW4tbWVudSI+ICAKCiAgICAgICAgICAgICAgeyUgaWYgIHNlY3Rpb24uc2V0dGluZ3MubWVudV9hbGlnbiA9PSAnbG9nb19sZWZ0JyAlfQogICAgICAgICAgICAgIHslIHVubGVzcyAgc2VjdGlvbi5zZXR0aW5ncy5zaG93X3NlY29uZGFyeV9tZW51ICV9CiAgICAgICAgICAgICAge3sgbG9nbyB9fQogICAgICAgICAgICAgIHslIGVuZHVubGVzcyAlfSAgICAgICAgIAogICAgICAgICAgICAgIHslIGVuZGlmICV9ICAgICAgICAgCiAgICAgICAgICAgICAge3twcmltYXJ5TWVudX19ICAgICAgICAgICAgICAKICAgICAgICAgICAgICB7JSBpZiBzZWN0aW9uLnNldHRpbmdzLnNob3dfc2Vjb25kYXJ5X21lbnUgb3Igc2VjdGlvbi5zZXR0aW5ncy5tZW51X2FsaWduID09ICdsb2dvX2NlbnRlcicgICV9CiAgICAgICAgICAgICAge3sgbG9nbyB9fQogICAgICAgICAgICAgIHt7c2Vjb25kYXJ5TWVudX19CiAgICAgICAgICAgICAgeyUgZW5kaWYgJX0gICAgICAgICAgICAgIAogICAgICAgICAgICAgIHslLSB1bmxlc3Mgc2VjdGlvbi5zZXR0aW5ncy5zaG93X3NlY29uZGFyeV9tZW51IC0lfQogICAgICAgICAgICAgIHt7IGhlYWRlcl9pY29ucyB9fQogICAgICAgICAgICAgIHslIGVuZHVubGVzcyAlfQoKICAgICAgICAgICAgICB7JSBpZiBzZWN0aW9uLnNldHRpbmdzLmhlYWRlcl9tYWlsICE9IGVtcHR5IG9yIHNlY3Rpb24uc2V0dGluZ3MuaGVhZGVyX3Bob25lICE9IGVtcHR5ICAgJX0KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWluZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHQtc2MtbGlzdC1pbmxpbmUgaGVhZGVyLWNvbnRhY3QiPgogICAgICAgICAgICAgICAgICB7JSBpZiBzZWN0aW9uLnNldHRpbmdzLmhlYWRlcl9tYWlsICE9IGVtcHR5ICV9CiAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJtYWlsdG86e3sgc2VjdGlvbi5zZXR0aW5ncy5oZWFkZXJfbWFpbCB9fSI+IHt7IHNlY3Rpb24uc2V0dGluZ3MuaGVhZGVyX21haWwgfX08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgICAgICAgeyUgaWYgc2VjdGlvbi5zZXR0aW5ncy5oZWFkZXJfcGhvbmUgIT0gZW1wdHkgJX0KICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJoZWFkZXJfcGhvbmUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InRlbDp7eyBzZWN0aW9uLnNldHRpbmdzLmhlYWRlcl9waG9uZSB9fSI+CiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtbW9iaWxlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgPHA+TGzDoW1hbm9zCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNlY3Rpb24uc2V0dGluZ3MuaGVhZGVyX3Bob25lIH19PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvYT4gCiAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICB7JSBlbmRpZiAlfQoKICAgICAgICAgICAgICB7JSByZW5kZXIgJ2Z0LWhlYWRlci1hY3Rpb25zJyAlfQogICAgICAgICAgICA8L25hdj4gICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogIDwvaGVhZGVyPgo8L2Rpdj4KCjxzY3JpcHQ+CiAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7ICAgIAogICAgInVzZSBzdHJpY3QiOwogICAgLy8gRk9SIE1PQklMRSBNRU5VCiAgICBpZigkKHdpbmRvdykud2lkdGgoKSA8IDEyODEpIHsgICAgICAgCiAgICAgIHZhciBwaHJhc2VzID0gW107CiAgICAgICQoJ3VsLnNlY29uZGFyeV9fbmF2JykuZWFjaChmdW5jdGlvbigpewogICAgICAgIHZhciBwaHJhc2UgPSAnJzsgIAogICAgICAgIHBocmFzZSArPSAkKHRoaXMpLmh0bWwoKTsKICAgICAgICAkKHBocmFzZSkuaW5zZXJ0QWZ0ZXIoInVsLmR0LWRlc2t0b3AtbWVudSA+IGxpOmxhc3QtY2hpbGQiKTsKICAgICAgfSk7CgogICAgICAvLyBNb3ZlIE5hdiBhcyBNb2JpbGUgTmF2CiAgICAgICQoIm5hdi5kdC1zYy1mbGV4LXNwYWNlLWJldHdlZW4iKS5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICB2YXIgZCA9ICQodGhpcykuZGF0YSgnbWVudScpLCAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGMgPSAkKHRoaXMpLmZpbmQoJ3VsW2RhdGEtbWVudT0iJyArIGQgKyAnIl0nKS5jbG9uZSgpLnJlbW92ZUNsYXNzKCdkdC1uYXYnKSwKICAgICAgICAgICAgbSA9ICQoJ2JvZHknKS5maW5kKCcubW9iaWxlLW1lbnVbZGF0YS1tZW51PSInICsgZCArICciXScpOyAgICAgICAgCiAgICAgICAgLy8gVG8gUmVtb3ZlIGFuaW1hdGlvbiBjbGFzc2VzCiAgICAgICAgJCgnW2RhdGEtYW5pbWF0aW9uXScsIGMpLmVhY2goZnVuY3Rpb24oaXgsIGVsZSkgewogICAgICAgICAgdmFyICRjbGFzc2VzID0gJChlbGUpLmF0dHIoImNsYXNzIiksCiAgICAgICAgICAgICAgJGFuaW1hdGlvbiA9ICQoZWxlKS5hdHRyKCJkYXRhLWFuaW1hdGlvbiIpOwoKICAgICAgICAgICRjbGFzc2VzID0gJGNsYXNzZXMucmVwbGFjZSgkYW5pbWF0aW9uLCAnJyk7CiAgICAgICAgICAkKGVsZSkuYXR0cigiY2xhc3MiLCAkY2xhc3Nlcyk7CiAgICAgICAgfSk7CgogICAgICAgIGMucHJlcGVuZFRvKG0pOwogICAgICB9KTsKCiAgICAgIG1vYmlsZVRyaWdnZXIoKTsKCiAgICAgIC8vIENsb3NpbmcgTW9iaWxlIE5hdgogICAgICAkKCdsaS5jbG9zZS1uYXYnKS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCkgewogICAgICAgIGNsb3NlTW9iTmF2KCk7CiAgICAgIH0pOwoKICAgICAgJCgnYm9keSA+IC5tb2JpbGUtbWVudS1vdmVybGF5Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICBjbG9zZU1vYk5hdigpOwogICAgICB9KTsKCiAgICAgIC8vIFN1YiBNZW51IGluIE1vYmlsZSBNZW51CiAgICAgICQoJy5tZW51LWl0ZW0taGFzLWNoaWxkcmVuID4gYScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgICAgIGlmICgkKCdib2R5JykuaGFzQ2xhc3MoJ25hdi1pcy12aXNpYmxlJykpIHsKICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICB2YXIgYSA9ICQodGhpcykuY2xvbmUoKTsKICAgICAgICAgICQodGhpcykubmV4dCgnLnN1Yi1tZW51LWJsb2NrJykuZmluZCgnLnNlZS1hbGwnKS5odG1sKGEpOyAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIHZhciBzZWxlY3RlZCA9ICQodGhpcyk7ICAgICAgICAgICAgICAgIAogICAgICAgIGlmIChzZWxlY3RlZC5uZXh0KCdkaXYuc3ViLW1lbnUtYmxvY2snKS5oYXNDbGFzcygnaXMtaGlkZGVuJykpIHsgICAgICAgICAgCiAgICAgICAgICBzZWxlY3RlZC5hZGRDbGFzcygnc2VsZWN0ZWQnKS5uZXh0KCdkaXYuc3ViLW1lbnUtYmxvY2snKS5yZW1vdmVDbGFzcygnaXMtaGlkZGVuJyk7CiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgCiAgICAgICAgICBzZWxlY3RlZC5yZW1vdmVDbGFzcygnc2VsZWN0ZWQnKS5uZXh0KCdkaXYuc3ViLW1lbnUtYmxvY2snKS5hZGRDbGFzcygnaXMtaGlkZGVuJyk7CiAgICAgICAgfQogICAgICB9KTsKCiAgICAgIC8vIEdvIEJhY2sgaW4gTW9iaWxlIE1lbnUKICAgICAgJCgnLmdvLWJhY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAkKHRoaXMpLnBhcmVudCgnZGl2LnN1Yi1tZW51LWJsb2NrJykuYWRkQ2xhc3MoJ2lzLWhpZGRlbicpOwogICAgICB9KTsKCgogICAgfQoKICAgIC8vIEZPUiBERVNLVE9QIE1FTlUKICAgIGlmKCQod2luZG93KS53aWR0aCgpID4gMTI4MCkgewoKICAgICAgalF1ZXJ5KCcubWVudS1pdGVtLWhhcy1jaGlsZHJlbiA+IGEnKS5tb3VzZWVudGVyKGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgc2VsZWN0ZWQgPSAkKHRoaXMpOwogICAgICAgIGlmIChzZWxlY3RlZC5uZXh0KCdkaXYuc3ViLW1lbnUtYmxvY2snKS5oYXNDbGFzcygnaXMtaGlkZGVuJykpIHsKICAgICAgICAgIHNlbGVjdGVkLmFkZENsYXNzKCdzZWxlY3RlZCcpLm5leHQoJ2Rpdi5zdWItbWVudS1ibG9jaycpLnJlbW92ZUNsYXNzKCdpcy1oaWRkZW4nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc2VsZWN0ZWQucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJykubmV4dCgnZGl2LnN1Yi1tZW51LWJsb2NrJykuYWRkQ2xhc3MoJ2lzLWhpZGRlbicpOwogICAgICAgIH0KICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIH0pLm1vdXNlbGVhdmUoZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBzZWxlY3RlZCA9ICQodGhpcyk7CiAgICAgICAgaWYgKHNlbGVjdGVkLm5leHQoJ2Rpdi5zdWItbWVudS1ibG9jaycpLmhhc0NsYXNzKCdpcy1oaWRkZW4nKSkgewogICAgICAgICAgc2VsZWN0ZWQuYWRkQ2xhc3MoJ3NlbGVjdGVkJykubmV4dCgnZGl2LnN1Yi1tZW51LWJsb2NrJykucmVtb3ZlQ2xhc3MoJ2lzLWhpZGRlbicpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzZWxlY3RlZC5yZW1vdmVDbGFzcygnc2VsZWN0ZWQnKS5uZXh0KCdkaXYuc3ViLW1lbnUtYmxvY2snKS5hZGRDbGFzcygnaXMtaGlkZGVuJyk7CiAgICAgICAgfQogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgfSk7CgoKICAgICAgZnVuY3Rpb24gbWVnYU1lbnUoKSB7CgogICAgICAgIGlmKCQoIiNoZWFkZXIgLmNvbnRhaW5lci1mbHVpZCIpLmxlbmd0aCkgewogICAgICAgICAgdmFyIHBhcmVudFJvdyA9ICQoIiNoZWFkZXIgLmNvbnRhaW5lci1mbHVpZCA+IC5yb3ciKTsKICAgICAgICAgIHZhciBwYXJlbnRMZWZ0ID0gcGFyc2VJbnQocGFyZW50Um93LmNzcygibWFyZ2luTGVmdCIpLnJlcGxhY2UoJ3B4JywgJycpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHBhcmVudFJvdyA9ICQoIiNoZWFkZXIgLmNvbnRhaW5lciAucm93Iik7CiAgICAgICAgICB2YXIgcGFyZW50TGVmdCA9IHBhcnNlSW50KHBhcmVudFJvdy5vZmZzZXQoKS5sZWZ0KTsKICAgICAgICB9CiAgICAgICAgdmFyIHBhcmVudFdpZHRoID0gcGFyZW50Um93LndpZHRoKCk7ICAgICAgICAKCiAgICAgICAgJCgiI2hlYWRlciAuZHQtc2MtaGVhZGVyLWxvZ28tc2VjIC5kdC1uYXYgbGk6bm90KC5jbG9zZS1uYXYpIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciB0aGlzSXRlbSA9ICQodGhpcyk7CiAgICAgICAgICBpZih0aGlzSXRlbS5oYXNDbGFzcygnaGFzLW1lZ2EtbWVudScpKSB7CiAgICAgICAgICAgIHZhciB0aGlzSXRlbUxlZnQgPSB0aGlzSXRlbS5maW5kKCdhJykub2Zmc2V0KCkubGVmdDsKICAgICAgICAgICAgdmFyIG1lbnVMZWZ0ID0gcGFyc2VJbnQodGhpc0l0ZW1MZWZ0LXBhcmVudExlZnQpOwogICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXNJdGVtLmZpbmQoJ2EnKS5odG1sKCkrICcgPT0+ICcrcGFyZW50TGVmdCsnIC0gJyt0aGlzSXRlbUxlZnQrJyAtICcrbWVudUxlZnQpOwogICAgICAgICAgICB0aGlzSXRlbS5maW5kKCcuc3ViLW1lbnUtYmxvY2snKS5jc3MoJ3dpZHRoJywgcGFyZW50V2lkdGgpOyAgCiAgICAgICAgICAgIHRoaXNJdGVtLmZpbmQoJy5zdWItbWVudS1ibG9jaycpLmNzcygnbGVmdCcsIC1tZW51TGVmdCk7ICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoIiNoZWFkZXIgLnN0aWNreS1oZWFkZXItYWN0aXZlIC5kdC1uYXYgbGk6bm90KC5jbG9zZS1uYXYpIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciB0aGlzSXRlbSA9ICQodGhpcyk7CiAgICAgICAgICBpZih0aGlzSXRlbS5oYXNDbGFzcygnaGFzLW1lZ2EtbWVudScpKSB7CiAgICAgICAgICAgIHZhciB0aGlzSXRlbUxlZnQgPSB0aGlzSXRlbS5maW5kKCdhJykub2Zmc2V0KCkubGVmdDsKICAgICAgICAgICAgdmFyIG1lbnVMZWZ0ID0gcGFyc2VJbnQodGhpc0l0ZW1MZWZ0LXBhcmVudExlZnQpOwogICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXNJdGVtLmZpbmQoJ2EnKS5odG1sKCkrICcgPT0+ICcrcGFyZW50TGVmdCsnIC0gJyt0aGlzSXRlbUxlZnQrJyAtICcrbWVudUxlZnQpOwogICAgICAgICAgICB0aGlzSXRlbS5maW5kKCcuc3ViLW1lbnUtYmxvY2snKS5jc3MoJ3dpZHRoJywgcGFyZW50V2lkdGgpOyAgCiAgICAgICAgICAgIHRoaXNJdGVtLmZpbmQoJy5zdWItbWVudS1ibG9jaycpLmNzcygnbGVmdCcsIC1tZW51TGVmdCk7ICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ICAgICAgICAgCiAgICAgICAgICAkKHdpbmRvdykudHJpZ2dlcigncmVzaXplJyk7CiAgICAgICAgfSwgODAwKTsKICAgICAgfQoKICAgICAgdmFyIG1lZ2FNZW51UmVzaXplID0gZmFsc2U7ICAgICAgCiAgICAgICQod2luZG93KS5iaW5kKCJyZXNpemUiLCBmdW5jdGlvbigpIHsgIAogICAgICAgIGlmKCFtZWdhTWVudVJlc2l6ZSkgewogICAgICAgICAgbWVnYU1lbnUoKTsgIAogICAgICAgICAgbWVnYU1lbnVSZXNpemUgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIG1lZ2FNZW51KCk7CiAgICB9CgogICAgLy8gQ09NTUFOIEhFQURFUiBTVElDS1kKICAgIHslIGlmIHNlY3Rpb24uc2V0dGluZ3MudXNlX3N0aWNreV9oZWFkZXIgJX0KICAgIGlmKCAkKCIjc3RpY2t5LWhlYWRlciIpLmxlbmd0aCA+IDAgKSB7CiAgICAgIHZhciAkc3RpY2t5X2hlYWRlcl9jbG9uZWQgPSAkKCcjc3RpY2t5LWhlYWRlcicpLmNsb25lKCk7CiAgICAgICRzdGlja3lfaGVhZGVyX2Nsb25lZC5hdHRyKCdpZCcsICdzdGlja3ktaGVhZGVyLWFjdGl2ZScpLnJlbW92ZUNsYXNzKCdkdC1zYy1oZWFkZXItbG9nby1zZWMgc3RpY2t5X3JlbW92ZV9vbl9tb2JpbGUgc3RpY2t5LWhlYWRlcicpLmFkZENsYXNzKCdzdGlja3ktaGVhZGVyLWFjdGl2ZScpOwogICAgICAkKCAkc3RpY2t5X2hlYWRlcl9jbG9uZWQgKS5pbnNlcnRBZnRlciggJCgnLnN0aWNreS1oZWFkZXInKSApOwogICAgICB2YXIgcG9zaXRpb24gPSAkKCcuZHQtc2MtaGVhZGVyLWxvZ28tc2VjLnN0aWNreS1oZWFkZXInKS5wb3NpdGlvbigpLnRvcDsgCiAgICAgICQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKSB7CiAgICAgICAgbW9iaWxlVHJpZ2dlcigpOwogICAgICAgIHZhciBzY3JvbGwgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7CiAgICAgICAgaWYoc2Nyb2xsID4gcG9zaXRpb24pIHsgICAgICAgICAgIAogICAgICAgICAgJCgiI3N0aWNreS1oZWFkZXItYWN0aXZlLnN0aWNreS1oZWFkZXItYWN0aXZlIikuYWRkQ2xhc3MoJ2R0LWhlYWRlci10b3AnKTsKICAgICAgICAgICQoIiNzdGlja3ktaGVhZGVyLWFjdGl2ZS5zdGlja3ktaGVhZGVyLWFjdGl2ZSIpLmFkZENsYXNzKCdkdC1oZWFkZXItc2Nyb2xsJyk7CiAgICAgICAgICAkKCIjc3RpY2t5LWhlYWRlci1hY3RpdmUuc3RpY2t5LWhlYWRlci1hY3RpdmUiKS5zaG93KCk7CiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgCiAgICAgICAgICAkKCIjc3RpY2t5LWhlYWRlci1hY3RpdmUuc3RpY2t5LWhlYWRlci1hY3RpdmUiKS5yZW1vdmVDbGFzcygnZHQtaGVhZGVyLXRvcCcpOwogICAgICAgICAgJCgiI3N0aWNreS1oZWFkZXItYWN0aXZlLnN0aWNreS1oZWFkZXItYWN0aXZlIikucmVtb3ZlQ2xhc3MoJ2R0LWhlYWRlci1zY3JvbGwnKTsgICAgICAgCgogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgICB7JSBlbmRpZiAlfQoKICB9KTsKCiAgLy8gVFJJR0dFUiBNRU5VIEZPUiBCT1RIIENBU0VTCgogIGZ1bmN0aW9uIG1vYmlsZVRyaWdnZXIoKXsKICAgICQoJy5tZW51LXRyaWdnZXInKS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCkgeyAgICAKICAgICAgY29uc29sZS5sb2coImNsaWNrZWQiKTsKICAgICAgLy8gJCgnYm9keScpLmZpbmQoJy5tb2JpbGUtbWVudScpLnRvZ2dsZUNsYXNzKCduYXYtaXMtdmlzaWJsZScpOwogICAgICAkKCdib2R5JykuZmluZCgnLm1vYmlsZS1tZW51JykuYWRkQ2xhc3MoJ25hdi1pcy12aXNpYmxlJyk7CiAgICAgIC8vJCgnYm9keScpLmZpbmQoJy5tb2JpbGUtbWVudS1vdmVybGF5JykudG9nZ2xlQ2xhc3MoJ2lzLXZpc2libGUnKTsKICAgICAgJCgnYm9keScpLmZpbmQoJy5tb2JpbGUtbWVudS1vdmVybGF5JykuYWRkQ2xhc3MoJ2lzLXZpc2libGUnKTsKICAgICAgLy8kKCdib2R5JykudG9nZ2xlQ2xhc3MoJ25hdi1pcy12aXNpYmxlJyk7CiAgICAgICQoJ2JvZHknKS5hZGRDbGFzcygnbmF2LWlzLXZpc2libGUnKTsKICAgICAgJCgidWwuZHQtc2MtbGlzdC1pbmxpbmUuZHQtZGVza3RvcC1tZW51Om50aC1jaGlsZCgyKSIpLnJlbW92ZSgpOyAgICAgICAgIAogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBjbG9zZU1vYk5hdigpIHsKICAgICQoJ2JvZHknKS5yZW1vdmVDbGFzcygnbmF2LWlzLXZpc2libGUnKTsKICAgICQoJy5tb2JpbGUtbWVudS1vdmVybGF5JykucmVtb3ZlQ2xhc3MoJ2lzLXZpc2libGUnKTsKICAgICQoJy5tb2JpbGUtbWVudScpLnJlbW92ZUNsYXNzKCduYXYtaXMtdmlzaWJsZScpOwogICAgJCgnLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gYScpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOwogICAgJCgnLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gZGl2LnN1Yi1tZW51LWJsb2NrJykuYWRkQ2xhc3MoJ2lzLWhpZGRlbicpOwogIH0KCiAgJCh3aW5kb3cpLm9uKCdyZXNpemUnLGZ1bmN0aW9uKCkgewogICAgbW9iaWxlVHJpZ2dlcigpOwogICAgY2xvc2VNb2JOYXYoKTsKICB9KQoKPC9zY3JpcHQ+CgoKPHN0eWxlPgoKICB1bC5kdC1zYy1saXN0LWlubGluZS5oZWFkZXItY29udGFjdCBhIHNwYW46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1EVFByaW1hcnlDb2xvcik7CiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDt9CgogICNoZWFkZXI6YWZ0ZXIge2NvbnRlbnQ6ICcnOwogICAgZGlzcGxheTpibG9jazsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLURUX0luZm9fQ29sb3IpOwogICAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tRFRHdXR0ZXJfV2lkdGgpIC8gMik7CiAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1EVEd1dHRlcl9XaWR0aCkgLyAyKTsKICAgICAgICAgIHdpZHRoOnZhcigtLURUQ29udGFpbmVyKTsKICAgICAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICAgICAgICBtYXJnaW4tbGVmdDoyNTBweDsgYm90dG9tOjBweDt9CgogIHVsLmR0LW5hdiA+IGxpLmFjdGl2ZSA+IGF7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjogYWxsIC42cyBlYXNlLWluLW91dDt9CiAgdWwuZHQtbmF2ID4gbGkgPiBhOmFmdGVyCiAgewogICAgd2lkdGg6MjVweDsKICAgIGhlaWdodDozcHg7CiAgICBjb250ZW50OiAiIjsKICAgIGRpc3BsYXk6YmxvY2s7CiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2UtaW4tb3V0OwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1EVF9CdXR0b25fQkdfQ29sb3IpIDAlLCB2YXIoLS1EVF9CdXR0b25fQkdfQ29sb3IyKSAxMDAlKTsKICAgICAgb3BhY2l0eTowOwogICAgICB9CiAgdWwuZHQtbmF2ID4gbGkuYWN0aXZlID4gYTphZnRlcgogIHsKICAgIHdpZHRoOjI1cHg7CiAgICBoZWlnaHQ6M3B4OwogICAgY29udGVudDogIiI7CiAgICBkaXNwbGF5OmJsb2NrOwogICAgdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlLWluLW91dDsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tRFRfQnV0dG9uX0JHX0NvbG9yKSAwJSwgdmFyKC0tRFRfQnV0dG9uX0JHX0NvbG9yMikgMTAwJSk7CiAgICAgIG9wYWNpdHk6MTsKICAgICAgfQogIHVsLmR0LW5hdiA+IGxpID4gYTpob3ZlcjphZnRlcgogIHsKICAgIHdpZHRoOiAxMDAlOwogICAgLyogICAgIGNvbnRlbnQ6ICIiOyAKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLURUX0J1dHRvbl9CR19Db2xvcikgMCUsIHZhcigtLURUX0J1dHRvbl9CR19Db2xvcjIpIDEwMCUpOwogICAgYm90dG9tOiAwcHg7dHJhbnNpdGlvbjogYWxsIC42cyBlYXNlLWluLW91dDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIG1hcmdpbjogMCAwIDEycHggMTVweDsKICAgIHdpZHRoOjI1cHg7IGhlaWdodDozcHg7ICovCiAgICBvcGFjaXR5OjE7CiAgfQoKICBoZWFkZXJ7cG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA0OyBsZWZ0OiAwOyByaWdodDogMDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDt9CgogIHVsLmR0LXNjLWxpc3QtaW5saW5lLmhlYWRlci1jb250YWN0e3Bvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBsaW5lLWhlaWdodDogMjZweDt9CiAgLyogICB1bC5kdC1zYy1saXN0LWlubGluZS5oZWFkZXItY29udGFjdDpiZWZvcmV7Y29udGVudDonJzsgcG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1pbWFnZTp1cmwoe3sgInBob25laWNvbi5wbmciIHwgYXNzZXRfdXJsIH19KTsgbWFyZ2luLWxlZnQ6LTY4cHg7IHRvcDoxcHg7IGhlaWdodDo2MHB4OyB3aWR0aDo2MHB4OyB9ICovCgogICNoZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tRFRTZWNvbmRhcnlDb2xvcik7fQoKCiAgLyogICBoZWFkZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6NDsgfSAqLwogIGhlYWRlciAuYW5ub3VuY2VtZW50LWJhciB7CiAgICBiYWNrZ3JvdW5kOiB7eyBzZWN0aW9uLnNldHRpbmdzLmJnX2NvbG9yIH19OwogICAgY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MudGV4dF9jb2xvciB9fTsKICAgIGhlaWdodDp7eyBzZWN0aW9uLnNldHRpbmdzLmFubm91bmNlbWVudF9oZWlnaHQgfX1weDsKICB9CgogIGhlYWRlciAuYW5ub3VuY2VtZW50LWJhciBwLCAuYW5ub3VuY2VtZW50LWJhciBhewogICAgY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MudGV4dF9jb2xvciB9fTsKICB9CiAgaGVhZGVyIC5hbm5vdW5jZW1lbnQtYmFyIC5jbG9zZTpob3ZlciwgLmFubm91bmNlbWVudC1iYXIgYTpob3ZlciB7CiAgICBjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy50ZXh0X2hvdmVyX2NvbG9yIH19OwogIH0KCiAgaGVhZGVyIC5hbm5vdW5jZW1lbnQtYmFyIC5jbG9zZXsKICAgIGNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLnRleHRfY29sb3IgfX07CiAgfSAKCiAgaGVhZGVyIC5kdC1zYy1zb2NpYWwtaWNvbnMgYXtjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5zb2NpYWxfaWNvbl9jb2xvciB9fTsgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5zb2NpYWxfaWNvbl9iZyB9fTt9CiAgaGVhZGVyIC5kdC1zYy1zb2NpYWwtaWNvbnMgYTpob3Zlcntjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5zb2NpYWxfaWNvbl9ob3Zlcl9jb2xvciB9fTsgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5zb2NpYWxfaWNvbl9ob3Zlcl9iZyB9fTt9CgoKICBoZWFkZXIgLmhlYWRlci1jb250YWN0IGF7Y29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MuaGVhZGVyX2NvbnRhY3QgfX07IGZvbnQtc2l6ZToxOHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7dGV4dC1hbGlnbjpsZWZ0O30KICBoZWFkZXIgLmhlYWRlci1jb250YWN0IGEgc3Bhbntmb250LXNpemU6dmFyKC0tRFRGb250U2l6ZV9INSk7Zm9udC13ZWlnaHQ6NzAwOyBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tRFRfQnV0dG9uX0JHX0NvbG9yKSAwJSwgdmFyKC0tRFRfQnV0dG9uX0JHX0NvbG9yMikgMTAwJSk7CiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7IHRyYW5zaXRpb246IHZhcigtLURUQmFzZVRyYW5zaXRpb24pOyB9CiAgaGVhZGVyIC5oZWFkZXItY29udGFjdCBhOmhvdmVye2NvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmhlYWRlcl9jb250YWN0X2hvdmVyIH19O30KICBoZWFkZXIgLmhlYWRlci1jb250YWN0IGxpICsgbGkgeyBwYWRkaW5nLWxlZnQ6MHB4OyB9CgogIGhlYWRlciAuc2VsZWN0Mi1jb250YWluZXJ7IG1pbi13aWR0aDogNjBweDt9IAoKICBoZWFkZXIgLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgYiB7IGJvcmRlci10b3AtY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9jb2xvciB9fSAhaW1wb3J0YW50O30KICBoZWFkZXIgLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uOmhvdmVyIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgYnsgYm9yZGVyLXRvcC1jb2xvcjp7eyBzZWN0aW9uLnNldHRpbmdzLmljb25faG92ZXJfY29sb3J9fSFpbXBvcnRhbnQ7IH0KICBoZWFkZXIgLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgYnsgCiAgICBib3JkZXItYm90dG9tLWNvbG9yOnt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9ob3Zlcl9jb2xvcn19IWltcG9ydGFudDsgfQoKICBoZWFkZXIgLnNlbGVjdDItY29udGFpbmVyLS1jbGFzc2ljLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWR7IGNvbG9yOnt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9ob3Zlcl9jb2xvcn19IWltcG9ydGFudDt9CgogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIGEsIAogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIHNlbGVjdCBvcHRpb24sIAogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIHNlbGVjdCwKICBoZWFkZXIgLnNpdGUtaGVhZGVyX19saW5rcyAuc2VsZWN0Mi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24sCiAgaGVhZGVyIC5zaXRlLWhlYWRlcl9fbGlua3MgLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWR7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmljb25fYmcgfX07CiAgICBjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5pY29uX2NvbG9yIH19OwogIH0KCiAgaGVhZGVyIC5zaXRlLWhlYWRlcl9fbGlua3MgYTpob3ZlciwgCiAgaGVhZGVyIC5zaXRlLWhlYWRlcl9fbGlua3Mgc2VsZWN0IG9wdGlvbjpob3ZlciwgCiAgaGVhZGVyIC5zaXRlLWhlYWRlcl9fbGlua3Mgc2VsZWN0OmhvdmVyLAogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIC5zZWxlY3QyLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbjpob3ZlciwKICBoZWFkZXIgLnNpdGUtaGVhZGVyX19saW5rcyAuc2VsZWN0Mi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24gLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZDpob3ZlcnsKICAgIGNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmljb25faG92ZXJfY29sb3IgfX07CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmljb25faG92ZXJfYmcgfX07CiAgfQoKICBoZWFkZXIgLmR0LXNjLXNvY2lhbC1pY29ucyA+IGxpIHsgbWFyZ2luOiAxcHg7IH0KICBoZWFkZXIgLmR0LXNjLXNvY2lhbC1pY29ucyBheyBoZWlnaHQ6IDMwcHg7IG1pbi13aWR0aDozMHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY3Vyc29yOiBwb2ludGVyOyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlci1yYWRpdXM6IHZhcigtLURUUmFkaXVzKTsgfQogIGhlYWRlciBwIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CiAgaGVhZGVyIHN2Z3sgaGVpZ2h0OiB2YXIoLS1EVEZvbnRTaXplQmFzZSk7IH0KICBoZWFkZXIgdWwgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KICBoZWFkZXIgLmR0LXNjLWhlYWRlci10b3AtYmFyIHsgcGFkZGluZzowOyBiYWNrZ3JvdW5kLWNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLnRvcGJhcl9iZyB9fTsgfQogIGhlYWRlciAuZHQtc2MtaGVhZGVyLXRvcC1iYXIgLmR0LXNjLWZsZXgtc3BhY2UtYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CiAgaGVhZGVyIC5kdC1zYy1oZWFkZXItdG9wLWJhciAuZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuID4gKiB7IHBhZGRpbmc6IDJweDthbGlnbi1pdGVtczogZmxleC1zdGFydDtkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9CiAgaGVhZGVyIC5kdC1zYy1oZWFkZXItdG9wLWJhciAuZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuID4gKjpub3QoOm9ubHktY2hpbGQpIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHRleHQtYWxpZ246IGNlbnRlcjsgbWluLXdpZHRoOiAyNSU7IH0KICBoZWFkZXIgLmR0LXNjLWhlYWRlci10b3AtYmFyIC5kdC1zYy1mbGV4LXNwYWNlLWJldHdlZW4gPiAqOm50aC1jaGlsZCgyKTpudGgtbGFzdC1jaGlsZCgyKSwKICBoZWFkZXIgLmR0LXNjLWhlYWRlci10b3AtYmFyIC5kdC1zYy1mbGV4LXNwYWNlLWJldHdlZW4gPiAqOm50aC1jaGlsZCgyKTpudGgtbGFzdC1jaGlsZCgyKSA+ICp7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KICBoZWFkZXIgLmR0LXNjLWhlYWRlci10b3AtYmFyIC5kdC1zYy1mbGV4LXNwYWNlLWJldHdlZW4gPiAqOmxhc3QtY2hpbGQ6bm90KDpvbmx5LWNoaWxkKSwgCiAgaGVhZGVyIC5kdC1zYy1oZWFkZXItdG9wLWJhciAuZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuID4gKjpsYXN0LWNoaWxkOm5vdCg6b25seS1jaGlsZCkgPiAqeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB0ZXh0LWFsaWduOiByaWdodDsgfQogIGhlYWRlciAuZHQtc2MtaGVhZGVyLXRvcC1iYXIgLmR0LXNjLWZsZXgtc3BhY2UtYmV0d2VlbiA+ICo6Zmlyc3QtY2hpbGQ6bm90KDpvbmx5LWNoaWxkKSB7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB0ZXh0LWFsaWduOiBsZWZ0OyB9CgoKICBoZWFkZXIgLmR0LXNjLWhlYWRlci1sb2dvLXNlY3sgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5oZWFkZXJfYmcgfX07fQogIGhlYWRlciAuZHQtc2MtaGVhZGVyLWxvZ28tc2VjLCAuc3RpY2t5LWhlYWRlci1hY3RpdmUgeyBwYWRkaW5nOiAxNXB4IDA7IH0KICBoZWFkZXIgLnNpdGUtaGVhZGVyX19saW5rcyA+ICogeyBtYXJnaW46IDFweDsgfQogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIGF7IGhlaWdodDogMzBweDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHBhZGRpbmc6IDAgNXB4OyBjdXJzb3I6IHBvaW50ZXI7IHBvc2l0aW9uOiByZWxhdGl2ZTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiB2YXIoLS1EVFJhZGl1cyk7IGJvcmRlci1yYWRpdXM6IHZhcigtLURUUmFkaXVzKTsgfQogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIHNlbGVjdHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyBmaWxsPSd3aGl0ZScgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+Iik7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodDsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgY3Vyc29yOiBwb2ludGVyOyBoZWlnaHQ6IDMwcHg7IHBhZGRpbmc6IDAgMjBweCAwIDVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOnZhcigtLURUUmFkaXVzKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1EVFJhZGl1cyk7ICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC1tb3otYXBwZWFyYW5jZTogbm9uZTsgYXBwZWFyYW5jZTogbm9uZTsgfQogIGhlYWRlciAuc2l0ZS1oZWFkZXJfX2xpbmtzIC5jb3VudHsgdG9wOiAtNXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlcjogMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOiA1MCU7IGZvbnQtc2l6ZTogOHB4OyBtaW4td2lkdGg6IDE1cHg7IGhlaWdodDogMTVweDsgbGluZS1oZWlnaHQ6IDEzcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogYmxvY2s7IH0KICBoZWFkZXIgLnNpdGUtaGVhZGVyX19saW5rcyAuc2l0ZS1oZWFkZXJfX2NhcnQtY291bnQgLmNhcnQtd29yZHN7IGRpc3BsYXk6bm9uZTsgfQoKCgogIC8qSGVhZGVyIENhcnQgKi8KICAuanMtZHJhd2VyLW9wZW4gLmlzLW1vdmVkLWJ5LWRyYXdlcjpiZWZvcmUgeyBiYWNrZ3JvdW5kOnJnYigwIDAgMCAvIDUwJSk7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MDsgbGVmdDowOyByaWdodDowOyB0b3A6MDsgdHJhbnNpdGlvbjp2YXIoLS1EVEJhc2VUcmFuc2l0aW9uKTsgei1pbmRleDo0OyB9CiAgLmpzLWRyYXdlci1vcGVuLXJpZ2h0IC5kcmF3ZXItLXJpZ2h0eyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB9CiAgLmpzLWRyYXdlci1jbG9zZS5kdC1zYy1idG57aGVpZ2h0OjMwcHg7d2lkdGg6MzBweDtsaW5lLWhlaWdodDozMHB4O2ZvbnQtd2VpZ2h0OjcwMDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXItcmFkaXVzOjB9CiAgLmpzLWRyYXdlci1vcGVuLXJpZ2h0IC5kcmF3ZXItLXJpZ2h0IC5kdC1zYy1idG57IGxlZnQ6NXB4OyB9CiAgLmFqYXhjYXJ0X19pbm5lciAuYWpheGNhcnRfX3Byb2R1Y3Q6bGFzdC1jaGlsZCAucm93eyBib3JkZXItYm90dG9tLXdpZHRoOiAwOyB9CiAgLmRyYXdlcnsgYmFja2dyb3VuZDp2YXIoLS1EVEJvZHlCR0NvbG9yKTsgZGlzcGxheTogbm9uZTsgaGVpZ2h0OjEwMCU7IG92ZXJmbG93LXk6YXV0bzsgcGFkZGluZzoxNXB4OyBwb3NpdGlvbjpmaXhlZDsgbGVmdDogMTAwJTsgdG9wOjA7IHdpZHRoOjMwMHB4OyB6LWluZGV4OjU7IHRyYW5zaXRpb246dmFyKC0tRFRCYXNlVHJhbnNpdGlvbik7IH0KICAuc2hpZnRlci1lbmFibGVkIC5kcmF3ZXJ7IGRpc3BsYXk6IGJsb2NrOyB9CiAgLmRyYXdlci0tcmlnaHR7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfQoKICAjQ2FydERyYXdlciB7IG92ZXJmbG93OiB2aXNpYmxlOyBwYWRkaW5nOiAwOyB9CiAgI0NhcnREcmF3ZXIgLmRyYXdlcl9faGVhZGVyIHsgYmFja2dyb3VuZDogI2ZmZjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAwIDE1cHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAwOyB3aWR0aDogMTAwJTsgei1pbmRleDogMTsgYm94LXNoYWRvdzogMCAwIDNweCAwIHJnYmEoMCwwLDAsMC4yNSk7IH0KICAjQ2FydERyYXdlciAuZHJhd2VyX19oZWFkZXIgaDQgeyBmb250LXNpemU6IHZhcigtLURURm9udFNpemVfSDUpOyBtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9CiAgI0NhcnREcmF3ZXIgLmRyYXdlcl9faGVhZGVyIC5jbG9zZS1pY29uIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgcGFkZGluZzowOyBib3JkZXItcmFkaXVzOjVweDt9CiAgI0NhcnREcmF3ZXIgLmRyYXdlcl9faGVhZGVyIC5jbG9zZS1pY29uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tRFRfQnV0dG9uX0JHX0hvdmVyX0NvbG9yKTt9CiAgI0NhcnRDb250YWluZXIgeyBoZWlnaHQ6IDEwMCU7IG92ZXJmbG93LXk6IGF1dG87IHBhZGRpbmc6IDY1cHggMTVweCAxNXB4OyB9CgogIC5kcmF3ZXIgLmFqYXhjYXJ0X19wcm9kdWN0e2NsZWFyOmJvdGg7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfQogIC5kcmF3ZXIgLmFqYXhjYXJ0X19wcm9kdWN0IC5yb3d7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLURUQ29sb3JfQm9yZGVyKTsgZGlzcGxheTpmbGV4OyBtYXJnaW4tYm90dG9tOjE1cHg7IHBhZGRpbmctYm90dG9tOjE1cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQogIC5kcmF3ZXIgLmFqYXhjYXJ0X19wcm9kdWN0IC5pdGVtX2ltZyB7IG1heC13aWR0aDoxMDBweDsgbWFyZ2luLWJvdHRvbTogNXB4OyB9CiAgLmRyYXdlciAuYWpheGNhcnRfX3Byb2R1Y3QgLml0ZW1faW1nIGEgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiB0b3A7IH0KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdCAuZGV0YWlscyB7IHBhZGRpbmc6IDAgMTBweDsgd2lkdGg6IDEwMCU7IH0KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdCAuZGV0YWlscyBoNnttYXJnaW46MCAwIDVweDt9CiAgLmRyYXdlciAuYWpheGNhcnRfX3Byb2R1Y3QgLmRldGFpbHMgcHttYXJnaW46MTVweCAwIDVweCAwO30KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdCAuZGV0YWlscyAucmVtb3ZlLWJ0biB7ICBwYWRkaW5nOiAzcHg7IGJvcmRlci1yYWRpdXM6NXB4OyB9CiAgLmRyYXdlciAuYWpheGNhcnRfX3Byb2R1Y3QgLmRldGFpbHMgLnJlbW92ZS1idG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1EVF9CdXR0b25fQkdfSG92ZXJfQ29sb3IpO30KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdCAuZGV0YWlscyAucmVtb3ZlLWJ0bjpiZWZvcmUgeyBoZWlnaHQ6IDEycHg7IHdpZHRoOiAxMnB4OyB9CiAgLmRyYXdlciAuYWpheGNhcnRfX3Byb2R1Y3QgLmRldGFpbHMgcC5vbnNhbGV7Zm9udC1zaXplOiAxMnB4O30KICAuYWpheGNhcnRfX3ByaWNlIHNwYW57Zm9udC1zaXplOjE2cHg7fQogIC5kcmF3ZXIgLmNhcnRfc2F2aW5ncy5vbnNhbGUge2Rpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOiBjZW50ZXI7Z2FwOiAxMHB4O2JvcmRlci1jb2xvcjogdmFyKC0tRFRDb2xvcl9Cb3JkZXIpO30KICAuZHJhd2VyIC5jYXJ0X3NhdmluZ3Mub25zYWxlIHB7IG1hcmdpbjogMTVweCAwO30KCgogIC5kcmF3ZXIgLmFqYXhjYXJ0X19mb290ZXIgLmNhcnRfX2NoZWNrb3V0LmR0LXNjLWJ0bntwYWRkaW5nOiAxMHB4O30KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdCAucHJvZHVjdC1pdGVtLWNhcHRpb24tcXR5eyBtYXJnaW4tdG9wOjhweDsgfQogIC5kcmF3ZXIgLmFqYXhjYXJ0X19wcm9kdWN0IC5wcm9kdWN0LWl0ZW0tY2FwdGlvbi1xdHkgYnV0dG9ueyB3aWR0aDogMzBweDsgaGVpZ2h0OiAzMHB4OyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAzNHB4OyBwYWRkaW5nOiAwcHg7IG1hcmdpbjogMDsgIH0KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdCAucHJvZHVjdC1pdGVtLWNhcHRpb24tcXR5IGJ1dHRvbi5hamF4Y2FydF9fcXR5LS1taW51c3sgYm9yZGVyLXJhZGl1czogY2FsYyh2YXIoLS1EVFJhZGl1cykgLyAyKSAwIDAgY2FsYyh2YXIoLS1EVFJhZGl1cykgLyAyKTsgfQogIC5kcmF3ZXIgLmFqYXhjYXJ0X19wcm9kdWN0IC5wcm9kdWN0LWl0ZW0tY2FwdGlvbi1xdHkgYnV0dG9uLmFqYXhjYXJ0X19xdHktLXBsdXN7IGJvcmRlci1yYWRpdXM6IDAgY2FsYyh2YXIoLS1EVFJhZGl1cykgLyAyKSBjYWxjKHZhcigtLURUUmFkaXVzKSAvIDIpIDA7IH0KICAuZHJhd2VyIC5wcm9kdWN0LWl0ZW0tY2FwdGlvbi1xdHkgaW5wdXQuaW5wdXQtbnVtYmVyeyBoZWlnaHQ6IDMwcHg7IGNvbG9yOnZhcigtLURUQ29sb3JfSGVhZGluZyk7IH0KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdC1tZXRhe2ZvbnQtc2l6ZToxNnB4OyBsaW5lLWhlaWdodDpub3JtYWw7IH0KICAuZHJhd2VyIC5zdWJ0b3RhbHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNXB4IDA7Ym9yZGVyLXdpZHRoOjFweCAwO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6dmFyKC0tRFRDb2xvcl9Cb3JkZXIpfQogIC5kcmF3ZXIgLnN1YnRvdGFsIHB7bWFyZ2luOjB9CiAgLmRyYXdlciAudG90YWwgcHsgZm9udC1zaXplOiAwLjhlbTsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbWFyZ2luOjEwcHggMCAyMHB4fQogIC5kcmF3ZXIgLmFqYXhjYXJ0X19mb290ZXIgeyBtYXJnaW4tYm90dG9tOiAxNXB4OyB9CiAgLmRyYXdlciAuYWpheGNhcnRfX2Zvb3RlciAuZHQtc2MtYnRue3dpZHRoOjEwMCU7IH0KICAuZHJhd2VyIC5hamF4Y2FydF9fcHJvZHVjdDpob3ZlciAucmVtb3ZlLWJ0bnsgb3BhY2l0eTogMTsgfQogIC5yZW1vdmUtYnRuOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1EVFNlY29uZGFyeUNvbG9yKTsgfQogIC5yZW1vdmUtYnRueyBvcGFjaXR5OiAwOyBjdXJzb3I6IHBvaW50ZXI7IHBhZGRpbmc6MnB4IDVweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogNXB4OyBjb2xvcjogdmFyKC0tRFRCb2R5QkdDb2xvcik7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLURUUHJpbWFyeUNvbG9yKTsgdHJhbnNpdGlvbjp2YXIoLS1EVEJhc2VUcmFuc2l0aW9uKTsgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgLyogSGVhZGVyIE1lbnUgKi8KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgogIC5sb2dvLWFsaWdubWVudC5zZWNvbmRhcnktbWVudS1lbmFibGVkICNBY2Nlc3NpYmxlTmF2eyB3aWR0aDogMTAwJTsgfQogIC5sb2dvLWFsaWdubWVudC5zZWNvbmRhcnktbWVudS1lbmFibGVkICNBY2Nlc3NpYmxlTmF2ID4gKnsgZmxleDoxO30KICAubG9nby1hbGlnbm1lbnQuc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCAjQWNjZXNzaWJsZU5hdiA+IC5tb2JpbGUtbmF2LWNvbnRhaW5lciB7IGZsZXg6IDAgMCBhdXRvOyB9CiAgLmxvZ28tYWxpZ25tZW50LnNlY29uZGFyeS1tZW51LWVuYWJsZWQgI0FjY2Vzc2libGVOYXYgPiAubG9nb3sgZmxleC1ncm93OiAxOyBtYXgtd2lkdGg6IHt7IHNlY3Rpb24uc2V0dGluZ3MubG9nb19tYXhfd2lkdGggfX1weDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KICAubG9nby1hbGlnbm1lbnQuc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCAjQWNjZXNzaWJsZU5hdiA+IC5sb2dvOmZpcnN0LWNoaWxkeyB0ZXh0LWFsaWduOiBsZWZ0OyBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7IH0KICAubG9nby1hbGlnbm1lbnQuc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCAjQWNjZXNzaWJsZU5hdiA+IC5sb2dvOmxhc3QtY2hpbGR7dGV4dC1hbGlnbjogcmlnaHQ7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KICAubG9nby1hbGlnbm1lbnQuc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCAjQWNjZXNzaWJsZU5hdiB1bDpmaXJzdC1jaGlsZHtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH0KICAubG9nby1hbGlnbm1lbnQuc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCAjQWNjZXNzaWJsZU5hdiB1bDpsYXN0LWNoaWxkeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9CiAgLmxvZ28tYWxpZ25tZW50LnNlY29uZGFyeS1tZW51LWVuYWJsZWQgI0FjY2Vzc2libGVOYXYgLnNlY29uZGFyeV9fbmF2IHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDt9CgogIGRpdjpub3QoI0FjY2Vzc2libGVOYXYpID4gLmxvZ28udGV4dC1jZW50ZXJ7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1EVENvbG9yX0JvcmRlcik7IHBhZGRpbmctYm90dG9tOiAxNXB4OyBtYXJnaW4tYm90dG9tOiAxNXB4O30KCiAgbmF2IHsgcG9zaXRpb246IHJlbGF0aXZlO30KICAjQWNjZXNzaWJsZU5hdnsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZGlzcGxheTogZmxleDsgfQogIHVsLmR0LW5hdiB7IGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgcGFkZGluZy1yaWdodDowOyBmb250LXNpemU6IDBweDsgbWF4LXdpZHRoOiB2YXIoLS1EVENvbnRhaW5lcik7fQogIHVsLmR0LW5hdiA+ICogeyBtYXJnaW46IDAgMXB4OyB9CiAgdWwuZHQtbmF2ID4gbGkudG9wLWxldmVsLWxpbmsgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdHJhbnNpdGlvbjogdmFyKC0tRFRCYXNlVHJhbnNpdGlvbik7ICB9CgogIC8qIHVsLmR0LW5hdiA+IGxpLnRvcC1sZXZlbC1saW5rOm50aC1sYXN0LWNoaWxkKDIpID4gZGl2LnN1Yi1tZW51LWJsb2NrIC5zdWItbWVudS1ibG9jaywgKi8KICB1bC5kdC1uYXYgPiBsaS50b3AtbGV2ZWwtbGluazpsYXN0LWNoaWxkID4gZGl2LnN1Yi1tZW51LWJsb2NrIC5zdWItbWVudS1ibG9ja3sgcmlnaHQ6IDEwMCU7IGxlZnQ6IGF1dG87IHRyYW5zaXRpb246IHZhcigtLURUQmFzZVRyYW5zaXRpb24pOyAgfQoKICB1bC5kdC1uYXYgPiBsaSA+IGEgeyBkaXNwbGF5OiBibG9jazsgZm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6MTVweDsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXNpemU6IHt7IHNlY3Rpb24uc2V0dGluZ3MuZm9udF9zaXplIH19cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLm1lbnVfY29sb3IgfX07ICB0cmFuc2l0aW9uOiBhbGwgLjZzIGVhc2UtaW4tb3V0OyBib3JkZXItcmFkaXVzOiB2YXIoLS1EVFJhZGl1cyk7IGxpbmUtaGVpZ2h0Om5vcm1hbDt9CiAgdWwuZHQtbmF2ID4gbGkgPiBhOmhvdmVye3RyYW5zaXRpb246IGFsbCAuNnMgZWFzZS1pbi1vdXQ7IH0KCgogIHVsLmR0LW5hdiA+IGxpOmhvdmVyID4gYSwgdWwuZHQtbmF2ID4gbGkuYWN0aXZlID4gYSB7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLURUUHJpbWFyeUNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5tZW51X2FjdGl2ZV9iZyB9fTsgfQogIHVsLmR0LW5hdiA+IGxpOmhvdmVyID4gYSwgdWwuZHQtbmF2IGxpLmFjdGl2ZSA+IGEsCiAgdWwuZHQtbmF2ID4gbGk6aG92ZXIgPiBhLCB1bC5kdC1uYXYgPiBsaS5hY3RpdmUgPiBhLAogIHVsLmR0LW5hdiA+IGxpLmFjdGl2ZSA+IGEubWVnYS1tZW51ID4gc3BhbjphZnRlciB7IGNvbG9yOiB2YXIoLS1EVENvbG9yX0hlYWRpbmcpOyBjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5tZW51X2FjdGl2ZV9jb2xvciB9fTsgdHJhbnNpdGlvbjogdmFyKC0tRFRCYXNlVHJhbnNpdGlvbik7IH0KCiAgdWwuZHQtc2MtbGlzdC1pbmxpbmUgPiBsaSB1bC5zdWItbWVudS1saXN0cyB7IGRpc3BsYXk6YmxvY2s7IGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CiAgdWwuZHQtc2MtbGlzdC1pbmxpbmUgPiBsaSB1bC5zdWItbWVudS1saXN0cyBsaTpvbmx5LWNoaWxkIGF7IG1hcmdpbjogMDsgfQogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzogMDsgfQogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IGEgeyBjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5zdWJtZW51X2NvbG9yIH19OyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogNXB4IDE1cHg7IH0KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpIHVsLnN1Yi1tZW51LWxpc3RzID4gbGkgPiBhOmhvdmVyIHsgY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3Muc3VibWVudV9ob3Zlcl9jb2xvciB9fTt9CgogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGk6bm90KC5oYXMtbWVnYS1tZW51KSB1bC5zdWItbWVudS1saXN0cyB7IHBhZGRpbmc6IDA7IH0KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpOm5vdCguaGFzLW1lZ2EtbWVudSkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IGEgeyBmb250LXNpemU6IDAuODc1ZW07IH0KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpOm5vdCguaGFzLW1lZ2EtbWVudSkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSArIGxpID4gYSB7IC8qIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1EVENvbG9yX0JvcmRlcik7ICovIH0KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpOm5vdCguaGFzLW1lZ2EtbWVudSkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IHVseyBwYWRkaW5nOjE1cHg7IHZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyBtYXJnaW4tdG9wOiAwcHg7IHdpZHRoOiAyMDBweDsgbGVmdDogMTAwJTsgdG9wOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB6LWluZGV4OiAzOyBmb250LXNpemU6IDE2cHg7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UgMHM7IHRyYW5zZm9ybTogcm90YXRlWCg5MGRlZyk7IHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MubWVnYV9tZW51X2JnIH19OyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1EVENvbG9yX0JvcmRlcik7IH0KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpOm5vdCguaGFzLW1lZ2EtbWVudSkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaTpob3ZlciA+IHVseyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBvcGFjaXR5OiAxOyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOyAgfQogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGk6bm90KC5oYXMtbWVnYS1tZW51KSB1bC5zdWItbWVudS1saXN0cyA+IGxpID4gdWwgPiBsaSBheyBkaXNwbGF5OiBibG9jazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLURUQ29sb3JfQm9yZGVyKTsgfQoKICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpLmhhcy1tZWdhLW1lbnUgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IGEuZHQtc2MtbmF2LWxpbmsubWVnYS1tZW51IHtkaXNwbGF5OiBibG9jazsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbWFyZ2luLWJvdHRvbTogMTBweDsgcGFkZGluZy1ib3R0b206IDVweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICB2YXIoLS1EVENvbG9yX0JvcmRlcik7IH0KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpLmhhcy1tZWdhLW1lbnUgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IGg1IHtkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiB2YXIoLS1EVEZvbnRTaXplX0g2KTsgZm9udC13ZWlnaHQ6IDYwMDsgbWFyZ2luLXRvcDogMDsgcGFkZGluZzogMCAwIDEwcHg7IG1hcmdpbi1ib3R0b206MTVweDsgfQoKICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpLmhhcy1tZWdhLW1lbnUgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IGg1LAogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkuaGFzLW1lZ2EtbWVudSB1bC5zdWItbWVudS1saXN0cyA+IGxpID4gaDUgYSB7IGZvbnQtc2l6ZToge3sgc2VjdGlvbi5zZXR0aW5ncy5mb250X3NpemVfc3ViIH19cHg7IH0KCiAgdWwuZHQtc2MtbGlzdC1pbmxpbmUgPiBsaSB1bC5zdWItbWVudS1saXN0cyA+IGxpID4gdWwgYSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiBjYWxjKHt7IHNlY3Rpb24uc2V0dGluZ3MuZm9udF9zaXplX3N1YiB9fXB4IC0gMnB4KTsgcGFkZGluZzogM3B4IDA7IHdpZHRoOiAxMDAlOyB9CgogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IHVsIGEsIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkgdWwuc3ViLW1lbnUtbGlzdHMgPiBsaSA+IGg1IGEgeyBjb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5zdWJtZW51X2NvbG9yIH19O30KICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpIHVsLnN1Yi1tZW51LWxpc3RzID4gbGkgPiB1bCBhOmhvdmVyLCB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpIHVsLnN1Yi1tZW51LWxpc3RzID4gbGkgPiBoNSBhOmhvdmVye2NvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLnN1Ym1lbnVfaG92ZXJfY29sb3IgfX07fQoKCiAgdWwuZHQtc2MtbGlzdC1pbmxpbmUgPiBsaSB1bC5zdWItbWVudS1saXN0cy50aHJlZS1jb2x1bW4gPiBsaTpudGgtY2hpbGQoMykgfiBsaSwKICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpIHVsLnN1Yi1tZW51LWxpc3RzLmRvdWJsZS1xdWFydGVyLWhhbGYgPiBsaTpudGgtY2hpbGQoMykgfiBsaSwKICB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpIHVsLnN1Yi1tZW51LWxpc3RzLmZvdXItY29sdW1uID4gbGk6bnRoLWNoaWxkKDQpIH4gbGksCiAgdWwuZHQtc2MtbGlzdC1pbmxpbmUgPiBsaSB1bC5zdWItbWVudS1saXN0cy5maXZlLWNvbHVtbiA+IGxpOm50aC1jaGlsZCg1KSB+IGxpLAogIHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkgdWwuc3ViLW1lbnUtbGlzdHMuc2l4LWNvbHVtbiA+IGxpOm50aC1jaGlsZCg2KSB+IGxpe2Rpc3BsYXk6bm9uZTsgfQoKCiAgc3Bhbi5jb3VudC5kdC13aXNobGlzdC1jbnQge2Rpc3BsYXk6bm9uZTt9CgogIC5zdWItbWVudS1oZWFkIHsgbWFyZ2luOiAxMHB4IDA7IH0KICAuYmFubmVycy1hcmVhIHsgbWFyZ2luLXRvcDogMjBweDsgcGFkZGluZy10b3A6IDE1cHg7IH0KICAuZHQtc2MtbWVnYV9tZW51LXRpdGxleyBtYXJnaW46IDA7IGxpbmUtaGVpZ2h0OiA0MHB4OyB9CiAgLmR0LXNjLW1lbnUtcHJvZHVjdCAuZHQtc2MtbWVudS1wcm9kdWN0X2l0ZW0taW5mb3sgcGFkZGluZzogNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6IHZhcigtLURUX0J1dHRvbl9CR19Db2xvcik7IGNvbG9yOiB2YXIoLS1EVF9CdXR0b25fVGV4dF9Db2xvcik7IHRyYW5zaXRpb246IHZhcigtLURUQmFzZVRyYW5zaXRpb24pO30KICAuZHQtc2MtbWVudS1wcm9kdWN0IC5kdC1zYy1tZW51LXByb2R1Y3RfaXRlbS1pbmZvOmhvdmVyeyBiYWNrZ3JvdW5kOiB2YXIoLS1EVF9CdXR0b25fQkdfSG92ZXJfQ29sb3IpOyBjb2xvcjogdmFyKC0tRFRfQnV0dG9uX1RleHRfSG92ZXJfQ29sb3IpO30KICAuZHQtc2MtbWVudS1wcm9kdWN0IC5kdC1zYy1tZW51LXByb2R1Y3RfaXRlbS1pbmZvIGF7IGNvbG9yOmN1cnJlbnRjb2xvcjsgfQogIC5kdC1zYy1tZW51LXByb2R1Y3QgLmR0LXNjLW1lbnUtcHJvZHVjdF9pdGVtLWluZm8gLmR0LXNjLXByaWNleyAgbWFyZ2luOjAgNXB4OyB3aGl0ZS1zcGFjZTogcHJlOyB9CiAgLmR0LXNjLW1lbnUtaW1hZ2Utd2l0aC10ZXh0IC5kdC1zYy1tZWdhX21lbnUsIC5kdC1zYy1tZW51LXByb2R1Y3RfX2l0ZW0geyBvdmVyZmxvdzpoaWRkZW47IHBvc2l0aW9uOnJlbGF0aXZlOyB9CiAgLmR0LXNjLW1lbnUtaW1hZ2Utd2l0aC10ZXh0IC5kdC1zYy1kZXRhaWxzeyAvKiBwb3NpdGlvbjogYWJzb2x1dGU7ICovICBib3R0b206IC00MHB4OyB3aWR0aDogMTAwJTsgIC8qIGJhY2tncm91bmQtY29sb3I6dmFyKC0tRFRPdmVybGF5Q29sb3IpOyAqLyAgdHJhbnNpdGlvbjogdmFyKC0tRFRCYXNlVHJhbnNpdGlvbik7IH0KCiAgLmR0LXNjLW1lbnUtaW1hZ2Utd2l0aC10ZXh0OmhvdmVyIC5kdC1zYy1kZXRhaWxzeyBib3R0b206MDsgfQogIC5kdC1zYy1tZW51LWltYWdlLXdpdGgtdGV4dCAuZHQtc2MtYnRuLCAuZHQtc2MtbWVudS1wcm9kdWN0IC5kdC1zYy1tZW51LXByb2R1Y3RfaXRlbS1pbmZveyBsaW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW46IDA7IHBhZGRpbmc6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDA7IH0KICAuZHQtc2MtbWVudS1pbWFnZS13aXRoLXRleHQ6aG92ZXIgLmR0LXNjLWJ0biwgLmR0LXNjLW1lbnUtcHJvZHVjdDpob3ZlciAuZHQtc2MtbWVudS1wcm9kdWN0X2l0ZW0taW5mb3sgb3BhY2l0eToxOyBib3R0b206IDA7IHZpc2liaWxpdHk6dmlzaWJsZTsgfQogIC5zdGlja3ktaGVhZGVyOmJlZm9yZSB7IGJhY2tncm91bmQ6ICNmZmY7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgaGVpZ2h0OiAxMDAlOyBvcGFjaXR5OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUwJTsgdG9wOiAwOyB6LWluZGV4OiAtMTsgLXdlYmtpdC1ib3gtc2hhZG93OiAxcHggMCA1cHggLTFweCB2YXIoLS1EVGJveFNoYWRvd2NvbG9yKTsgYm94LXNoYWRvdzogMXB4IDAgNXB4IC0xcHggdmFyKC0tRFRib3hTaGFkb3djb2xvcik7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IC13ZWJraXQtdHJhbnNpdGlvbjogdmFyKC0tRFRCYXNlVHJhbnNpdGlvbik7IHRyYW5zaXRpb246IHZhcigtLURUQmFzZVRyYW5zaXRpb24pOyB9CiAgLnN0aWNreS1oZWFkZXIuaW5pdC1zdGlja3kgeyBtYXJnaW46IDAgYXV0bzsgbWF4LXdpZHRoOiB2YXIoLS1EVENvbnRhaW5lcik7IHBhZGRpbmctdG9wOiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAwOyByaWdodDogMDsgdG9wOiAwOyB6LWluZGV4OiA5OTsgCiAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlSW5Eb3duOwogICAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247CiAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAuMXM7CiAgICBhbmltYXRpb24tZGVsYXk6IC4xczsKICAgIH0KICAuc3RpY2t5LWhlYWRlci5pbml0LXN0aWNreTpiZWZvcmUgeyBvcGFjaXR5OiAxOyB9CgogIEAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5Eb3duIHsKICAgIDAlIHsgb3BhY2l0eTogMDsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwtMTAwJSwwKTsgfQogICAgMTAwJSB7IG9wYWNpdHk6IDE7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApOyB9CiAgfQoKICBAa2V5ZnJhbWVzIGZhZGVJbkRvd24gewogICAgMCUgeyBvcGFjaXR5OiAwOyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwtMTAwJSwwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLC0xMDAlLDApOyB9CiAgICAxMDAlIHsgb3BhY2l0eTogMTsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsMCwwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7IH0gIAogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIC8qIEhlYWRlciBTdGlja3kgKi8KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKICAjaGVhZGVyIC5zdGlja3ktaGVhZGVyLWFjdGl2ZSB7IGJveC1zaGFkb3c6IDAgMCAzcHggI2YzZjBlZTtiYWNrZ3JvdW5kLWNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmhlYWRlcl9iZyB8IGNvbG9yX21vZGlmeTogJ2FscGhhJywgMC45IH19OyBjbGVhcjogYm90aDsgbWFyZ2luOiBhdXRvOyBwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDA7IHJpZ2h0OiAwOyB0b3A6IDA7ICAgICBvcGFjaXR5OiAwOyAgICAgdmlzaWJpbGl0eTogaGlkZGVuOyAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOyAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7ICAtd2Via2l0LXRyYW5zaXRpb246IC41cyBjdWJpYy1iZXppZXIoLjI1LC44LC4yNSwxKSAwLjA1czsgdHJhbnNpdGlvbjogLjVzIGN1YmljLWJlemllciguMjUsLjgsLjI1LDEpIDAuMDVzO30KICAjaGVhZGVyIC5zdGlja3ktaGVhZGVyLWFjdGl2ZS5kdC1oZWFkZXItdG9wIHsgb3BhY2l0eTogMTsgdmlzaWJpbGl0eTogdmlzaWJsZTsgei1pbmRleDogMTA7ICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CgogIC8qRnVsbCB3aWR0aCBtZW51IC0tIE1lbnUgYm90dG9tIHN0eWxlICovCiAgI2hlYWRlciAuc3RpY2t5LWhlYWRlci1hY3RpdmUubWVudV9ib3R0b20gLm1lbnVfYm90dG9tOmJlZm9yZSwKCiAgI2hlYWRlciAubG9nb190b3BfY2VudGVyLnN0aWNreS1oZWFkZXItYWN0aXZlIC5yb3cgPiBkaXY6bm90KDpsYXN0LWNoaWxkKSwKICAjaGVhZGVyIC5tZW51X2JvdHRvbS5zdGlja3ktaGVhZGVyLWFjdGl2ZSA+IGRpdjpub3QoLm1lbnVfYm90dG9tKXsgZGlzcGxheTogbm9uZTsgfQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAvKiBNb2JpbGUgTWVudSAqLwogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiAgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgeyBjdXJzb3I6IHBvaW50ZXI7IGhlaWdodDogMzBweDsgbGluZS1oZWlnaHQ6IDMwcHg7IHBhZGRpbmc6IDAgNXB4IDAgMTBweDsgY29sb3I6dmFyKC0tRFRCb2R5QkdDb2xvcik7IH0KICAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlciA+IGksCiAgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDE2cHg7IHBhZGRpbmc6IDAgNXB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CiAgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiBzcGFuIHsgdmVydGljYWwtYWxpZ246IHRvcDsgfQoKICAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlciA+IC5tZW51LXRyaWdnZXItaWNvbiB7IGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjsgaGVpZ2h0OiAycHg7IG1hcmdpbi10b3A6IC0ycHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDIzcHg7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTBtcyAzMDBtcyBlYXNlOyB9CiAgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiAubWVudS10cmlnZ2VyLWljb246YmVmb3JlLCAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlciA+IC5tZW51LXRyaWdnZXItaWNvbjphZnRlciB7IGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsgY29udGVudDogIiI7IGhlaWdodDogMnB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB0cmFuc2l0aW9uOiBsZWZ0IDMwMG1zIDM1MG1zIGVhc2UsIHRvcCAzMDBtcyAzNTBtcyBlYXNlLCB0cmFuc2Zvcm0gMzAwbXMgNTBtcyBlYXNlOyB9CiAgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiAubWVudS10cmlnZ2VyLWljb246YmVmb3JlIHsgdG9wOiAtN3B4OyB9CiAgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiAubWVudS10cmlnZ2VyLWljb246YWZ0ZXIgeyB0b3A6IDdweDsgfQoKICAubmF2LWlzLXZpc2libGUgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiAubWVudS10cmlnZ2VyLWljb246YmVmb3JlLCAKICAubmF2LWlzLXZpc2libGUgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiAubWVudS10cmlnZ2VyLWljb246YWZ0ZXIgeyBsZWZ0OiAtNXB4OyAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgMzAwbXMgNTBtcyBlYXNlLCB0b3AgMzAwbXMgNTBtcyBlYXNlLCB0cmFuc2Zvcm0gMzAwbXMgMzUwbXMgZWFzZTsgdHJhbnNpdGlvbjogbGVmdCAzMDBtcyA1MG1zIGVhc2UsIHRvcCAzMDBtcyA1MG1zIGVhc2UsIHRyYW5zZm9ybSAzMDBtcyAzNTBtcyBlYXNlOyB9CgogIC5tb2JpbGUtbWVudSwgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lLCAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkgeyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB0ZXh0LWFsaWduOiBsZWZ0OyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkgPiBhLCAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLnNlZS1hbGwgYSB7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci13aWR0aDogMXB4IDAgMDsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDVweCAxNXB4OyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkuYWN0aXZleyBiYWNrZ3JvdW5kLWNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLm1lbnVfYWN0aXZlX2JnIH19OyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkuYWN0aXZlID4gYXsgY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MubWVudV9hY3RpdmVfY29sb3IgfX07fQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSBsaSA+IGF7IGNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLm1lbnVfY29sb3IgfX07IH0KICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLnNlZS1hbGwgYSwgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIC5nby1iYWNrIGEgeyBjb2xvcjogaW5pdGlhbDsgfSAKICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLnN1Yi1tZW51LWxpc3RzIGxpOmhvdmVyID4gYSwgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIC5zdWItbWVudS1saXN0cyBsaSA+IGE6aG92ZXIgeyBjb2xvcjogdmFyKC0tRFRQcmltYXJ5Q29sb3IpOyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpIGEuZHQtc2MtYnRuOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tRFRTZWNvbmRhcnlDb2xvcik7IGNvbG9yOiB2YXIoLS1EVEJvZHlCR0NvbG9yKTsgfQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpID4gYSwgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpIHVsLnN1Yi1tZW51LWxpc3RzID4gbGkgPiBhLAogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSAuc2VlLWFsbCBhLCAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLmdvLWJhY2sgYSwgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpLmNsb3NlLW5hdiB7IG1pbi1oZWlnaHQ6IDQycHg7IGxpbmUtaGVpZ2h0OiA0MnB4OyBwYWRkaW5nLXRvcDogMDsgcGFkZGluZy1ib3R0b206IDA7IH0KICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgeyBwYWRkaW5nLXRvcDogNDJweDsgfQoKICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkuYWN0aXZlIGEsIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSBsaSBhOm5vdCguZHQtc2MtcHJvZHVjdF9fdGl0bGUpOmhvdmVyeyBjb2xvcjogdmFyKC0tRFRQcmltYXJ5Q29sb3IpOyB9CgogIC5tb2JpbGUtbWVudSwgCiAgLm1vYmlsZS1tZW51ID4gLmR0LXNjLWxpc3QtaW5saW5lLCAKICAubW9iaWxlLW1lbnUgLnN1Yi1tZW51LWJsb2NrIHsgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5tZWdhX21lbnVfYmcgfX07IGhlaWdodDogMTAwJTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBvdmVyZmxvdy15OiB2aXNpYmxlOyBvdmVyZmxvdy14OiBoaWRkZW47IHBvc2l0aW9uOiBmaXhlZDsgcmlnaHQ6IDA7IHRvcDogMDsgd2lkdGg6IDEwMCU7IHotaW5kZXg6IDQ7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7IH0KICAubW9iaWxlLW1lbnUgeyBkaXNwbGF5OiBub25lOyBtYXgtd2lkdGg6IDI2MHB4OyBvcGFjaXR5OiAwOyB2aXNpYmlsaXR5OiBoaWRkZW47IHotaW5kZXg6IDk5OTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOyB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycywgdmlzaWJpbGl0eSAwLjJzLCB0cmFuc2Zvcm0gLjI1czsgfQoKICAubW9iaWxlLW5hdi1vZmZjYW52YXMtcmlnaHQgLm1vYmlsZS1tZW51IHsgcmlnaHQ6IDA7IH0KICAubW9iaWxlLW5hdi1vZmZjYW52YXMtbGVmdCAubW9iaWxlLW1lbnUgeyBsZWZ0OiAwOyByaWdodDogYXV0bzsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB9CgogIC5tb2JpbGUtbWVudS5pcy1oaWRkZW4sIC5tb2JpbGUtbWVudSAuc3ViLW1lbnUtYmxvY2suaXMtaGlkZGVuIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsgfQogIC5tb2JpbGUtbWVudS5uYXYtaXMtdmlzaWJsZSB7IGRpc3BsYXk6IGJsb2NrOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyBhbmltYXRpb24tbmFtZTogZHQtYW5pbWUtc2xpZGVpbi1yaWdodDsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNzVzOyBhbmltYXRpb24tZHVyYXRpb246IDAuNzU7IC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsgICAgIH0KCiAgQGtleWZyYW1lcyBkdC1hbmltZS1zbGlkZWluLXJpZ2h0IHsKICAgIDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwMHB4KTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMDBweCk7IG9wYWNpdHk6IDA7IH0KICAgIDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyBvcGFjaXR5OiAxOyB9CiAgfQoKICAubW9iaWxlLW1lbnUgdWwuc3ViLW1lbnUtYmxvY2ssIC5tb2JpbGUtbWVudSB1bC5zdWItbWVudS1saXN0cywgLm1vYmlsZS1tZW51IHVsIGxpLm1lbnUtaXRlbS1vYmplY3QtZHRfbWVnYV9tZW51cyB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KICAubW9iaWxlLW1lbnUgdWwuc3ViLW1lbnUtYmxvY2ssIC5tb2JpbGUtbWVudSB1bC5zdWItbWVudS1saXN0cyB7IGxlZnQ6IGF1dG8gIWltcG9ydGFudDsgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfQogIC5tb2JpbGUtbWVudSB1bC5zdWItbWVudS1saXN0cyBsaSwgLm1vYmlsZS1tZW51IHVsLnN1Yi1tZW51LWJsb2NrIGxpIHsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxMDAlOyB9CgoKICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLmdvLWJhY2sgYSB7IGhlaWdodDogMTAwJTsgcGFkZGluZzogMDsgfQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSAuZ28tYmFjayBhLCAubW9iaWxlLW1lbnUgbGlbY2xhc3MqPSJoYXMtY2hpbGRyZW4iXT5hIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CiAgLm1vYmlsZS1tZW51IGxpW2NsYXNzKj0iaGFzLWNoaWxkcmVuIl0+YSB7IHBhZGRpbmctcmlnaHQ6IDQwcHg7IH0KICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLmdvLWJhY2sgYSwgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpLmNsb3NlLW5hdiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IHRvcDsgd2lkdGg6IDEwMCU7IH0KCiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpLmNsb3NlLW5hdiB7IGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDVweDsgei1pbmRleDogNTsgdGV4dC1hbGlnbjogY2VudGVyOyB3aWR0aDogNDJweDsgY3Vyc29yOiBwb2ludGVyOyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpLmNsb3NlLW5hdjpiZWZvcmUsIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSBsaS5jbG9zZS1uYXY6YWZ0ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7IGNvbnRlbnQ6ICIiOyBoZWlnaHQ6IDM1JTsgbWFyZ2luOiBhdXRvOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IHRvcDogMDsgd2lkdGg6IDFweDsgfQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSBsaS5jbG9zZS1uYXY6YmVmb3JlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSBsaS5jbG9zZS1uYXY6YWZ0ZXIgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0KICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkuY2xvc2UtbmF2OmhvdmVyOmJlZm9yZSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSBsaS5jbG9zZS1uYXY6aG92ZXI6YWZ0ZXIgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9CgogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSAuZ28tYmFjayBhOmJlZm9yZSwgCiAgLm1vYmlsZS1tZW51IGxpW2NsYXNzKj0iaGFzLWNoaWxkcmVuIl0+YTpiZWZvcmUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IHdpZHRoOiAxNXB4OyAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIC5nby1iYWNrIGE6YmVmb3JlLCAubW9iaWxlLW1lbnUgbGlbY2xhc3MqPSJoYXMtY2hpbGRyZW4iXT5hOmJlZm9yZSB7IGJvcmRlci1zdHlsZTogc29saWQ7IGNvbnRlbnQ6ICIiOyBoZWlnaHQ6IDEwcHg7IHdpZHRoOiAxMHB4OyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC01MCUpOyB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtNTAlKTsgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgdG9wOyB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgdG9wO30gIAogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSAuZ28tYmFjayBhOmJlZm9yZSB7IGJvcmRlci13aWR0aDogMCAwIDFweCAxcHg7IGxlZnQ6IDIycHg7IHRvcDogNTAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KICAubW9iaWxlLW1lbnUgbGlbY2xhc3MqPSJoYXMtY2hpbGRyZW4iXT5hOmJlZm9yZSB7IGJvcmRlci13aWR0aDogMXB4IDFweCAwIDA7IHJpZ2h0OiAyMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KICAubW9iaWxlLW1lbnUgbGlbY2xhc3MqPSJoYXMtY2hpbGRyZW4iXT5hOmhvdmVyOmJlZm9yZSB7IHJpZ2h0OiAxOHB4OyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIC5nby1iYWNrIGE6aG92ZXI6YmVmb3JlIHsgbGVmdDogMThweDsgfQoKICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkgYSwgCiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpIGE6YmVmb3JlLCAKICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkuY2xvc2UtbmF2LCAKICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkuY2xvc2UtbmF2OmJlZm9yZSwgCiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lIGxpLmNsb3NlLW5hdjphZnRlciB7IC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuM3MgbGluZWFyIDBzOyB0cmFuc2l0aW9uOiBhbGwgMC4zcyBsaW5lYXIgMHM7IH0KICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgbGkgYSB7IGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA2KTsgY29sb3I6IHZhcigtLURUU2Vjb25kYXJ5Q29sb3IpOyB9CgogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSAuc2VlLWFsbCBhIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KSAhaW1wb3J0YW50OyAtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMDYpOyBib3gtc2hhZG93OiAwIDFweCAwIDAgcmdiYSgwLCAwLCAwLCAwLjA2KTsgfQogIC5tb2JpbGUtbWVudSB1bC5kdC1zYy1saXN0LWlubGluZSA+IGxpLmhhcy1tZWdhLW1lbnUgdWwuc3ViLW1lbnUtbGlzdHMgdWwgeyBwYWRkaW5nOiAwOyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkuaGFzLW1lZ2EtbWVudSB1bC5zdWItbWVudS1saXN0cyA+IGxpIHsgcGFkZGluZzogMTBweCAxNXB4OyB9CiAgLm1vYmlsZS1tZW51IHVsLmR0LXNjLWxpc3QtaW5saW5lID4gbGkuaGFzLW1lZ2EtbWVudSB1bC5zdWItbWVudS1saXN0cyA+IGxpOmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6IDIwcHg7IH0KICAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgPiBsaS5oYXMtbWVnYS1tZW51IHVsLnN1Yi1tZW51LWxpc3RzID4gbGk6bm90KDpmaXJzdC1jaGlsZCkgPiBoNSB7IG1hcmdpbi10b3A6IDEwcHg7IH0KCiAgLm1vYmlsZS1tZW51IHVsLnN1Yi1tZW51Ojotd2Via2l0LXNjcm9sbGJhciB7IGJhY2tncm91bmQtY29sb3I6ICNmMWYxZjE7IHdpZHRoOiA1cHg7IH0KICAubW9iaWxlLW1lbnUgdWwuc3ViLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLCAubW9iaWxlLW1lbnUgdWwuc3ViLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4IHJnYmEoMCwgMCwgMCwgMC4zKSBpbnNldDsgYm94LXNoYWRvdzogMCAwIDZweCByZ2JhKDAsIDAsIDAsIDAuMykgaW5zZXQ7IH0KICAubW9iaWxlLW1lbnUgdWwuc3ViLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZC1jb2xvcjogI2MxYzFjMTsgYm9yZGVyLXJhZGl1czogNXB4OyB9CgogIC5tb2JpbGUtbWVudS1vdmVybGF5IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOyBjdXJzb3I6IHBvaW50ZXI7IGhlaWdodDogMTAwJTsgdG9wOiAwOyBsZWZ0OiAwOyBvcGFjaXR5OiAwOyBwb3NpdGlvbjogZml4ZWQ7IHZpc2liaWxpdHk6IGhpZGRlbjsgd2lkdGg6IDEwMCU7IHotaW5kZXg6IDk4OyAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgLjJzLCB2aXNpYmlsaXR5IDAuMnM7IHRyYW5zaXRpb246IG9wYWNpdHkgLjJzLCB2aXNpYmlsaXR5IDAuMnM7IH0KICAubW9iaWxlLW1lbnUtb3ZlcmxheS5pcy12aXNpYmxlLCAubW9iaWxlLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLmdvLWJhY2sgYTpob3ZlcjphZnRlciwgCiAgLm1vYmlsZS1tZW51IGxpW2NsYXNzKj0iaGFzLWNoaWxkcmVuIl0+YTpob3ZlcjphZnRlciB7IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7IH0KICAuY29udGFjdC1pbmZvcm1hdGlvbiB7bWFyZ2luLWxlZnQ6NjBweDt9CiAgLmNvbnRhY3QtaW5mb3JtYXRpb24gcHtjb2xvcjogdmFyKC0tRFRfSW5mb19Db2xvcik7ZGlzcGxheTpncmlkO21hcmdpbi1sZWZ0OjEwcHg7fQogIC5jb250YWN0LWluZm9ybWF0aW9uIGkuZmEuZmEtbW9iaWxlIHt3aWR0aDogNTBweDtoZWlnaHQ6IDUwcHg7bGluZS1oZWlnaHQ6IDUwcHg7dGV4dC1hbGlnbjogY2VudGVyO2ZvbnQtc2l6ZTogNDVweDtiYWNrZ3JvdW5kOiB7eyBzZWN0aW9uLnNldHRpbmdzLmljb25fYmcgfX07Ym9yZGVyLXJhZGl1czogNTAlO2NvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmljb25fY29sb3IgfX07dHJhbnNpdGlvbjp2YXIoLS1EVEJhc2VUcmFuc2l0aW9uKTt9CiAgLmNvbnRhY3QtaW5mb3JtYXRpb246aG92ZXIgaS5mYS5mYS1tb2JpbGV7Y29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9ob3Zlcl9jb2xvciB9fTsgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5pY29uX2hvdmVyX2JnIH19O30KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIC8qIFJlc3BvbnNpdmUgKi8KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgogIC8qICAgQG1lZGlhIChtaW4td2lkdGg6MzAwcHgpIGFuZCAobWF4LXdpZHRoOjE2MDBweCkgewogICNoZWFkZXI6YWZ0ZXJ7ZGlzcGxheTpub25lO30KICB9ICovCgogIEBtZWRpYSAobWF4LXdpZHRoOiAxODAwcHgpIHsKICAgICNoZWFkZXI6YWZ0ZXJ7ZGlzcGxheTpub25lO30KICB9CiAgQG1lZGlhIChtYXgtd2lkdGg6IDE1NDBweCkgCiAgeyNoZWFkZXI6YWZ0ZXIKICAgIHt3aWR0aDogdmFyKC0tRFRfTGFwX0NvbnRhaW5lcik7fSAgCiAgfQogIEBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIAogIHsjaGVhZGVyOmFmdGVyCiAgICB7d2lkdGg6IHZhcigtLURUX1RhYl9Db250YWluZXIpO30gIAogIH0KICB7JS0gY29tbWVudCAtJX0gQ2xhdWRlIDIwMjYtMTAtMTY6IG1lbsO6IGNvbXBsZXRvIGRlc2RlIDEwMjQgcHggKGFudGVzIDEyODEpOiBwb3J0w6F0aWxlcyB5IFdpbmRvd3MgY29uIHpvb20gMTI1LTE1MCAlIHZlw61hbiBlbCBtZW7DuiBtw7N2aWwgeyUtIGVuZGNvbW1lbnQgLSV9CiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHsKCiAgICAuZHQtZGVza3RvcC1tZW51IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CiAgICAubW9iaWxlLW5hdi1jb250YWluZXIsIC5kdC1kZXNrdG9wLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLmdvLWJhY2ssIC5kdC1kZXNrdG9wLW1lbnUgdWwuZHQtc2MtbGlzdC1pbmxpbmUgLnNlZS1hbGwgeyBkaXNwbGF5OiBub25lOyB9CiAgICAubG9nby1hbGlnbm1lbnQuZHQtc2MtbG9nb19sZWZ0ICNBY2Nlc3NpYmxlTmF2IC5zaXRlLWhlYWRlcl9fbGlua3MgeyBtYXJnaW4tbGVmdDogYXV0bzsgcGFkZGluZy1sZWZ0OiA1cHg7IH0KCiAgfQoKCiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHsKCiAgICAuZHQtZGVza3RvcC1tZW51LCAubG9nby1hbGlnbm1lbnQuc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCAjQWNjZXNzaWJsZU5hdiAuZHQtZGVza3RvcC1tZW51LnNlY29uZGFyeV9fbmF2IHsgZGlzcGxheTogbm9uZTsgfQogICAgLm1vYmlsZS1uYXYtY29udGFpbmVyIHsgdGV4dC1hbGlnbjogaW5oZXJpdDsgfQogICAgLmxvZ28tYWxpZ25tZW50LmR0LXNjLWxvZ29fbGVmdCAjQWNjZXNzaWJsZU5hdiAubW9iaWxlLW5hdi1jb250YWluZXJ7bWFyZ2luOiB1bnNldCAhaW1wb3J0YW50O30KICAgIC5sb2dvLWFsaWdubWVudC5kdC1zYy1sb2dvX2xlZnQ6bm90KC5zZWNvbmRhcnktbWVudS1lbmFibGVkKSAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlcnttYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDt9CiAgICAuY29udGFjdC1pbmZvcm1hdGlvbnttYXJnaW4tbGVmdDogMjBweCAhaW1wb3J0YW50O30KCiAgfQogIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7CiAgICBoZWFkZXIgLmR0LXNjLWhlYWRlci1sb2dvLXNlYywgLnN0aWNreS1oZWFkZXItYWN0aXZle3BhZGRpbmc6MjBweDt9CiAgICBoZWFkZXIgLmR0LXNjLWhlYWRlci10b3AtYmFyIHtwYWRkaW5nOjA7fX0KICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk5MnB4KSB7CgogICAgaGVhZGVyIC5kdC1zYy1oZWFkZXItdG9wLWJhciAuZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuID4gKjpsYXN0LWNoaWxkOm5vdCg6b25seS1jaGlsZCkgeyBtYXJnaW4tbGVmdDogYXV0bzsgfQogICAgaGVhZGVyIC5kdC1zYy1oZWFkZXItdG9wLWJhciAuZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuID4gKjpmaXJzdC1jaGlsZDpub3QoOm9ubHktY2hpbGQpIHsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9CgogIH0KCgogIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHsKCiAgICBoZWFkZXIgLmR0LXNjLWhlYWRlci10b3AtYmFyIC5kdC1zYy1mbGV4LXNwYWNlLWJldHdlZW4gPiAqIHsgbWFyZ2luOiA1cHggOHB4OyBwYWRkaW5nOiAwOyB9CgogIH0gIAoKCiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7CgogICAgLmxvZ28tYWxpZ25tZW50LmR0LXNjLWxvZ29fbGVmdCAjQWNjZXNzaWJsZU5hdiB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CiAgICAubG9nby1hbGlnbm1lbnQuZHQtc2MtbG9nb19sZWZ0ICNBY2Nlc3NpYmxlTmF2IC5sb2dvIHsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBwYWRkaW5nLXJpZ2h0OiA1cHg7IH0KICAgIC5sb2dvLWFsaWdubWVudC5kdC1zYy1sb2dvX2xlZnQgI0FjY2Vzc2libGVOYXYgLm1vYmlsZS1uYXYtY29udGFpbmVyIHsgcGFkZGluZzogMnB4OyBtYXJnaW46YXV0bzt9CgogICAgLmxvZ28tYWxpZ25tZW50LmR0LXNjLWxvZ29fbGVmdDpub3QoLnNlY29uZGFyeS1tZW51LWVuYWJsZWQpIC5tb2JpbGUtbmF2LWNvbnRhaW5lciAubWVudS10cmlnZ2VyID4gaSwgCiAgICAubG9nby1hbGlnbm1lbnQuZHQtc2MtbG9nb19sZWZ0Om5vdCguc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCkgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiBzcGFuIHsgY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9jb2xvciB9fTsgfQogICAgLmxvZ28tYWxpZ25tZW50LmR0LXNjLWxvZ29fbGVmdDpub3QoLnNlY29uZGFyeS1tZW51LWVuYWJsZWQpIC5tb2JpbGUtbmF2LWNvbnRhaW5lciAubWVudS10cmlnZ2VyIHsgLypiYWNrZ3JvdW5kLWNvbG9yOiB7eyBzZWN0aW9uLnNldHRpbmdzLmljb25fYmcgfX07Ki8gcGFkZGluZzogMDsgbWFyZ2luLXJpZ2h0OjEyMHB4OyAgfSAgICAgICAgCgogICAgdWwuZHQtbmF2ID4gbGkuaGFzLW1lZ2EtbWVudSA+IGRpdi5zdWItbWVudS1ibG9ja3sgd2lkdGg6IHZhcigtLURUQ29udGFpbmVyKTsgfQogICAgdWwuZHQtbmF2IHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CiAgICB1bC5kdC1uYXYgPiBsaS5oYXMtbWVnYS1tZW51ID4gZGl2LnN1Yi1tZW51LWJsb2NrIC5kdC1zYy0tbWFpbi1tZW51LS1tZWdhID4gdWx7IGRpc3BsYXk6IGdyaWQ7IHBhZGRpbmc6IDMwcHg7IH0KICAgIHVsLmR0LW5hdiA+IGxpLmhhcy1tZWdhLW1lbnUgPiBkaXYuc3ViLW1lbnUtYmxvY2sgLmR0LXNjLS1tYWluLW1lbnUtLW1lZ2EgPiB1bCA+IGxpIHsgcGFkZGluZzogMDsgfQogICAgdWwuZHQtbmF2IGxpID4gZGl2LnN1Yi1tZW51LWJsb2NrIHsgCiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCiAgICAgIGxlZnQ6IDA7IAogICAgICB0b3A6IDEwMCU7IAogICAgICB3aWR0aDogMjAwcHg7IAogICAgICB6LWluZGV4IDogMzsKICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwwLDAsLjEpOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAKICAgICAgdHJhbnNpdGlvbjogMC4ycyBhbGwgbGluZWFyOwogICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBkdF9mYWRlSW5Eb3duOyAKICAgICAgYW5pbWF0aW9uLW5hbWU6IGR0X2ZhZGVJbkRvd247IAogICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7IAogICAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOyAKICAgICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1EVENvbG9yX0JvcmRlcik7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjoge3sgc2VjdGlvbi5zZXR0aW5ncy5tZWdhX21lbnVfYmcgfX07CiAgICAgICAgZm9udC1zaXplOiB7eyBzZWN0aW9uLnNldHRpbmdzLmZvbnRfc2l6ZV9zdWIgfX1weDsKICAgICAgICB9CgogICAgdWwuZHQtbmF2IGxpID4gZGl2LnN1Yi1tZW51LWJsb2NrIC5zdWItbWVudS1ibG9ja3sgbGVmdDogMTAwJTsgdG9wOiAwOyB9CiAgICB1bC5kdC1uYXYgPiBsaSA+IGRpdi5zdWItbWVudS1ibG9jay5kdC1zYy0tbWFpbi1tZW51LS1tZWdhIHsgd2lkdGg6dmFyKC0tRFRDb250YWluZXIpOyB9CiAgICB1bC5kdC1uYXYgbGkgPiBkaXYuc3ViLW1lbnUtYmxvY2sgeyBkaXNwbGF5OiBub25lOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgfQogICAgdWwuZHQtbmF2IGxpOmhvdmVyID4gZGl2LnN1Yi1tZW51LWJsb2NrIHsgZGlzcGxheTogYmxvY2s7IG9wYWNpdHk6IDE7IHBvaW50ZXItZXZlbnRzOiBhdXRvOyBib3JkZXItcmFkaXVzOiAwIDAgdmFyKC0tRFRSYWRpdXMgKXZhcigtLURUUmFkaXVzKTsgfQogICAgdWwuZHQtbmF2ID4gbGkgPiBhLmRyb3Bkb3duID4gc3BhbnsgbWFyZ2luLWxlZnQ6M3B4OyAgdG9wOiA1MCU7dHJhbnNmb3JtOiAgdHJhbnNsYXRlWSgtNTAlKTsgfQogICAgdWwuZHQtbmF2ID4gbGkgPiBhLmRyb3Bkb3duID4gc3BhbjphZnRlciB7IAogICAgICB3aWR0aDogNXB4OwogICAgICBoZWlnaHQ6IDVweDsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoIDEzNWRlZyApOwogICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7CiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dCAwczsKICAgIH0KICAgIEBrZXlmcmFtZXMgZHRfZmFkZUluRG93biB7CiAgICAgIDAlIHsgb3BhY2l0eTogMDsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsLTE1cHgsMCk7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwtMTVweCwwKTsgfQogICAgICAxMDAlIHsgb3BhY2l0eTogMTsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsMCwwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7IH0KICAgIH0KCiAgICAuc3ViLW1lbnUtaGVhZCB7IGZvbnQtc2l6ZTogMjBweDt9CiAgICAuYmFubmVycy1hcmVhIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLURUQ29sb3JfQm9yZGVyKTsgfQogIH0KCgogIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCkgewoKICAgIGhlYWRlciAuaGVhZGVyLWNvbnRhY3QgYSBzcGFue2ZvbnQtc2l6ZTogMTZweDt9CiAgICAuY29udGFjdC1pbmZvcm1hdGlvbiBpLmZhLmZhLW1vYmlsZXtoZWlnaHQ6NDBweDsgd2lkdGg6NDBweDsgbGluZS1oZWlnaHQ6NDBweDsgZm9udC1zaXplOjMwcHg7fQogICAgI0FjY2Vzc2libGVOYXZ7ZGlzcGxheTpmbGV4O30KICAgIGhlYWRlciAjQWNjZXNzaWJsZU5hdiAubG9nb3ttYXJnaW4tcmlnaHQ6IGF1dG87bWF4LXdpZHRoOiAzNSU7fQogICAgaGVhZGVyIC5kdC1zYy1mbGV4LXNwYWNlLWJldHdlZW4+KjpmaXJzdC1jaGlsZHtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgdGV4dC1hbGlnbjogY2VudGVyO30KICAgIGhlYWRlciAuZHQtc2MtaGVhZGVyLXRvcC1iYXIgLmR0LXNjLWZsZXgtc3BhY2UtYmV0d2VlbiA+ICogeyBkaXNwbGF5OiBmbGV4OyAvKiBmbGV4OiAxIDEgMTAwJSAhaW1wb3J0YW50OyAqLyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyBwYWRkaW5nOiA1cHggOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfQogICAgaGVhZGVyIC5kdC1zYy1oZWFkZXItdG9wLWJhciAuZHQtc2MtZmxleC1zcGFjZS1iZXR3ZWVuID4gOmxhc3QtY2hpbGQ6bm90KDpvbmx5LWNoaWxkKSA+ICogeyBqdXN0aWZ5LWNvbnRlbnQ6IGluaGVyaXQ7IHRleHQtYWxpZ246IGluaGVyaXQ7IH0KICAgIGhlYWRlciAubG9nby1hbGlnbm1lbnQ6bm90KC5zZWNvbmRhcnktbWVudS1lbmFibGVkKSAjQWNjZXNzaWJsZU5hdiB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgogICAgLyogICAgIGhlYWRlciAjQWNjZXNzaWJsZU5hdiB7IGZsZXgtd3JhcDogd3JhcDsgfSAqLwogICAgaGVhZGVyICNBY2Nlc3NpYmxlTmF2ID4gKiB7IHBhZGRpbmc6IDVweDsgfQogICAgLyogICAgIGhlYWRlciAjQWNjZXNzaWJsZU5hdiAubG9nbyBpbWcgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfSAqLwoKICAgIC5sb2dvLWFsaWdubWVudCAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlciB7IHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OyB9CiAgICAubG9nby1hbGlnbm1lbnQgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgc3BhbiB7IGRpc3BsYXk6IG5vbmU7IH0KICAgIC5sb2dvLWFsaWdubWVudC5zZWNvbmRhcnktbWVudS1lbmFibGVkICNBY2Nlc3NpYmxlTmF2ID4gLmxvZ28geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH0KCiAgICAjaGVhZGVyIC5zdGlja3lfcmVtb3ZlX29uX21vYmlsZSArIC5zdGlja3ktaGVhZGVyLWFjdGl2ZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogICAgLnN1Yi1tZW51LWhlYWQgeyBjb2xvcjpvcmFuZ2U7IH0KICAgIG5hdiB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgogICAgdWwuZHQtbmF2IHsgei1pbmRleDoyOyBwYWRkaW5nOiA1MHB4IDA7IHBvc2l0aW9uOiBmaXhlZDsgcmlnaHQ6IC0zMDBweDsgdG9wOiAwcHg7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogYXV0bzsgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZCwgd2lkdGg7IHRyYW5zaXRpb24tZHVyYXRpb246IDAuNnM7IHRyYW5zaXRpb246IHZhcigtLURUQmFzZVRyYW5zaXRpb24pOyB9CiAgICB1bC5kdC1uYXYgPiAqIHsgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTsgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40czsgb3BhY2l0eTogMDsgfQogICAgdWwuZHQtbmF2ID4gbGk6Zmlyc3QtY2hpbGQgeyBib3JkZXItcmFkaXVzOiAwOyB9CiAgICB1bC5kdC1uYXYgPiBsaSB7IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tRFRDb2xvcl9Cb3JkZXIpOyB9CiAgICB1bC5kdC1uYXYgPiBsaSA+IGEgeyBmb250LXdlaWdodDogNjAwOyB0cmFuc2l0aW9uOiBhbGwgLjZzIGVhc2UtaW4tb3V0OyB9CiAgICB1bC5kdC1uYXYgPiBsaSB1bC5zdWItbWVudS1saXN0cyA+IGxpIGEgeyBmb250LXNpemU6IDE0cHg7IH0KICAgIHVsLmR0LW5hdiA+IGxpOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCiAgICAuc3ViLW1lbnUtaGVhZCB7IGZvbnQtc2l6ZTogMTZweDsgfQogICAgLnN1Yi1tZW51LWJsb2NrIHsgcGFkZGluZzowIDE1cHggMzBweDsgfQoKICAgIC5iYW5uZXJzLWFyZWEgeyBwYWRkaW5nLWJvdHRvbTogMHB4O30KICAgIC5iYW5uZXJzLWFyZWEgZGl2IHsgbWFyZ2luLWJvdHRvbTogMTVweDsgfQogICAgLmJhbm5lcnMtYXJlYSB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1EVENvbG9yX0JvcmRlcik7IH0KCiAgICAubG9nby1hbGlnbm1lbnQ6bm90KC5zZWNvbmRhcnktbWVudS1lbmFibGVkKSAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlciA+IGksIAogICAgLmxvZ28tYWxpZ25tZW50Om5vdCguc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCkgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgPiBzcGFuIHsgY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9jb2xvciB9fTsgfQogICAgLmxvZ28tYWxpZ25tZW50Om5vdCguc2Vjb25kYXJ5LW1lbnUtZW5hYmxlZCkgLm1vYmlsZS1uYXYtY29udGFpbmVyIC5tZW51LXRyaWdnZXIgeyAvKmJhY2tncm91bmQtY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MuaWNvbl9iZyB9fTsqLyBwYWRkaW5nOiAwIDVweCAwIDEwcHg7IGJvcmRlci1yYWRpdXM6IHZhcigtLURUUmFkaXVzKTsgfSAgIAogICAgLmNvbnRhY3QtaW5mb3JtYXRpb257bWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDt9CiAgfQoKICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NTc2cHgpIHsKCiAgICAuY29udGFjdC1pbmZvcm1hdGlvbiBwe2Rpc3BsYXk6bm9uZTt9IAogICAgLmNvbnRhY3QtaW5mb3JtYXRpb24gaS5mYS5mYS1tb2JpbGV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDsgZm9udC1zaXplOjMwcHg7fQogICAgLmNvbnRhY3QtaW5mb3JtYXRpb24gaS5mYS5mYS1tb2JpbGU6aG92ZXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDt9CgogIH0KICBAbWVkaWEgKG1heC13aWR0aDogNTgwcHgpIAogIHsKICAgIC5sb2dvLWFsaWdubWVudC5kdC1zYy1sb2dvX2xlZnQ6bm90KC5zZWNvbmRhcnktbWVudS1lbmFibGVkKSAubW9iaWxlLW5hdi1jb250YWluZXIgLm1lbnUtdHJpZ2dlcgogICAgewogICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgfQogIH0KICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDAwcHgpCiAgewogICAgaGVhZGVyICNBY2Nlc3NpYmxlTmF2IHsgZmxleC13cmFwOiB3cmFwOyB9CiAgICAubG9nbyBpbWd7bWF4LXdpZHRoOjEyMHB4IWltcG9ydGFudDt9CiAgICBoZWFkZXIgLmR0LXNjLWhlYWRlci1sb2dvLXNlYywKICAgIC5zdGlja3ktaGVhZGVyLWFjdGl2ZXtwYWRkaW5nOjEwcHggMHB4O30KICB9CgogIC8qIENsYXVkZSAyMDI2LTExLTEwOiBzZWxlY3RvciBkZSBpZGlvbWEgdmlzaWJsZSBlbiBtZW7DuiBtw7N2aWwuCiAgICAgRWwgdWwuZHQtc2MtbGlzdC1pbmxpbmUgdGllbmUgcG9zaXRpb246Zml4ZWQgeSB6LWluZGV4OjQsIGxvIHF1ZQogICAgIHRhcGFiYSBlbCBmdC1sYW5nLS1tb2JpbGUuIFNlIHJlcG9zaWNpb25hIGNvbW8gYmFycmEgZmlqYSBpbmZlcmlvcgogICAgIGNvbiB6LWluZGV4IHN1cGVyaW9yIHkgc2UgYcOxYWRlIHNjcm9sbCArIHBhZGRpbmcgYWwgbmF2LiAqLwogIC5tb2JpbGUtbWVudSAuZnQtbGFuZy0tbW9iaWxlIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IDI2MHB4OwogICAgei1pbmRleDogMTAwMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHt7IHNlY3Rpb24uc2V0dGluZ3MubWVnYV9tZW51X2JnIH19OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA4KTsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwYWRkaW5nLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCk7CiAgfQogIC5tb2JpbGUtbWVudS5uYXYtaXMtdmlzaWJsZSAuZnQtbGFuZy0tbW9iaWxlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KICAvKiBTY3JvbGwgZW4gZWwgbmF2ICsgZXNwYWNpbyBwYXJhIG5vIHF1ZWRhciBiYWpvIGVsIHNlbGVjdG9yIGRlIGlkaW9tYSAqLwogIC5tb2JpbGUtbWVudS5uYXYtaXMtdmlzaWJsZSA+IC5kdC1zYy1saXN0LWlubGluZSB7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgcGFkZGluZy1ib3R0b206IDEwMHB4ICFpbXBvcnRhbnQ7CiAgfQoKPC9zdHlsZT4gCgp7JSBzY2hlbWEgJX0KewogICJuYW1lIjogIkhlYWRlciIsCiAgIm1heF9ibG9ja3MiOiA1LAogICJzZXR0aW5ncyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAiY2hlY2tib3giLAogICAgICAiaWQiOiAiZnVsbCIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgRnVsbCB3aWR0aCIsCiAgICAgICJkZWZhdWx0IjogZmFsc2UKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogInNwYWNpbmdfYm90aF9lbmRzIiwKICAgICAgImxhYmVsIjogIkVuYWJsZSBSaWdodCAmIExlZnQgU3BhY2luZyAoV29ya3Mgb25seSBvbiBGdWxsd2lkdGgpIiwKICAgICAgImRlZmF1bHQiOiB0cnVlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjaGVja2JveCIsCiAgICAgICJpZCI6ICJ1c2Vfc3RpY2t5X2hlYWRlciIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgc3RpY2t5IGhlYWRlciIsCiAgICAgICJkZWZhdWx0IjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY2hlY2tib3giLAogICAgICAiaWQiOiAidXNlX3N0aWNreV9tb2JpbGUiLAogICAgICAibGFiZWwiOiAiRW5hYmxlIG1vYmlsZSBzdGlja3kgIiwKICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgImNvbnRlbnQiOiAiQW5ub3VuY2VtZW50IGJhciIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogInNob3dfYW5ub3VuY2VtZW50IiwKICAgICAgImxhYmVsIjogIkVuYWJsZSBhbm5vdW5jZW1lbnQiLAogICAgICAiZGVmYXVsdCI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogImhpZGVfYW5ub3VuY2VtZW50X21vYmlsZSIsCiAgICAgICJsYWJlbCI6ICJIaWRlIGFubm91bmNlbWVudCBvbiBtb2JpbGUiLAogICAgICAiZGVmYXVsdCI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogImhvbWVfcGFnZV9vbmx5IiwKICAgICAgImxhYmVsIjogIkhvbWUgcGFnZSBvbmx5IiwKICAgICAgImRlZmF1bHQiOiB0cnVlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJiZ19jb2xvciIsCiAgICAgICJsYWJlbCI6ICJCYWNrZ3JvdW5kIiwKICAgICAgImRlZmF1bHQiOiAiI0Q4RjNGNSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbG9yIiwKICAgICAgImlkIjogInRleHRfY29sb3IiLAogICAgICAibGFiZWwiOiAiVGV4dCIsCiAgICAgICJkZWZhdWx0IjogIiMyMDY0NjkiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJ0ZXh0X2hvdmVyX2NvbG9yIiwKICAgICAgImxhYmVsIjogIkhvdmVyIFRleHQiLAogICAgICAiZGVmYXVsdCI6ICIjMUExQTFBIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAicmljaHRleHQiLAogICAgICAiaWQiOiAidGV4dCIsCiAgICAgICJsYWJlbCI6ICJBbm5vdW5jZW1lbnQgdGV4dCIsCiAgICAgICJkZWZhdWx0IjogIjxwPkFubm91bmNlIHNvbWV0aGluZyA8YSBocmVmPScjJz5oZXJlPC9hPjwvcD4iCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJyYW5nZSIsCiAgICAgICJpZCI6ICJhbm5vdW5jZW1lbnRfaGVpZ2h0IiwKICAgICAgImxhYmVsIjogIkFubm91bmNlbWVudCBIZWlnaHQiLAogICAgICAibWluIjogMjAsCiAgICAgICJtYXgiOiAxMDAsCiAgICAgICJzdGVwIjogMSwKICAgICAgInVuaXQiOiAicHgiLAogICAgICAiZGVmYXVsdCI6IDQwCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAiY29udGVudCI6ICJUb3BiYXIiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJ0b3BiYXJfYmciLAogICAgICAibGFiZWwiOiAiVG9wYmFyIEJhY2tncm91bmQiLAogICAgICAiZGVmYXVsdCI6ICIjMjA2NDY5IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY2hlY2tib3giLAogICAgICAiaWQiOiAiZGlzYWJsZV90b3BiYXIiLAogICAgICAibGFiZWwiOiAiRGlzYWJsZSB0b3BiYXIiLAogICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjaGVja2JveCIsCiAgICAgICJpZCI6ICJkaXNhYmxlX3RvcGJhcl9tb2JpbGUiLAogICAgICAibGFiZWwiOiAiRGlzYWJsZSB0b3BiYXIgaW4gbW9iaWxlIiwKICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgImNvbnRlbnQiOiAiSGVhZGVyIENvbnRhY3QiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgImlkIjogImhlYWRlcl9tYWlsIiwKICAgICAgImxhYmVsIjogIk1haWwiLAogICAgICAiZGVmYXVsdCI6ICJzYW1wbGVAc29tZWRvbWFpbi5jb20iCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgImlkIjogImhlYWRlcl9waG9uZSIsCiAgICAgICJsYWJlbCI6ICJQaG9uZSBObyIsCiAgICAgICJkZWZhdWx0IjogIjk4NzY1NDMyMTAiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJoZWFkZXJfY29udGFjdCIsCiAgICAgICJsYWJlbCI6ICJDb250YWN0IC0gQ29sb3IiLAogICAgICAiZGVmYXVsdCI6ICIjZmZmIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY29sb3IiLAogICAgICAiaWQiOiAiaGVhZGVyX2NvbnRhY3RfaG92ZXIiLAogICAgICAibGFiZWwiOiAiQ29udGFjdCAtIEhvdmVyIiwKICAgICAgImRlZmF1bHQiOiAiI0Q4RjNGNSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIkxvZ28iCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAiaWQiOiAibG9nbyIsCiAgICAgICJsYWJlbCI6ICJMb2dvIGltYWdlIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAicmFuZ2UiLAogICAgICAiaWQiOiAibG9nb19tYXhfd2lkdGgiLAogICAgICAibGFiZWwiOiAiQ3VzdG9tIGxvZ28gd2lkdGgiLAogICAgICAibWluIjogMTAwLAogICAgICAibWF4IjogNDAwLAogICAgICAic3RlcCI6IDUsCiAgICAgICJ1bml0IjogInB4IiwKICAgICAgImRlZmF1bHQiOiAxMDAKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInNlbGVjdCIsCiAgICAgICJpZCI6ICJtZW51X2FsaWduIiwKICAgICAgImxhYmVsIjogIkxvZ28gQWxpZ25tZW50IiwKICAgICAgImRlZmF1bHQiOiAibG9nb19sZWZ0IiwKICAgICAgImluZm8iOiAiT25seSBmb3IgcHJpbWFyeSBtZW51IiwKICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgewogICAgICAgICAgInZhbHVlIjogImxvZ29fbGVmdCIsCiAgICAgICAgICAibGFiZWwiOiAiTG9nbyBsZWZ0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInZhbHVlIjogImxvZ29fdG9wX2NlbnRlciIsCiAgICAgICAgICAibGFiZWwiOiAiTG9nbyB0b3AgY2VudGVyIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInZhbHVlIjogImxvZ29fY2VudGVyIiwKICAgICAgICAgICJsYWJlbCI6ICJMb2dvIGNlbnRlciIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogInNob3dfaGVhZGVyX3NvY2lhbCIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgc29jaWFsIGxpbmtzIiwKICAgICAgImRlZmF1bHQiOiB0cnVlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJyYWRpbyIsCiAgICAgICJpZCI6ICJzZWFyY2hfdHlwZSIsCiAgICAgICJsYWJlbCI6ICJTZWFyY2ggdHlwZSIsCiAgICAgICJkZWZhdWx0IjogInNlYXJjaC1pY29uIiwKICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgewogICAgICAgICAgInZhbHVlIjogInNlYXJjaC1ib3giLAogICAgICAgICAgImxhYmVsIjogIlNlYXJjaCBib3giCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidmFsdWUiOiAic2VhcmNoLWljb24iLAogICAgICAgICAgImxhYmVsIjogIkljb24iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidmFsdWUiOiAibm9uZSIsCiAgICAgICAgICAibGFiZWwiOiAiTm9uZSIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogImVuYWJsZV9wcmVkaWN0aXZlX3NlYXJjaCIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgcHJlZGljdGl2ZSBzZWFyY2giLAogICAgICAiZGVmYXVsdCI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIlNvY2lhbCBJY29uIENvbG9ycyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbG9yIiwKICAgICAgImlkIjogInNvY2lhbF9pY29uX2NvbG9yIiwKICAgICAgImxhYmVsIjogIlNvY2lhbCBJY29uIC0gY29sb3IiLAogICAgICAiZGVmYXVsdCI6ICIjMjA2NDY5IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY29sb3IiLAogICAgICAiaWQiOiAic29jaWFsX2ljb25faG92ZXJfY29sb3IiLAogICAgICAibGFiZWwiOiAiU29jaWFsIEljb24gLSBIb3ZlciIsCiAgICAgICJkZWZhdWx0IjogIiNmZmZmZmYiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJzb2NpYWxfaWNvbl9iZyIsCiAgICAgICJsYWJlbCI6ICJTb2NpYWwgSWNvbiAtIEJHIiwKICAgICAgImRlZmF1bHQiOiAiI2ZmZmZmZiIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbG9yIiwKICAgICAgImlkIjogInNvY2lhbF9pY29uX2hvdmVyX2JnIiwKICAgICAgImxhYmVsIjogIlNvY2lhbCBJY29uIC0gSG92ZXIgQkciLAogICAgICAiZGVmYXVsdCI6ICIjNzBCREMyIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgImNvbnRlbnQiOiAiSGVhZGVyIEljb24ncyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogInNob3dfYWNjb3VudCIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgQWNjb3VudCBMaW5rIiwKICAgICAgImRlZmF1bHQiOiB0cnVlLAogICAgICAiaW5mbyI6ICJDdXN0b21lciBhY2NvdW50cyBtdXN0IGJlIGVuYWJsZWQgaW4geW91ciBTaG9waWZ5IGNoZWNrb3V0IHNldHRpbmdzIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY2hlY2tib3giLAogICAgICAiaWQiOiAic2hvd19oZWFkZXJfY2FydCIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgQ2FydCIsCiAgICAgICJkZWZhdWx0IjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY2hlY2tib3giLAogICAgICAiaWQiOiAic2hvd19oZWFkZXJfd2lzaGxpc3QiLAogICAgICAibGFiZWwiOiAiRW5hYmxlIHdpc2hsaXN0IiwKICAgICAgImRlZmF1bHQiOiB0cnVlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjaGVja2JveCIsCiAgICAgICJpZCI6ICJzaG93X2hlYWRlcl9jb21wYXJlIiwKICAgICAgImxhYmVsIjogIkVuYWJsZSBDb21wYXJlIEl0IiwKICAgICAgImRlZmF1bHQiOiB0cnVlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAiY29udGVudCI6ICJIZWFkZXIgSWNvbiBDb2xvcnMiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJpY29uX2NvbG9yIiwKICAgICAgImxhYmVsIjogIkljb24gY29sb3IiLAogICAgICAiZGVmYXVsdCI6ICIjZmZmIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY29sb3IiLAogICAgICAiaWQiOiAiaWNvbl9ob3Zlcl9jb2xvciIsCiAgICAgICJsYWJlbCI6ICJJY29uIEhvdmVyIGNvbG9yIiwKICAgICAgImRlZmF1bHQiOiAiI2ZmZiIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbG9yIiwKICAgICAgImlkIjogImljb25fYmciLAogICAgICAibGFiZWwiOiAiSWNvbiBCRyIsCiAgICAgICJkZWZhdWx0IjogIiMyMDY0NjkiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJpY29uX2hvdmVyX2JnIiwKICAgICAgImxhYmVsIjogIkljb24gSG92ZXIgQkciLAogICAgICAiZGVmYXVsdCI6ICIjNzBCREMyIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgImNvbnRlbnQiOiAiTWVudSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogImVuYWJsZV9tZW51X2luZGljYXRvciIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgTWVudSBJbmRpY2F0b3IiLAogICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJsaW5rX2xpc3QiLAogICAgICAiaWQiOiAicGlja19tZW51IiwKICAgICAgImxhYmVsIjogIlByaW1hcnkgTWVudSIsCiAgICAgICJkZWZhdWx0IjogIm1haW4tbWVudSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgImlkIjogInNob3dfc2Vjb25kYXJ5X21lbnUiLAogICAgICAibGFiZWwiOiAiRW5hYmxlIHNlY29uZGF5IG1lbnUiLAogICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJsaW5rX2xpc3QiLAogICAgICAiaWQiOiAic2Vjb25kYXJ5X21lbnUiLAogICAgICAibGFiZWwiOiAiU2Vjb25kYXJ5IE1lbnUiLAogICAgICAiZGVmYXVsdCI6ICJtYWluLW1lbnUiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAiY29udGVudCI6ICJNZW51IENvbG9ycyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbG9yIiwKICAgICAgImlkIjogImhlYWRlcl9iZyIsCiAgICAgICJsYWJlbCI6ICJIZWFkZXIgQmFja2dyb3VuZCIsCiAgICAgICJkZWZhdWx0IjogIiNEOEYzRjUiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJtZW51X2NvbG9yIiwKICAgICAgImxhYmVsIjogIk1lbnUgQ29sb3IiLAogICAgICAiZGVmYXVsdCI6ICIjMUExQTFBIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY29sb3IiLAogICAgICAiaWQiOiAibWVudV9hY3RpdmVfY29sb3IiLAogICAgICAibGFiZWwiOiAiTWVudSBBY3RpdmUgQ29sb3IiLAogICAgICAiZGVmYXVsdCI6ICIjMjA2NDY5IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY29sb3IiLAogICAgICAiaWQiOiAibWVudV9hY3RpdmVfYmciLAogICAgICAibGFiZWwiOiAiTWVudSBBY3RpdmUgQkciLAogICAgICAiZGVmYXVsdCI6ICIjRDhGM0Y1IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiY29sb3IiLAogICAgICAiaWQiOiAibWVnYV9tZW51X2JnIiwKICAgICAgImxhYmVsIjogIk1lZ2EgTWVudSBCRyIsCiAgICAgICJkZWZhdWx0IjogIiNEOEYzRjUiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjb2xvciIsCiAgICAgICJpZCI6ICJzdWJtZW51X2NvbG9yIiwKICAgICAgImxhYmVsIjogIlN1YiBtZW51IGNvbG9yIiwKICAgICAgImRlZmF1bHQiOiAiIzFBMUExQSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImNvbG9yIiwKICAgICAgImlkIjogInN1Ym1lbnVfaG92ZXJfY29sb3IiLAogICAgICAibGFiZWwiOiAiU3ViIG1lbnUgaG92ZXIgY29sb3IiLAogICAgICAiZGVmYXVsdCI6ICIjMjA2NDY5IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAicmFuZ2UiLAogICAgICAiaWQiOiAiZm9udF9zaXplIiwKICAgICAgImxhYmVsIjogIlBhcmVudCBtZW51IGZvbnQgc2l6ZSIsCiAgICAgICJtaW4iOiAxNCwKICAgICAgIm1heCI6IDUwLAogICAgICAic3RlcCI6IDEsCiAgICAgICJ1bml0IjogInB4IiwKICAgICAgImRlZmF1bHQiOiAxNgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAicmFuZ2UiLAogICAgICAiaWQiOiAiZm9udF9zaXplX3N1YiIsCiAgICAgICJsYWJlbCI6ICJTdWIgbWVudSBmb250IHNpemUiLAogICAgICAibWluIjogMTQsCiAgICAgICJtYXgiOiA1MCwKICAgICAgInN0ZXAiOiAxLAogICAgICAidW5pdCI6ICJweCIsCiAgICAgICJkZWZhdWx0IjogMTYKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIk1vbmV5IG9wdGlvbnMiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJjaGVja2JveCIsCiAgICAgICJpZCI6ICJzaG93X2hlYWRlcl9jdXJyZW5jeSIsCiAgICAgICJsYWJlbCI6ICJFbmFibGUgQ3VycmVuY3kgc2VsZWN0b3IiLAogICAgICAiZGVmYXVsdCI6IHRydWUKICAgIH0KICBdLAogICJibG9ja3MiOiBbCiAgICB7CiAgICAgICJ0eXBlIjogInByb21vX2ltYWdlIiwKICAgICAgIm5hbWUiOiAiUHJvbW8gaW1hZ2UiLAogICAgICAic2V0dGluZ3MiOiBbCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAibWVnYV8xIiwKICAgICAgICAgICJsYWJlbCI6ICJNYXAgaXRlbSIsCiAgICAgICAgICAiaW5mbyI6ICJUaGlzIHN1Ym1lbnUgd2lsbCBhcHBlYXIgYXMgYSBtZWdhbWVudS4iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJzZWxlY3QiLAogICAgICAgICAgImlkIjogIm1lZ2FfY29sdW1ucyIsCiAgICAgICAgICAibGFiZWwiOiAiQ29sdW1uIHN0eWxlIiwKICAgICAgICAgICJkZWZhdWx0IjogImZvdXItY29sdW1uIiwKICAgICAgICAgICJvcHRpb25zIjogWwogICAgICAgICAgICB7InZhbHVlIjogImZvdXItY29sdW1uIiwgImxhYmVsIjogIjQgY29sdW1uIn0sCiAgICAgICAgICAgIHsidmFsdWUiOiAidGhyZWUtY29sdW1uIiwgImxhYmVsIjogIjMgY29sdW1uIn0sCiAgICAgICAgICAgIHsidmFsdWUiOiAiZml2ZS1jb2x1bW4iLCAibGFiZWwiOiAiNSBjb2x1bW4ifSwKICAgICAgICAgICAgeyJ2YWx1ZSI6ICJzaXgtY29sdW1uIiwgImxhYmVsIjogIjYgY29sdW1uIn0sCiAgICAgICAgICAgIHsidmFsdWUiOiAiZG91YmxlLXF1YXJ0ZXItb25lLWhhbGYiLCAibGFiZWwiOiAiMToxOjIgY29sdW1uIn0KICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogImNoZWNrYm94IiwKICAgICAgICAgICJpZCI6ICJyb3dfcmV2ZXJzZSIsCiAgICAgICAgICAibGFiZWwiOiAiUm93IHJldmVyc2UiLAogICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIkltYWdlIDEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAgICAgImlkIjogImltYWdlXzEiLAogICAgICAgICAgImxhYmVsIjogIkltYWdlIiwKICAgICAgICAgICJpbmZvIjogIlJlY29tbWVuZGVkIHNpemU6IDQwMCB4IDcwMCBweCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogInRpdGxlXzEiLAogICAgICAgICAgImxhYmVsIjogIkhlYWRpbmciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJidXR0b25fMSIsCiAgICAgICAgICAibGFiZWwiOiAiQnV0dG9uIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidXJsIiwKICAgICAgICAgICJpZCI6ICJsaW5rXzEiLAogICAgICAgICAgImxhYmVsIjogIkxpbmsiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAgICAgImNvbnRlbnQiOiAiSW1hZ2UgMiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogImltYWdlX3BpY2tlciIsCiAgICAgICAgICAiaWQiOiAiaW1hZ2VfMiIsCiAgICAgICAgICAibGFiZWwiOiAiSW1hZ2UiLAogICAgICAgICAgImluZm8iOiAiUmVjb21tZW5kZWQgc2l6ZTogNDAwIHggNzAwIHB4IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAidGl0bGVfMiIsCiAgICAgICAgICAibGFiZWwiOiAiSGVhZGluZyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogImJ1dHRvbl8yIiwKICAgICAgICAgICJsYWJlbCI6ICJCdXR0b24iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ1cmwiLAogICAgICAgICAgImlkIjogImxpbmtfMiIsCiAgICAgICAgICAibGFiZWwiOiAiTGluayIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICAgICAiY29udGVudCI6ICJJbWFnZSAzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaW1hZ2VfcGlja2VyIiwKICAgICAgICAgICJpZCI6ICJpbWFnZV8zIiwKICAgICAgICAgICJsYWJlbCI6ICJJbWFnZSIsCiAgICAgICAgICAiaW5mbyI6ICJSZWNvbW1lbmRlZCBzaXplOiA0MDAgeCA3MDAgcHgiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJ0aXRsZV8zIiwKICAgICAgICAgICJsYWJlbCI6ICJIZWFkaW5nIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnV0dG9uXzMiLAogICAgICAgICAgImxhYmVsIjogIkJ1dHRvbiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICAgICAiaWQiOiAibGlua18zIiwKICAgICAgICAgICJsYWJlbCI6ICJMaW5rIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIkltYWdlIDQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAgICAgImlkIjogImltYWdlXzQiLAogICAgICAgICAgImxhYmVsIjogIkltYWdlIiwKICAgICAgICAgICJpbmZvIjogIlJlY29tbWVuZGVkIHNpemU6IDQwMCB4IDcwMCBweCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogInRpdGxlXzQiLAogICAgICAgICAgImxhYmVsIjogIkhlYWRpbmciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJidXR0b25fNCIsCiAgICAgICAgICAibGFiZWwiOiAiQnV0dG9uIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidXJsIiwKICAgICAgICAgICJpZCI6ICJsaW5rXzQiLAogICAgICAgICAgImxhYmVsIjogIkxpbmsiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJwcm9kdWN0IiwKICAgICAgIm5hbWUiOiAiUHJvZHVjdCIsCiAgICAgICJzZXR0aW5ncyI6IFsKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJtZWdhXzEiLAogICAgICAgICAgImxhYmVsIjogIk1hcCBpdGVtIiwKICAgICAgICAgICJpbmZvIjogIlRoaXMgc3VibWVudSB3aWxsIGFwcGVhciBhcyBhIG1lZ2FtZW51LiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInNlbGVjdCIsCiAgICAgICAgICAiaWQiOiAibWVnYV9jb2x1bW5zIiwKICAgICAgICAgICJsYWJlbCI6ICJDb2x1bW4gc3R5bGUiLAogICAgICAgICAgImRlZmF1bHQiOiAiZm91ci1jb2x1bW4iLAogICAgICAgICAgIm9wdGlvbnMiOiBbCiAgICAgICAgICAgIHsidmFsdWUiOiAiZm91ci1jb2x1bW4iLCAibGFiZWwiOiAiNCBjb2x1bW4ifSwKICAgICAgICAgICAgeyJ2YWx1ZSI6ICJ0aHJlZS1jb2x1bW4iLCAibGFiZWwiOiAiMyBjb2x1bW4ifSwKICAgICAgICAgICAgeyJ2YWx1ZSI6ICJmaXZlLWNvbHVtbiIsICJsYWJlbCI6ICI1IGNvbHVtbiJ9LAogICAgICAgICAgICB7InZhbHVlIjogInNpeC1jb2x1bW4iLCAibGFiZWwiOiAiNiBjb2x1bW4ifSwKICAgICAgICAgICAgeyJ2YWx1ZSI6ICJkb3VibGUtcXVhcnRlci1vbmUtaGFsZiIsICJsYWJlbCI6ICIxOjE6MiBjb2x1bW4ifQogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiY2hlY2tib3giLAogICAgICAgICAgImlkIjogInJvd19yZXZlcnNlIiwKICAgICAgICAgICJsYWJlbCI6ICJSb3cgcmV2ZXJzZSIsCiAgICAgICAgICAiZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJwcm9kdWN0IiwKICAgICAgICAgICJpZCI6ICJwcm9kdWN0MSIsCiAgICAgICAgICAibGFiZWwiOiAiUHJvZHVjdCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInByb2R1Y3QiLAogICAgICAgICAgImlkIjogInByb2R1Y3QyIiwKICAgICAgICAgICJsYWJlbCI6ICJQcm9kdWN0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAicHJvZHVjdCIsCiAgICAgICAgICAiaWQiOiAicHJvZHVjdDMiLAogICAgICAgICAgImxhYmVsIjogIlByb2R1Y3QiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJwcm9kdWN0IiwKICAgICAgICAgICJpZCI6ICJwcm9kdWN0NCIsCiAgICAgICAgICAibGFiZWwiOiAiUHJvZHVjdCIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImJyYW5kc19tZWdhbWVudSIsCiAgICAgICJuYW1lIjogIk1lZ2EgTWVuw7ogTWFyY2FzIENOQyIsCiAgICAgICJsaW1pdCI6IDEsCiAgICAgICJzZXR0aW5ncyI6IFsKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJtZW51X2l0ZW1fdGFyZ2V0IiwKICAgICAgICAgICJsYWJlbCI6ICJUZXh0byBkZWwgbWVuw7ogYSBtYXBlYXIiLAogICAgICAgICAgImRlZmF1bHQiOiAiTWFyY2FzIENOQyIsCiAgICAgICAgICAiaW5mbyI6ICJEZWJlIGNvaW5jaWRpciBleGFjdGFtZW50ZSBjb24gZWwgZW5sYWNlIGVuIHR1IG1lbsO6IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIkVubGFjZSBnZW5lcmFsIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidXJsIiwKICAgICAgICAgICJpZCI6ICJhbGxfYnJhbmRzX2xpbmsiLAogICAgICAgICAgImxhYmVsIjogIkVubGFjZSAnVmVyIHRvZGFzIGxhcyBtYXJjYXMnIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYWxsX2JyYW5kc190ZXh0IiwKICAgICAgICAgICJsYWJlbCI6ICJUZXh0byBkZWwgZW5sYWNlIiwKICAgICAgICAgICJkZWZhdWx0IjogIlZlciB0b2RhcyBsYXMgbWFyY2FzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBHUk9CLVdFUktFIOKUgeKUgeKUgSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogImltYWdlX3BpY2tlciIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfMV9sb2dvIiwKICAgICAgICAgICJsYWJlbCI6ICJMb2dvIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfMV9uYW1lIiwKICAgICAgICAgICJsYWJlbCI6ICJOb21icmUiLAogICAgICAgICAgImRlZmF1bHQiOiAiR1JPQi1XRVJLRSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogImJyYW5kXzFfc3VidGl0bGUiLAogICAgICAgICAgImxhYmVsIjogIlN1YnTDrXR1bG8iLAogICAgICAgICAgImRlZmF1bHQiOiAiU2lzdGVtYXMgZGUgcHJvZHVjY2nDs24iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0YXJlYSIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfMV9kZXNjcmlwdGlvbiIsCiAgICAgICAgICAibGFiZWwiOiAiRGVzY3JpcGNpw7NuIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidXJsIiwKICAgICAgICAgICJpZCI6ICJicmFuZF8xX2xpbmsiLAogICAgICAgICAgImxhYmVsIjogIkVubGFjZSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogImJyYW5kXzFfY3RhIiwKICAgICAgICAgICJsYWJlbCI6ICJUZXh0byBkZWwgYm90w7NuIiwKICAgICAgICAgICJkZWZhdWx0IjogIkRlc2N1YnJpciBtw6FxdWluYXMiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAgICAgImNvbnRlbnQiOiAi4pSB4pSB4pSBIE1JQ1JPRFlOQU1JQ1Mg4pSB4pSB4pSBIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaW1hZ2VfcGlja2VyIiwKICAgICAgICAgICJpZCI6ICJicmFuZF8yX2xvZ28iLAogICAgICAgICAgImxhYmVsIjogIkxvZ28iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF8yX25hbWUiLAogICAgICAgICAgImxhYmVsIjogIk5vbWJyZSIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJNSUNST0RZTkFNSUNTIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfMl9zdWJ0aXRsZSIsCiAgICAgICAgICAibGFiZWwiOiAiU3VidMOtdHVsbyIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJDZW50cm9zIGRlIG1lY2FuaXphZG8iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0YXJlYSIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfMl9kZXNjcmlwdGlvbiIsCiAgICAgICAgICAibGFiZWwiOiAiRGVzY3JpcGNpw7NuIiwKICAgICAgICAgICJkZWZhdWx0IjogIkNvbXBhY3RhLCBkdXJhZGVyYSwgcG90ZW50ZSwgcm9idXN0YSB5IHByZWNpc2EsIGxhIHNlcmllIE1FR0EvVEVSQSByZXZvbHVjaW9uYSBlbCBtZXJjYWRvLiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfMl9saW5rIiwKICAgICAgICAgICJsYWJlbCI6ICJFbmxhY2UiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF8yX2N0YSIsCiAgICAgICAgICAibGFiZWwiOiAiVGV4dG8gZGVsIGJvdMOzbiIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJEZXNjdWJyaXIgbcOhcXVpbmFzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBUQUtVTUkg4pSB4pSB4pSBIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaW1hZ2VfcGlja2VyIiwKICAgICAgICAgICJpZCI6ICJicmFuZF8zX2xvZ28iLAogICAgICAgICAgImxhYmVsIjogIkxvZ28iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF8zX25hbWUiLAogICAgICAgICAgImxhYmVsIjogIk5vbWJyZSIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJUQUtVTUkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF8zX3N1YnRpdGxlIiwKICAgICAgICAgICJsYWJlbCI6ICJTdWJ0w610dWxvIiwKICAgICAgICAgICJkZWZhdWx0IjogIkZyZXNhZG9yYXMgQ05DIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dGFyZWEiLAogICAgICAgICAgImlkIjogImJyYW5kXzNfZGVzY3JpcHRpb24iLAogICAgICAgICAgImxhYmVsIjogIkRlc2NyaXBjacOzbiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfM19saW5rIiwKICAgICAgICAgICJsYWJlbCI6ICJFbmxhY2UiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF8zX2N0YSIsCiAgICAgICAgICAibGFiZWwiOiAiVGV4dG8gZGVsIGJvdMOzbiIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJEZXNjdWJyaXIgbcOhcXVpbmFzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBIVVJDTyDilIHilIHilIEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAgICAgImlkIjogImJyYW5kXzRfbG9nbyIsCiAgICAgICAgICAibGFiZWwiOiAiTG9nbyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogImJyYW5kXzRfbmFtZSIsCiAgICAgICAgICAibGFiZWwiOiAiTm9tYnJlIiwKICAgICAgICAgICJkZWZhdWx0IjogIkhVUkNPIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfNF9zdWJ0aXRsZSIsCiAgICAgICAgICAibGFiZWwiOiAiU3VidMOtdHVsbyIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJDZW50cm9zIGRlIG1lY2FuaXphZG8gQ05DIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dGFyZWEiLAogICAgICAgICAgImlkIjogImJyYW5kXzRfZGVzY3JpcHRpb24iLAogICAgICAgICAgImxhYmVsIjogIkRlc2NyaXBjacOzbiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfNF9saW5rIiwKICAgICAgICAgICJsYWJlbCI6ICJFbmxhY2UiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF80X2N0YSIsCiAgICAgICAgICAibGFiZWwiOiAiVGV4dG8gZGVsIGJvdMOzbiIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJEZXNjdWJyaXIgbcOhcXVpbmFzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBQSU5OQUNMRSDilIHilIHilIEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAgICAgImlkIjogImJyYW5kXzVfbG9nbyIsCiAgICAgICAgICAibGFiZWwiOiAiTG9nbyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogImJyYW5kXzVfbmFtZSIsCiAgICAgICAgICAibGFiZWwiOiAiTm9tYnJlIiwKICAgICAgICAgICJkZWZhdWx0IjogIlBJTk5BQ0xFIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfNV9zdWJ0aXRsZSIsCiAgICAgICAgICAibGFiZWwiOiAiU3VidMOtdHVsbyIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJUb3Jub3MgeSBmcmVzYWRvcmFzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dGFyZWEiLAogICAgICAgICAgImlkIjogImJyYW5kXzVfZGVzY3JpcHRpb24iLAogICAgICAgICAgImxhYmVsIjogIkRlc2NyaXBjacOzbiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfNV9saW5rIiwKICAgICAgICAgICJsYWJlbCI6ICJFbmxhY2UiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgICAgICJpZCI6ICJicmFuZF81X2N0YSIsCiAgICAgICAgICAibGFiZWwiOiAiVGV4dG8gZGVsIGJvdMOzbiIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJEZXNjdWJyaXIgbcOhcXVpbmFzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBBUklTVEVDSCDilIHilIHilIEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAgICAgImlkIjogImJyYW5kXzZfbG9nbyIsCiAgICAgICAgICAibGFiZWwiOiAiTG9nbyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAgICAgImlkIjogImJyYW5kXzZfbmFtZSIsCiAgICAgICAgICAibGFiZWwiOiAiTm9tYnJlIiwKICAgICAgICAgICJkZWZhdWx0IjogIkFSSVNURUNIIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfNl9zdWJ0aXRsZSIsCiAgICAgICAgICAibGFiZWwiOiAiU3VidMOtdHVsbyIsCiAgICAgICAgICAiZGVmYXVsdCI6ICJTb2x1Y2lvbmVzIENOQyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJ0eXBlIjogInRleHRhcmVhIiwKICAgICAgICAgICJpZCI6ICJicmFuZF82X2Rlc2NyaXB0aW9uIiwKICAgICAgICAgICJsYWJlbCI6ICJEZXNjcmlwY2nDs24iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAidHlwZSI6ICJ1cmwiLAogICAgICAgICAgImlkIjogImJyYW5kXzZfbGluayIsCiAgICAgICAgICAibGFiZWwiOiAiRW5sYWNlIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICAgICAiaWQiOiAiYnJhbmRfNl9jdGEiLAogICAgICAgICAgImxhYmVsIjogIlRleHRvIGRlbCBib3TDs24iLAogICAgICAgICAgImRlZmF1bHQiOiAiRGVzY3VicmlyIG3DoXF1aW5hcyIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgInR5cGUiOiAibWFxdWluYXJpYV9tZWdhbWVudSIsCiAgIm5hbWUiOiAiTWVnYSBNZW7DuiBNYXF1aW5hcmlhIiwKICAibGltaXQiOiAxLAogICJzZXR0aW5ncyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJtZW51X2l0ZW1fdGFyZ2V0IiwKICAgICAgImxhYmVsIjogIlRleHRvIGRlbCBtZW7DuiBhIG1hcGVhciIsCiAgICAgICJkZWZhdWx0IjogIk1hcXVpbmFyaWEgbnVldmEiLAogICAgICAiaW5mbyI6ICJEZWJlIGNvaW5jaWRpciBleGFjdGFtZW50ZSBjb24gZWwgZW5sYWNlIGVuIHR1IG1lbsO6IgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgImNvbnRlbnQiOiAiRW5sYWNlIGdlbmVyYWwiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ1cmwiLAogICAgICAiaWQiOiAiYWxsX2xpbmsiLAogICAgICAibGFiZWwiOiAiRW5sYWNlICdWZXIgdG9kbyBlbCBjYXTDoWxvZ28nIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJhbGxfdGV4dCIsCiAgICAgICJsYWJlbCI6ICJUZXh0byBkZWwgZW5sYWNlIiwKICAgICAgImRlZmF1bHQiOiAiVmVyIHRvZG8gZWwgY2F0w6Fsb2dvIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaGVhZGVyIiwKICAgICAgImNvbnRlbnQiOiAi4pSB4pSB4pSBIENBVEVHT1LDjUEgMSDilIHilIHilIEiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJpbWFnZV9waWNrZXIiLAogICAgICAiaWQiOiAiY2F0XzFfaW1hZ2UiLAogICAgICAibGFiZWwiOiAiSW1hZ2VuL0ljb25vIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJjYXRfMV9uYW1lIiwKICAgICAgImxhYmVsIjogIk5vbWJyZSIsCiAgICAgICJkZWZhdWx0IjogIkNlbnRyb3MgZGUgTWVjYW5pemFkbyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAiaWQiOiAiY2F0XzFfZGVzYyIsCiAgICAgICJsYWJlbCI6ICJEZXNjcmlwY2nDs24gYnJldmUiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ1cmwiLAogICAgICAiaWQiOiAiY2F0XzFfbGluayIsCiAgICAgICJsYWJlbCI6ICJFbmxhY2UiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAiY29udGVudCI6ICLilIHilIHilIEgQ0FURUdPUsONQSAyIOKUgeKUgeKUgSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImltYWdlX3BpY2tlciIsCiAgICAgICJpZCI6ICJjYXRfMl9pbWFnZSIsCiAgICAgICJsYWJlbCI6ICJJbWFnZW4vSWNvbm8iCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgImlkIjogImNhdF8yX25hbWUiLAogICAgICAibGFiZWwiOiAiTm9tYnJlIiwKICAgICAgImRlZmF1bHQiOiAiVG9ybm9zIENOQyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAiaWQiOiAiY2F0XzJfZGVzYyIsCiAgICAgICJsYWJlbCI6ICJEZXNjcmlwY2nDs24gYnJldmUiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ1cmwiLAogICAgICAiaWQiOiAiY2F0XzJfbGluayIsCiAgICAgICJsYWJlbCI6ICJFbmxhY2UiCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJoZWFkZXIiLAogICAgICAiY29udGVudCI6ICLilIHilIHilIEgQ0FURUdPUsONQSAzIOKUgeKUgeKUgSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImltYWdlX3BpY2tlciIsCiAgICAgICJpZCI6ICJjYXRfM19pbWFnZSIsCiAgICAgICJsYWJlbCI6ICJJbWFnZW4vSWNvbm8iCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgImlkIjogImNhdF8zX25hbWUiLAogICAgICAibGFiZWwiOiAiTm9tYnJlIiwKICAgICAgImRlZmF1bHQiOiAiRURNIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJjYXRfM19kZXNjIiwKICAgICAgImxhYmVsIjogIkRlc2NyaXBjacOzbiBicmV2ZSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICJpZCI6ICJjYXRfM19saW5rIiwKICAgICAgImxhYmVsIjogIkVubGFjZSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBDQVRFR09Sw41BIDQg4pSB4pSB4pSBIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaW1hZ2VfcGlja2VyIiwKICAgICAgImlkIjogImNhdF80X2ltYWdlIiwKICAgICAgImxhYmVsIjogIkltYWdlbi9JY29ubyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAiaWQiOiAiY2F0XzRfbmFtZSIsCiAgICAgICJsYWJlbCI6ICJOb21icmUiLAogICAgICAiZGVmYXVsdCI6ICJGcmVzYWRvcmFzIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJjYXRfNF9kZXNjIiwKICAgICAgImxhYmVsIjogIkRlc2NyaXBjacOzbiBicmV2ZSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICJpZCI6ICJjYXRfNF9saW5rIiwKICAgICAgImxhYmVsIjogIkVubGFjZSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBDQVRFR09Sw41BIDUg4pSB4pSB4pSBIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaW1hZ2VfcGlja2VyIiwKICAgICAgImlkIjogImNhdF81X2ltYWdlIiwKICAgICAgImxhYmVsIjogIkltYWdlbi9JY29ubyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAiaWQiOiAiY2F0XzVfbmFtZSIsCiAgICAgICJsYWJlbCI6ICJOb21icmUiLAogICAgICAiZGVmYXVsdCI6ICJNYW5kcmluYWRvcmFzIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJjYXRfNV9kZXNjIiwKICAgICAgImxhYmVsIjogIkRlc2NyaXBjacOzbiBicmV2ZSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInVybCIsCiAgICAgICJpZCI6ICJjYXRfNV9saW5rIiwKICAgICAgImxhYmVsIjogIkVubGFjZSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIuKUgeKUgeKUgSBDQVRFR09Sw41BIDYg4pSB4pSB4pSBIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAiaW1hZ2VfcGlja2VyIiwKICAgICAgImlkIjogImNhdF82X2ltYWdlIiwKICAgICAgImxhYmVsIjogIkltYWdlbi9JY29ubyIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAiaWQiOiAiY2F0XzZfbmFtZSIsCiAgICAgICJsYWJlbCI6ICJOb21icmUiLAogICAgICAiZGVmYXVsdCI6ICJNw6FxdWluYXMgZW4gU3RvY2siCiAgICB9LAogICAgewogICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgImlkIjogImNhdF82X2Rlc2MiLAogICAgICAibGFiZWwiOiAiRGVzY3JpcGNpw7NuIGJyZXZlIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidXJsIiwKICAgICAgImlkIjogImNhdF82X2xpbmsiLAogICAgICAibGFiZWwiOiAiRW5sYWNlIgogICAgfQogIF0KfSwKewogICJ0eXBlIjogIm9jYXNpb25fbWVnYW1lbnUiLAogICJuYW1lIjogIk1lZ2EgTWVuw7ogT2Nhc2nDs24iLAogICJsaW1pdCI6IDEsCiAgInNldHRpbmdzIjogWwogICAgewogICAgICAidHlwZSI6ICJ0ZXh0IiwKICAgICAgImlkIjogIm1lbnVfaXRlbV90YXJnZXQiLAogICAgICAibGFiZWwiOiAiVGV4dG8gZGVsIG1lbsO6IGEgbWFwZWFyIiwKICAgICAgImRlZmF1bHQiOiAiU2VndW5kYSBtYW5vIiwKICAgICAgImluZm8iOiAiRGViZSBjb2luY2lkaXIgZXhhY3RhbWVudGUgY29uIGVsIGVubGFjZSBlbiB0dSBtZW7DuiIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogInRleHQiLAogICAgICAiaWQiOiAic3VidGl0bGUiLAogICAgICAibGFiZWwiOiAiU3VidMOtdHVsbyBkZWwgbWVuw7oiLAogICAgICAiZGVmYXVsdCI6ICJFcXVpcG9zIHJldmlzYWRvcywgbGlzdG9zIHBhcmEgZW50cmVnYSIKICAgIH0sCiAgICB7CiAgICAgICJ0eXBlIjogImhlYWRlciIsCiAgICAgICJjb250ZW50IjogIkVubGFjZSBnZW5lcmFsIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidXJsIiwKICAgICAgImlkIjogImFsbF9saW5rIiwKICAgICAgImxhYmVsIjogIkVubGFjZSAnVmVyIHRvZG8nIgogICAgfSwKICAgIHsKICAgICAgInR5cGUiOiAidGV4dCIsCiAgICAgICJpZCI6ICJhbGxfdGV4dCIsCiAgICAgICJsYWJlbCI6ICJUZXh0byBkZWwgZW5sYWNlIiwKICAgICAgImRlZmF1bHQiOiAiVmVyIHRvZGEgbGEgbWFxdWluYXJpYSBkZSBvY2FzacOzbiIKICAgIH0KICBdCn0KICBdCn0KeyUgZW5kc2NoZW1hICV9
Técnico de Ferrotall junto a un centro de mecanizado GROB en las instalaciones de Monforte del Cid

Máquina-herramienta en Alicante desde hace más de 45 años

Maquinaria CNC nueva y de ocasión, con servicio técnico propio

Centros de mecanizado de 5 ejes, verticales, pórticos y tornos CNC de GROB, Micro Dynamics, Takumi, Hurco, Waldrich Coburg y Vurcon, y 121 máquinas de ocasión que puede ver en nuestras naves de Monforte del Cid.

Más de 45 añosen máquina-herramienta
Servicio técnico propioinstalación, formación y recambios
Monforte del Cid e Ibidos sedes en Alicante
Socio de EAMTMred europea de máquina-herramienta

¿Qué necesita?

Marcas que representamos

Ver todas las marcas →
GROBMicro DynamicsTakumiHurcoWaldrich CoburgVurcon

Novedad 2026

GROB GP1350: pórtico de 5 ejes para piezas de hasta Ø 1.400 mm

La gama de pórtico de GROB para piezas grandes en una sola sujeción. Le asesoramos sobre husillo, mesa y automatización según su pieza.

Ver la GP1350
Centro de mecanizado de pórtico GROB GP1350

Ocasión destacada

Una selección de las máquinas disponibles en nuestras naves de Monforte del Cid.

Ver las 121 disponibles →
¿No ve la máquina que busca? Se la buscamos.
  • Más de 800 máquinas de ocasión vendidas
  • Talleres comprados aún sin publicar
  • Red europea de socios EAMTM
Técnicos de Ferrotall revisando un centro de mecanizado GROB

Una sola empresa para comprar, instalar y mantener

  • Asesoramiento de aplicación. Le ayudamos a elegir máquina, husillo, mesa y automatización según su pieza y su producción.
  • Instalación y formación. Transporte, nivelación, puesta en marcha y formación de sus operarios.
  • Servicio técnico y recambios. Técnicos propios para mantener la máquina produciendo.
  • Nueva u ocasión. Si una máquina de ocasión le encaja mejor, se la proponemos; también compramos la suya.
Conocer el servicio técnico →

Experiencia por sector

Novedades de nuestras marcas en vídeo

Preguntas frecuentes

¿Qué vende Ferrotall?

Ferrotall vende maquinaria CNC nueva —centros de mecanizado de 5 ejes, verticales, pórticos y tornos CNC de GROB, Micro Dynamics, Takumi, Hurco, Waldrich Coburg y Vurcon— y maquinaria de ocasión revisable en sus naves. También ofrece servicio técnico propio y suministro industrial para talleres de mecanizado.

¿Dónde está Ferrotall?

Ferrotall tiene sus instalaciones en Monforte del Cid (Alicante), en el Polígono Industrial Las Norias, y una sede en Ibi (Alicante). Las máquinas de ocasión se pueden visitar en Monforte del Cid concertando cita.

¿Ferrotall instala y mantiene las máquinas que vende?

Sí. El servicio técnico propio de Ferrotall se encarga del transporte, la instalación, la puesta en marcha, la formación de operarios, el mantenimiento y los recambios, tanto en máquina nueva como de ocasión.

¿Puedo ver una máquina de ocasión antes de comprarla?

Sí. Todas las máquinas de ocasión están en Monforte del Cid o en naves cercanas. Puede concertar una visita o pedir un vídeo de la máquina en funcionamiento desde la ficha de cada máquina.

¿Ferrotall compra maquinaria usada?

Sí. Ferrotall compra máquinas sueltas y talleres completos, o las vende por cuenta del propietario a su red de clientes y a socios europeos de EAMTM. Basta con enviar fotos, la placa de características y la ubicación.

Hablemos de su próxima máquina

Envíenos el plano de su pieza o cuéntenos qué necesita. Le respondemos en menos de 24 horas laborables.