PGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5vIiAvPgoKPHRpdGxlPlJlc3VtZUNyYWZ0IHwgUHJvZmVzc2lvbmFsIFJlc3VtZSBCdWlsZGVyICYgQ1YgTWFrZXI8L3RpdGxlPgo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQ3JlYXRlIEFUUy1mcmllbmRseSByZXN1bWVzIGluIG1pbnV0ZXMgd2l0aCBSZXN1bWVDcmFmdC4gQ2hvb3NlIGZyb20gcHJvZmVzc2lvbmFsIHRlbXBsYXRlcywgY3VzdG9taXplIGxheW91dHMsIGFuZCBkb3dubG9hZCBQREYgcmVzdW1lcyB0byBsYW5kIHlvdXIgZHJlYW0gam9iLiIgLz4KPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9InJlc3VtZSBidWlsZGVyLCBjdiBtYWtlciwgY3VycmljdWx1bSB2aXRhZSwgY292ZXIgbGV0dGVyLCByZXN1bWUgdGVtcGxhdGVzLCBqb2IgYXBwbGljYXRpb24sIHBkZiByZXN1bWUsIGNhcmVlciB0b29scywgUmVzdW1lQ3JhZnQiIC8+CjxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iUmVzdW1lQ3JhZnQgU29sdXRpb25zIiAvPgogIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iaW5kZXgsIGZvbGxvdywgbWF4LXNuaXBwZXQ6LTEsIG1heC1pbWFnZS1wcmV2aWV3OmxhcmdlLCBtYXgtdmlkZW8tcHJldmlldzotMSIgLz4KICA8bWV0YSBuYW1lPSJsYW5ndWFnZSIgY29udGVudD0iRW5nbGlzaCIgLz4KICA8bWV0YSBuYW1lPSJkaXN0cmlidXRpb24iIGNvbnRlbnQ9Imdsb2JhbCIgLz4KICA8bWV0YSBuYW1lPSJyYXRpbmciIGNvbnRlbnQ9IkdlbmVyYWwiIC8+CiAgPG1ldGEgbmFtZT0icmV2aXNpdC1hZnRlciIgY29udGVudD0iNyBkYXlzIiAvPgogIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjNEY0NkU1IiAvPgo8bWV0YSBuYW1lPSJhcHBsaWNhdGlvbi1uYW1lIiBjb250ZW50PSJSZXN1bWVDcmFmdCBCdWlsZGVyIiAvPgoKPCEtLSBDYW5vbmljYWwgLS0+CjxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy5yZXN1bWVjcmFmdGFwcC5jb20vIiAvPgoKICA8IS0tIEZhdmljb25zIC0tPgogIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiAvPgogIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIvZmF2aWNvbi0zMngzMi5wbmciIC8+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL2Zhdmljb24tMTZ4MTYucG5nIiAvPgoKPCEtLSBPcGVuIEdyYXBoIC8gRmFjZWJvb2sgLS0+CjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL3d3dy5yZXN1bWVjcmFmdGFwcC5jb20vIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkJ1aWxkIFlvdXIgUGVyZmVjdCBSZXN1bWUgT25saW5lIHwgUmVzdW1lQ3JhZnQiIC8+CjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iQWNjZXNzIGV4cGVydC1hcHByb3ZlZCB0ZW1wbGF0ZXMsIHJlYWwtdGltZSBwcmV2aWV3LCBhbmQgc21hcnQgc3VnZ2VzdGlvbnMuIFN0YXJ0IGJ1aWxkaW5nIHlvdXIgY2FyZWVyIHRvZGF5LiIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy5yZXN1bWVjcmFmdGFwcC5jb20vYXNzZXRzL3Jlc3VtZS1oZXJvLXNvY2lhbC5wbmciIC8+CjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IlJlc3VtZUNyYWZ0IiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIgLz4KCjwhLS0gVHdpdHRlciBDYXJkcyAtLT4KPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiAvPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cucmVzdW1lY3JhZnRhcHAuY29tLyIgLz4KPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iUmVzdW1lQ3JhZnQgfCBTbWFydCBSZXN1bWUgJiBDViBCdWlsZGVyIiAvPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOmRlc2NyaXB0aW9uIiBjb250ZW50PSJTdGFuZCBvdXQgdG8gcmVjcnVpdGVycy4gQnVpbGQsIGVkaXQsIGFuZCBleHBvcnQgeW91ciByZXN1bWUgaW5zdGFudGx5IHdpdGggb3VyIEFJLXBvd2VyZWQgcGxhdGZvcm0uIiAvPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy5yZXN1bWVjcmFmdGFwcC5jb20vYXNzZXRzL3Jlc3VtZS1oZXJvLXNvY2lhbC5wbmciIC8+CjxtZXRhIG5hbWU9InR3aXR0ZXI6Y3JlYXRvciIgY29udGVudD0iQFJlc3VtZUNyYWZ0QXBwIiAvPgoKPCEtLSBJbnN0YWdyYW0gLS0+CjxtZXRhIHByb3BlcnR5PSJvZzpzZWVfYWxzbyIgY29udGVudD0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9yZXN1bWVjcmFmdGFwcC8iIC8+CjxtZXRhIG5hbWU9Imluc3RhZ3JhbTpzaXRlIiBjb250ZW50PSJAcmVzdW1lY3JhZnRhcHAiIC8+CgogIDwhLS0gQWRkaXRpb25hbCBTRU8gTWV0YSBUYWdzIC0tPgogIDxtZXRhIG5hbWU9Imdlby5yZWdpb24iIGNvbnRlbnQ9IlVTLU5ZIiAvPgogIDxtZXRhIG5hbWU9Imdlby5wbGFjZW5hbWUiIGNvbnRlbnQ9Ik5ldyBZb3JrIiAvPgogIDxtZXRhIG5hbWU9Imdlby5wb3NpdGlvbiIgY29udGVudD0iNDAuNzEyODstNzQuMDA2MCIgLz4KICA8bWV0YSBuYW1lPSJJQ0JNIiBjb250ZW50PSI0MC43MTI4LCAtNzQuMDA2MCIgLz4KICA8bWV0YSBuYW1lPSJtb2JpbGUtd2ViLWFwcC1jYXBhYmxlIiBjb250ZW50PSJ5ZXMiIC8+CiAgPG1ldGEgbmFtZT0iSGFuZGhlbGRGcmllbmRseSIgY29udGVudD0idHJ1ZSIgLz4KICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+Cgo8IS0tIFNjaGVtYSBNYXJrdXAgKEpTT04tTEQpIC0tPgo8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgp7CiAgIkBjb250ZXh0IjogImh0dHBzOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIlNvZnR3YXJlQXBwbGljYXRpb24iLAogICJuYW1lIjogIlJlc3VtZUNyYWZ0IiwKICAidXJsIjogImh0dHBzOi8vd3d3LnJlc3VtZWNyYWZ0YXBwLmNvbS8iLAogICJsb2dvIjogImh0dHBzOi8vd3d3LnJlc3VtZWNyYWZ0YXBwLmNvbS9hc3NldHMvbG9nby5wbmciLAogICJkZXNjcmlwdGlvbiI6ICJBIHBvd2VyZnVsIHdlYiBhcHBsaWNhdGlvbiBmb3IgY3JlYXRpbmcsIGZvcm1hdHRpbmcsIGFuZCBtYW5hZ2luZyBwcm9mZXNzaW9uYWwgcmVzdW1lcyBhbmQgQ1ZzLiIsCiAgImFwcGxpY2F0aW9uQ2F0ZWdvcnkiOiAiQnVzaW5lc3NBcHBsaWNhdGlvbiIsCiAgIm9wZXJhdGluZ1N5c3RlbSI6ICJXZWIsIGlPUywgQW5kcm9pZCIsCiAgIm9mZmVyIjogewogICAgIkB0eXBlIjogIk9mZmVyIiwKICAgICJwcmljZSI6ICIwLjAwIiwKICAgICJwcmljZUN1cnJlbmN5IjogIlVTRCIsCiAgICAiY2F0ZWdvcnkiOiAiRnJlZSBUaWVyIEF2YWlsYWJsZSIKICB9LAogICJhdXRob3IiOiB7CiAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJuYW1lIjogIlJlc3VtZUNyYWZ0IFNvbHV0aW9ucyIsCiAgICAidXJsIjogImh0dHBzOi8vd3d3LnJlc3VtZWNyYWZ0YXBwLmNvbSIKICB9LAogICJzYW1lQXMiOiBbCiAgICAiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3Jlc3VtZWNyYWZ0YXBwIiwKICAgICJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3Jlc3VtZWNyYWZ0YXBwIiwKICAgICJodHRwczovL3R3aXR0ZXIuY29tL3Jlc3VtZWNyYWZ0YXBwIgogIF0sCiAgInBvdGVudGlhbEFjdGlvbiI6IHsKICAgICJAdHlwZSI6ICJTZWFyY2hBY3Rpb24iLAogICAgInRhcmdldCI6ICJodHRwczovL3d3dy5yZXN1bWVjcmFmdGFwcC5jb20vdGVtcGxhdGVzP2NhdGVnb3J5PXtzZWFyY2hfdGVybV9zdHJpbmd9IiwKICAgICJxdWVyeS1pbnB1dCI6ICJyZXF1aXJlZCBuYW1lPXNlYXJjaF90ZXJtX3N0cmluZyIKICB9Cn0KPC9zY3JpcHQ+CgogIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICA8IS0tIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIgLz4KICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luIC8+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1PdXRmaXQ6d2dodEA0MDA7NTAwOzYwMDs3MDAmZmFtaWx5PVNwYWNlK0dyb3Rlc2s6d2dodEA0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiIC8+CiAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi4wLjAvY3NzL2FsbC5taW4uY3NzIiAvPiAtLT4KICAgIDxzY3JpcHQgdHlwZT0iaW1wb3J0bWFwIj4KICAgICAgewogICAgICAgICJpbXBvcnRzIjogewogICAgICAgICAgInJlYWN0IjogImh0dHBzOi8vZXNtLnNoL3JlYWN0QDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tIjogImh0dHBzOi8vZXNtLnNoL3JlYWN0LWRvbUAxOC4yLjAiLAogICAgICAgICAgInJlYWN0LWRvbS8iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMC8iLAogICAgICAgICAgIkBjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdCI6ICJodHRwczovL2VzbS5zaC9AY29kZXNhbmRib3gvc2FuZHBhY2stcmVhY3RAMi44LjA/ZGVwcz1yZWFjdEAxOC4yLjAmZGVwcz1yZWFjdC1kb21AMTguMi4wIgogICAgICAgIH0KICAgICAgfQogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9raXQuZm9udGF3ZXNvbWUuY29tL2JjMDgxNzkyZDQuanMiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgogICAgCiAgICA8c3R5bGU+Cjpyb290IHsKICAgIC0tcHJpbWFyeS1jb2xvcjogIzJkMmQyZDsKICAgIC0tYWNjZW50LWNvbG9yOiAjNGE5MGUyOwogICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwogICAgCiAgICAvKiBEYXJrIHRoZW1lIGNvbG9ycyAoZGVmYXVsdCBhbmQgb25seSB0aGVtZSkgKi8KICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAtLXN1cmZhY2UtY29sb3I6ICMyZDJkMmQ7CiAgICAtLXRleHQtY29sb3I6ICNlMGUwZTA7CiAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgIC0taW5wdXQtYmc6ICMyZDJkMmQ7CiAgICAtLWlucHV0LWJvcmRlcjogIzQwNDA0MDsKICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgIC0tYnV0dG9uLWJnOiAjNDA0MDQwOwogICAgLS1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgIC0tZm9vdGVyLWJnOiAjMmQyZDJkOwogICAgLS1jYXJkLWJnOiAjMzMzMzMzOwogICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAtLXRleHQtc2Vjb25kYXJ5OiAjY2NjY2NjOwogICAgLS1ibHVlLWhvdmVyOiAjM2E3YmM4Owp9CgovKiBTY3JvbGxiYXIgd2lkdGggKi8KOjotd2Via2l0LXNjcm9sbGJhciB7CiAgd2lkdGg6IDEycHg7Cn0KCi8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kOiAjMWExYTFhOyAvKiBkYXJrIGJhY2tncm91bmQgKi8KfQoKLyogSGFuZGxlICh0aHVtYikgKi8KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgYmFja2dyb3VuZDogIzU1NTsgLyogZGFyayBncmF5ICovCiAgYm9yZGVyLXJhZGl1czogNnB4Owp9CgovKiBIYW5kbGUgb24gaG92ZXIgKi8KOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgYmFja2dyb3VuZDogIzc3NzsKfQovKiBCYXNlIGNoYXQgYnViYmxlIHN0eWxlcyBmb3IgZGFyayB0aGVtZSAqLwouY2hhdC1idWJibGUuYWkgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7IC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLXN1cmZhY2UtY29sb3IgKi8KICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7IC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgouY2hhdC1idWJibGUuYWk6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IC04cHg7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOyAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgY2xpcC1wYXRoOiBwb2x5Z29uKDEwMCUgMCwgMCUgMTAwJSwgMTAwJSAxMDAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwp9CgouZ2l0aHViLXN0YXJzLAouZ2l0aHViLWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKfQoKLmJhZGdlLXRvZ2V0aGVyIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBvcGFjaXR5OiAwLjg7Cn0KCiogewogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7Cn0KCi8qIFdvcmRQcmVzcyBUaGVtZSBDb21wYXRpYmlsaXR5IC0gRnVsbCBQYWdlIEJhY2tncm91bmQgKi8KYm9keSwgaHRtbCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIGNvbnRhaW5lciBhZGp1c3RtZW50cyAtIEZ1bGwgd2lkdGggKi8KLmNvbnRhaW5lciwgLmNvbnRhaW5lci1mbHVpZCwgLndyYXBwZXIsIC5jb250ZW50LCAubWFpbiwgCi5zaXRlLWNvbnRlbnQsIC5lbnRyeS1jb250ZW50LCAucGFnZS1jb250ZW50IHsKICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50Owp9CgovKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwojbGFuZGluZ1NlY3Rpb24gewogICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgIGNvbG9yOiAjZTBlMGUwOwp9CgovKiBGaXggaGVybyBzZWN0aW9uIGNvbnRlbnQgY2VudGVyaW5nIC0ga2VlcCBjb250ZW50IGNlbnRlcmVkIGJ1dCBiYWNrZ3JvdW5kIGZ1bGwtd2lkdGggKi8KLmhlcm8tc2VjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5oZXJvLWNvbnRlbnQsIC5oZXJvLXRleHQgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEZpeCBzdGFyIGxvZ28gcG9zaXRpb25pbmcgLSBrZWVwIGl0IGNlbnRlcmVkICovCi5oZXJvLXNlY3Rpb24gaDEgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGdhcDogMTVweCAhaW1wb3J0YW50Owp9CgouaGVyby1zZWN0aW9uIHAgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Owp9CgovKiBGaXggdGhlIGFjdHVhbCBpbnB1dCBjb250YWluZXIgY2xhc3NlcyBmcm9tIEhUTUwgKi8KLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKfQoKLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKfQoKLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgIWltcG9ydGFudDsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5pbnB1dC1jb250cm9scy1yb3cgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgIGdhcDogMTJweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogNnB4IDEwcHggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLyogRml4IHByb21wdCBpbnB1dCBzdHlsaW5nIHRvIG1hdGNoIG9yaWdpbmFsICovCi5wcm9tcHQtaW5wdXQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICByZXNpemU6IG5vbmUgIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgoKCi8qIEZpeCBzdWdnZXN0ZWQgYXBwcyBzZWN0aW9uIC0gY2VudGVyZWQgd2l0aCBwcm9wZXIgd2lkdGggKi8KLnN1Z2dlc3RlZC1hcHBzIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGdhcDogMTBweCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50Owp9Cgouc3VnZ2VzdGVkLWFwcCB7CiAgICBtYXJnaW46IDVweCAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKfQoKLyogRml4IGZlYXR1cmVzIGdyaWQgLSAzIGNhcmRzIGluIGEgcm93LCBjZW50ZXJlZCAqLwouZmVhdHVyZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAyODBweCkgIWltcG9ydGFudDsKICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5mZWF0dXJlLWNhcmQgewogICAgd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBhbGwgc2VjdGlvbnMgYXJlIHByb3Blcmx5IGNlbnRlcmVkICovCi5mZWF0dXJlcy1zZWN0aW9uLCAuaG93LWl0LXdvcmtzLXNlY3Rpb24sIC5wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCi5kZW1vLXNlY3Rpb24sIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwgLnRlc3RpbW9uaWFscy1zZWN0aW9uLCAuY3RhLXNlY3Rpb24gewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgbWluLWhlaWdodDogMTAwdmggIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLApib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAtNDBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1ib3R0b206IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTkwcHgpICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBjZW50ZXJpbmcgZm9yIEhvdyBJdCBXb3JrcyBzZWN0aW9uICovCmJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXNlY3Rpb24gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLyogRm9yY2UgY2VudGVyIG9ubHkgdGhlIHN1YnRpdGxlIHRleHQgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi8qIENlbnRlciBBTEwgc2VjdGlvbiBzdWJ0aXRsZXMgaW4gV29yZFByZXNzICovCmJvZHkucGFnZS1pZC01OTM2MyAuaGVyby1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuZW5kbGVzcy1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5hY3Rpb24tc3VidGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5sb3ZlZC1zdWJ0aXRsZSwKYm9keS5wYWdlLWlkLTU5MzYzIC5jdGEtc3VidGl0bGUgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBXb3JkUHJlc3MgY29udGFpbmVycyBkb24ndCBhZGQgd2hpdGUgc3BhY2UgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4sCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50LApib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAucGFnZS1jb250ZW50IHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgZXhjZXNzaXZlIFdvcmRQcmVzcyBvdmVycmlkZXMgLSBrZWVwIG1pbmltYWwgKi8KCi8qIFdvcmRQcmVzcyBjb250YWluZXIgY29tcGF0aWJpbGl0eSAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwp9CgovKiBSZXNwb25zaXZlIERlc2lnbiBJbXByb3ZlbWVudHMgKi8KLyogRm9yIHNjcmVlbnMgOTAwcHggYW5kIGJlbG93IC0gU1RBQ0sgVkVSVElDQUxMWSAqLwpAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgIC5zdGVwcy1jb250YWluZXIgeyAKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IAogICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7IAogICAgICAgIHBhZGRpbmc6IDAgMXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtYXJyb3cgeyAKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgIWltcG9ydGFudDsgCiAgICAgICAgZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwLWNhcmQgeyAKICAgICAgICBtYXgtd2lkdGg6IDkwJSAhaW1wb3J0YW50OyAKICAgICAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7IAogICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIC5zdGVwLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgLnN0ZXAtZGVzY3JpcHRpb24gewogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgfQp9CgovKiBNb2JpbGUgcmVzcG9uc2l2ZSBmaXhlcyAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXggLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICBib2R5IHsKICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBzaWduaWZpY2FudGx5ICovCiAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAzMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGhlcm8gc2VjdGlvbiBpbXByb3ZlbWVudHMgKi8KICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDIwcHggMTVweCAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmluc2lkZS1oZXJvLXNlY3Rpb24gewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgd2lkdGg6IDIuNXJlbSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgIHBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG8gIWltcG9ydGFudDsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIHdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGlucHV0IHNlY3Rpb24gZml4ZXMgKi8KICAgIC5pbnB1dC1zZWN0aW9uIHsKICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDE1cHggIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHggNXB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5pbnB1dC1jb250YWluZXIsIC5wcm9tcHQtaW5wdXQsIC5pbnB1dC1ncm91cCB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIE1vYmlsZSBoZXJvIGNvbnRlbnQgKi8KICAgIC5oZXJvLWNvbnRlbnQsIC5oZXJvLXRleHQgewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgZmVhdHVyZXMgZ3JpZCAtIHNpbmdsZSBjb2x1bW4gKi8KICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICBtYXgtd2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlIGlucHV0IGNvbnRhaW5lcnMgKi8KICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBNb2JpbGUgc3VnZ2VzdGVkIGFwcHMgKi8KICAgIC5zdWdnZXN0ZWQtYXBwcyB7CiAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogTW9iaWxlLXNwZWNpZmljIGJhY2tncm91bmQgaGVpZ2h0IHJlZHVjdGlvbiAqLwogICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgbWFyZ2luLXRvcDogLTIwcHggIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nLXRvcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxNzBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgLyogRnVydGhlciByZWR1Y3Rpb24gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAqLwogICAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTYwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCBoZXJvIHJlc3BvbnNpdmVuZXNzICovCiAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICBmb250LXNpemU6IDEuNnJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1zZWN0aW9uIHAgewogICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS4xICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiA4cHggMCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuaGVyby1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbjogOHB4IDAgIWltcG9ydGFudDsKICAgICAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgIGhlaWdodDogMnJlbSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmc6IDZweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luOiA4cHggYXV0byAhaW1wb3J0YW50OwogICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgdGVzdGltb25pYWwgcmVzcG9uc2l2ZW5lc3MgKi8KICAgIC50ZXN0aW1vbmlhbC1jb250YWluZXIgewogICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgICAgIHBhZGRpbmc6IDAgMC41cmVtOwogICAgICAgIG1hcmdpbjogMCBhdXRvIDEuNXJlbTsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLW5hdiB7CiAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtbmF2LnByZXYtYnRuIHsKICAgICAgICBsZWZ0OiA1cHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1uYXYubmV4dC1idG4gewogICAgICAgIHJpZ2h0OiA1cHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1jYXJkIHsKICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdmF0YXIgewogICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgIGhlaWdodDogMzVweDsKICAgIH0KICAgIAogICAgLnRlc3RpbW9uaWFsLXF1b3RlIHsKICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgfQogICAgCiAgICAudGVzdGltb25pYWwtYXV0aG9yLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItY29tcGFueSB7CiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1kb3RzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgZ2FwOiAwLjVyZW07CiAgICB9CiAgICAKICAgIC50ZXN0aW1vbmlhbC1kb3RzIC5kb3QgewogICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICB9CiAgICAKICAgIC5mZWF0dXJlcy1ncmlkLCAucG9zc2liaWxpdGllcy1ncmlkLCAuY2FwYWJpbGl0aWVzLWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgZ2FwOiAxcmVtICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEFkanVzdCB0b3AgbWFyZ2luIGZvciB2ZXJ5IHNtYWxsIHNjcmVlbnMgLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICBib2R5IHsKICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgfQogICAgCiAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBmdXJ0aGVyIG9uIHNtYWxsIHNjcmVlbnMgKi8KICAgICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgfQp9Cgpib2R5IHsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLyogSGlkZSBtYWluIHBhZ2Ugc2Nyb2xsYmFyIHdoZW4gYXBwIGlzIGFjdGl2ZSAqLwpib2R5LmFwcC1hY3RpdmUgewogICAgLyogb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGhlaWdodDogMTAwdmg7ICovCiAgICBtaW4taGVpZ2h0OiAxMDB2aDsKfQoKLyogTW9iaWxlIGJvZHkgaGFuZGxpbmcgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7CiAgICBib2R5LmFwcC1hY3RpdmUgewogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgIH0KfQoKLyogRGVza3RvcCBzY3JlZW5zIGFib3ZlIDc2OHB4IC0gcmVtb3ZlIHdoaXRlIHNwYWNlcyAqLwpAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHsKICAgIC5oZWFkZXIgewogICAgICAgIHdpZHRoOiAxMDB2dzsKICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKTsKICAgICAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICB9CiAgICAKICAgIC5jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgIH0KICAgIAogICAgLmhlYWRlci1mbGV4IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICB9Cn0KCi5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKfQoKLmhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgei1pbmRleDogMTAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICBkaXNwbGF5OiBub25lOyAvKiBIaWRkZW4gYnkgZGVmYXVsdCBvbiBsYW5kaW5nIHBhZ2UgKi8KICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgYm94LXNoYWRvdzogMCAycHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICB3aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMDsKfQoKLyogU2hvdyBoZWFkZXIgb25seSB3aGVuIGNvbnZlcnNhdGlvbiBoYXMgc3RhcnRlZCAqLwpib2R5LmFwcC1hY3RpdmUgLmhlYWRlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi8qIEZ1bGwtd2lkdGggaGVhZGVyIGZpeCBvbmx5IHdoZW4gYXBwIGlzIGFjdGl2ZSAoZHVyaW5nIGdlbmVyYXRpb24pIC0gYWJvdmUgMTAyNHB4ICovCkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyLAogICAgYm9keS5hcHAtYWN0aXZlICN3cmFwcGVyIC5oZWFkZXIsCiAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi13cmFwcGVyIC5oZWFkZXIsCiAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi1wYWdlLXdyYXBwZXIgLmhlYWRlciwKICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlci1yb3cgLmhlYWRlciB7CiAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDFyZW0gKyA1MHB4KSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi10b3A6IC01MHB4ICFpbXBvcnRhbnQ7CiAgICB9Cn0KCi5oZWFkZXItZmxleCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoubG9nby1ncm91cCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwp9CgoubG9nby1ncm91cDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwp9CgoubG9nby1pY29uIHsKICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB0ZXh0LXNoYWRvdzogMCAwIDEwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7Cn0KCi5sb2dvLXRleHQgewogICAgZm9udC1zaXplOiAxLjVyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoKLmxvZ28tdGV4dCAuYm9sZCB7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLmhlYWRlci1yaWdodCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIHBhZGRpbmc6IDZweCAxMnB4OwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMjBweDsKfQoKLmdpdGh1Yi1idG4gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDVweDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKfQoKLmRvd25sb2FkLWJ0biB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcGFkZGluZzogOHB4IDEycHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjMzU3YWJkKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBtaW4td2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDM2cHg7CiAgICB6LWluZGV4OiA5OTk5OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZG93bmxvYWQtYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNTdhYmQsICMyYTZhYTApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLmRvd25sb2FkLWJ0bjphY3RpdmUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwp9CgouZGVwbG95LW5ldGxpZnktYnRuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1pbi13aWR0aDogNDBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBnYXA6IDZweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouZGVwbG95LW5ldGxpZnktYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwp9CgouZGVwbG95LW5ldGxpZnktYnRuOmFjdGl2ZSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7Cn0KCi8qIFNldCBUb2tlbiBidXR0b24gc3R5bGVkIHRvIG1hdGNoIERlcGxveSB0byBOZXRsaWZ5ICovCi5zZXQtdG9rZW4tYnRuIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHdoaXRlOwogICAgZm9udC1zaXplOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgIG1pbi13aWR0aDogNDBweDsKICAgIGhlaWdodDogMzZweDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBnYXA6IDZweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Cgouc2V0LXRva2VuLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5NDdmLCAjMDBiMzk0KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAxNzMsIDE1OSwgMC4zKTsKfQoKLnNldC10b2tlbi1idG46YWN0aXZlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKfQoKLmRvd25sb2FkLWljb24gewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLnBvd2VyZWQtcGlsbCB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXJnaW46IDJyZW0gYXV0bzsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAvKiBNZXJnZWQgZGFyayB0aGVtZSBzdHlsZXMgKi8KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKfQoKLm1haW4taGVhZGluZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBmb250LXNpemU6IDIuN3JlbTsKICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7Cn0KCi8qIFR5cGluZyBhbmltYXRpb24gc3R5bGVzICovCiNhbmltYXRlZC13b3JkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgojYW5pbWF0ZWQtd29yZDo6YWZ0ZXIgewogICAgY29udGVudDogJ3wnOwogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgYW5pbWF0aW9uOiBibGluayAxcyBpbmZpbml0ZTsKICAgIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCkBrZXlmcmFtZXMgYmxpbmsgewogICAgMCUsIDUwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDUxJSwgMTAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KfQoKQGtleWZyYW1lcyB0eXBld3JpdGVyIHsKICAgIGZyb20gewogICAgICAgIHdpZHRoOiAwOwogICAgfQogICAgdG8gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgfQp9CgoubWFpbi1oZWFkaW5nIC5ibHVlIHsKICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKfQoKLyogTGFuZGluZyBwYWdlIGlucHV0IHN0eWxpbmcgLSBFeHRlbmRlZCB0b3AgYW5kIGJvdHRvbSBjb3ZlcmFnZSAqLwojbGFuZGluZ1NlY3Rpb24gewogICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIzMHB4KSAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBhZGRpbmc6IDgwcHggMCAxNTBweCAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAtODBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIEFuaW1hdGVkIHN0YXJyeSBiYWNrZ3JvdW5kICovCiNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMDBweCk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCAyMHB4IDMwcHgsICM0YTkwZTIsIHRyYW5zcGFyZW50KSwKICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCA0MHB4IDcwcHgsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjgpLCB0cmFuc3BhcmVudCksCiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgOTBweCA0MHB4LCAjNmI3M2ZmLCB0cmFuc3BhcmVudCksCiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgMTMwcHggODBweCwgcmdiYSgxMDcsIDExNSwgMjU1LCAwLjYpLCB0cmFuc3BhcmVudCksCiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgMTYwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsKICAgIGJhY2tncm91bmQtc2l6ZTogMjAwcHggMTAwcHg7CiAgICBhbmltYXRpb246IHR3aW5rbGUgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlOwogICAgei1pbmRleDogMDsKfQoKQGtleWZyYW1lcyB0d2lua2xlIHsKICAgIDAlIHsgb3BhY2l0eTogMC4zOyB9CiAgICAxMDAlIHsgb3BhY2l0eTogMC44OyB9Cn0KCi8qIEhlcm8gU2VjdGlvbiAqLwouaGVyby1zZWN0aW9uIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDByZW0gMCAwcmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQouaW5zaWRlLWhlcm8tc2VjdGlvbnsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5oZXJvLWljb24gewogICAgZm9udC1zaXplOiAzcmVtOwogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgY29sb3I6ICM0YTkwZTI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBhbmltYXRpb246IGZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwp9CgouaGVyby1pY29uIGltZyB7CiAgICB3aWR0aDogNHJlbTsKICAgIGhlaWdodDogMi41cmVtOwogICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgpAa2V5ZnJhbWVzIGZsb2F0IHsKICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7IH0KICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7IH0KfQoKLmhlcm8tdGl0bGUgewogICAgZm9udC1zaXplOiAzLjVyZW07CiAgICBmb250LXdlaWdodDogNzAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBsaW5lLWhlaWdodDogMS4yOwogICAgdGV4dC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwp9CgouaGVyby1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDEuM3JlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouaGVyby1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgbWF4LXdpZHRoOiA1MDBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgovKiBVcGRhdGUgaW5wdXQgc2VjdGlvbiBmb3IgZGFyayB0aGVtZSAqLwojbGFuZGluZ1NlY3Rpb24gLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIC8qIE1lcmdlZCBzdHlsZXMgKi8KICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICBtYXgtd2lkdGg6IDcwMHB4Owp9CgojbGFuZGluZ1NlY3Rpb24gLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgIHBhZGRpbmc6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKfQoKI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDA7CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgcmVzaXplOiBub25lOwogICAgbWluLWhlaWdodDogNjBweDsKICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgb3V0bGluZTogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgojbGFuZGluZ1NlY3Rpb24gLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMnB4IDEycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBtaW4taGVpZ2h0OiA1MHB4OwogICAgZ2FwOiAxMnB4OwogICAgLyogTWVyZ2VkL3VwZGF0ZWQgc3R5bGVzICovCiAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7Cn0KCiNsYW5kaW5nU2VjdGlvbiAucHJvbXB0LWlucHV0OjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwp9CgouZ2VuZXJhdGUtY29kZS1idG4gewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzRhOTBlMiwgIzZiNzNmZikgIWltcG9ydGFudDsKICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgIG1pbi13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTUwcHggIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMykgIWltcG9ydGFudDsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50Owp9CgouZ2VuZXJhdGUtY29kZS1idG46aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjQpICFpbXBvcnRhbnQ7Cn0KCi8qIEZlYXR1cmVzIEdyaWQgKi8KLmZlYXR1cmVzLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgZ2FwOiAycmVtOwogICAgbWFyZ2luOiA0cmVtIDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9CgouZmVhdHVyZS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMnJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgouZmVhdHVyZS1jYXJkOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAtMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSksIHRyYW5zcGFyZW50KTsKICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlOwp9CgouZmVhdHVyZS1jYXJkOmhvdmVyOjpiZWZvcmUgewogICAgbGVmdDogMTAwJTsKfQoKLmZlYXR1cmUtY2FyZDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7Cn0KCi5mZWF0dXJlLWljb24gewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBjb2xvcjogIzRhOTBlMjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5mZWF0dXJlLWljb24gaW1nIHsKICAgIHdpZHRoOiAyLjVyZW07CiAgICBoZWlnaHQ6IDIuNXJlbTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLyogQWdncmVzc2l2ZSBXb3JkUHJlc3Mgd2hpdGUgc3BhY2UgcmVtb3ZhbCAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXItZmxleCwKYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIgewogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIHJlbW92ZSBhbnkgV29yZFByZXNzIGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgI21haW4sCmJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LWJveGVkLW1vZGUgI21haW4sCmJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtd2lkZS1tb2RlICN3cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQgewogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIGFueSBXb3JkUHJlc3MgdGhlbWUgcGFkZGluZy9tYXJnaW5zICovCmJvZHkucGFnZS1pZC01OTM2MyAqIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKfQoKLyogVGFyZ2V0IHNwZWNpZmljIFdvcmRQcmVzcyB0aGVtZSBlbGVtZW50cyBjYXVzaW5nIHdoaXRlIHNwYWNlcyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlci13cmFwcGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1zZWNvbmRhcnktaGVhZGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1tYWluLWhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIC5hdmFkYS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLXdyYXBwZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAubWFpbi1oZWFkZXIgewogICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBjb250YWluZXIgcGFkZGluZyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLXJvdywKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tY29sdW1uLApib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdywKYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1jb2x1bW4gewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi8qIEZvcmNlIGhlYWRlciB0byBicmVhayBvdXQgb2YgYW55IGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwpib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXIgKiwKYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciAqIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBPdmVycmlkZSBXb3JkUHJlc3MgYmFja2dyb3VuZCBjb2xvciBmb3IgbWFpbiBlbGVtZW50cyAqLwojbWFpbiwgCi5sYXlvdXQtYm94ZWQtbW9kZSAjbWFpbiwgCi5sYXlvdXQtYm94ZWQtbW9kZS5hdmFkYS1mb290ZXItZngtc3RpY2t5IC5hYm92ZS1mb290ZXItd3JhcHBlciwgCi5sYXlvdXQtYm94ZWQtbW9kZS5hdmFkYS1mb290ZXItZngtc3RpY2t5LXdpdGgtcGFyYWxsYXgtYmctaW1hZ2UgLmFib3ZlLWZvb3Rlci13cmFwcGVyLCAKLmxheW91dC13aWRlLW1vZGUgI21haW4sIAoubGF5b3V0LXdpZGUtbW9kZSAjd3JhcHBlciwgCmJvZHksIApodG1sLCAKaHRtbCBib2R5LmN1c3RvbS1iYWNrZ3JvdW5kIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKLyogRml4IFdvcmRQcmVzcyB0ZW1wbGF0ZSBlbGVtZW50cyAtIHJlbW92ZSB1bndhbnRlZCBsaW5lcyBhbmQgYmFja2dyb3VuZHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzICogewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFJlbW92ZSB3aGl0ZSBsaW5lIGF0IHRvcCBvZiBXb3JkUHJlc3MgaW50ZXJmYWNlICovCmJvZHkucGFnZS1pZC01OTM2Mzo6YmVmb3JlLApib2R5LnBhZ2UtaWQtNTkzNjM6OmFmdGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgKjo6YmVmb3JlLApib2R5LnBhZ2UtaWQtNTkzNjMgKjo6YWZ0ZXIgewogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgdG9wIGJvcmRlcnMgYW5kIGxpbmVzIGZyb20gV29yZFByZXNzIGVsZW1lbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyBib2R5LApib2R5LnBhZ2UtaWQtNTkzNjMgaHRtbCwKYm9keS5wYWdlLWlkLTU5MzYzICNwYWdlLApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1oZWFkZXIsCmJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1tYWluLApib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtZm9vdGVyLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLXNpdGUtYmxvY2tzLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWdyb3VwLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWNvbnRhaW5lciB7CiAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogUmVtb3ZlIHNwZWNpZmljIGJvcmRlcnMgZnJvbSBXb3JkUHJlc3MgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIGRpdiwKYm9keS5wYWdlLWlkLTU5MzYzIHNlY3Rpb24sCmJvZHkucGFnZS1pZC01OTM2MyBhcnRpY2xlLApib2R5LnBhZ2UtaWQtNTkzNjMgbWFpbiwKYm9keS5wYWdlLWlkLTU5MzYzIGhlYWRlciwKYm9keS5wYWdlLWlkLTU5MzYzIGZvb3RlciwKYm9keS5wYWdlLWlkLTU5MzYzIG5hdiwKYm9keS5wYWdlLWlkLTU5MzYzIGFzaWRlIHsKICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsKICAgIGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgYmFja2dyb3VuZHMgZnJvbSBXb3JkUHJlc3MgdGVtcGxhdGUgZWxlbWVudHMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC53cC1jb250YWluZXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stZ3JvdXAsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stY29sdW1uLApib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWNvbHVtbnMsCmJvZHkucGFnZS1pZC01OTM2MyAuZW50cnktY29udGVudCwKYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQsCmJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudC1hcmVhIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgovKiBSZW1vdmUgV29yZFByZXNzIGFkbWluIGJhciBhbmQgdG9wIGVsZW1lbnRzICovCmJvZHkucGFnZS1pZC01OTM2MyAjd3BhZG1pbmJhciwKYm9keS5wYWdlLWlkLTU5MzYzIC5hZG1pbi1iYXIsCmJvZHkucGFnZS1pZC01OTM2MyAud3AtYWRtaW4tYmFyLApib2R5LnBhZ2UtaWQtNTkzNjMgW2lkKj0iYWRtaW4iXSwKYm9keS5wYWdlLWlkLTU5MzYzIFtjbGFzcyo9ImFkbWluIl0gewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgovKiBGb3JjZSByZW1vdmUgYW55IHRvcC1sZXZlbCBib3JkZXJzICovCmJvZHkucGFnZS1pZC01OTM2MyA+ICogewogICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBtb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZml4ZXMgLSBpbmNyZWFzZWQgKi8KYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA4MDBweCkgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKfQoKYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgODAwcHgpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7Cn0KCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcyBtb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZXh0ZW5zaW9uIC0gaW5jcmVhc2VkICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KICAgIAogICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIHsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICB9CiAgICAKICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAyMDBweCkgIWltcG9ydGFudDsKICAgIH0KfQoKLyogQWRkaXRpb25hbCBXb3JkUHJlc3Mgb3ZlcnJpZGVzIGZvciBmZWF0dXJlIGNhcmRzICovCmJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktY2FyZCBoMywKYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS1jYXJkIGgzIHsKICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7Cn0KCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBoZWFkaW5nIGNvbG9yIGZpeGVzICovCi8qIFdvcmRQcmVzcy1zcGVjaWZpYyBoZWFkaW5nIGNvbG9yIGZpeGVzIC0gb25seSBmb3Igb3VyIGFwcCBjb250ZW50ICovCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDEsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDIsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDMsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDQsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDUsCmJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDYsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMSwKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgyLApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDMsCmJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNCwKYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg1LApib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDYgewogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKfQoKLyogU3BlY2lmaWMgV29yZFByZXNzIG92ZXJyaWRlcyBmb3IgZmVhdHVyZSB0aXRsZXMgKi8KYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLXRpdGxlLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktdGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAucG9zc2liaWxpdHktdGl0bGUsCmJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS1jYXJkIGgzLApib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktY2FyZCBoMywKYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS1jYXJkIGgzIHsKICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7Cn0KCi8qIEVuc3VyZSBmZWF0dXJlIHRpdGxlcyBhcmUgYmx1ZSBpbiBXb3JkUHJlc3MgKi8KLmZlYXR1cmUtdGl0bGUgewogICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKfQoKLmZlYXR1cmUtZGVzY3JpcHRpb24gewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi8qIEZ1c2lvbiBCdWlsZGVyIGFuZCBXb3JkUHJlc3MgaDEgY29sb3Igb3ZlcnJpZGUgKi8KZnVzaW9uLW1vZGFsIGgxLCAuZnVzaW9uLXBvc3QtY29udGVudCBoMSwgLmZ1c2lvbi10Yi1mb290ZXIgaDEsIC5mdXNpb24tdGItcGFnZS10aXRsZS1iYXIgaDEsIC5mdXNpb24td2lkZ2V0LWFyZWEgaDEsIC5wb3N0LWNvbnRlbnQgaDEsIC5zZWFyY2gtcGFnZS1zZWFyY2gtZm9ybSBoMSwgLnRpdGxlIGgxLCBoMSB7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50Owp9CgovKiBGdXNpb24gQnVpbGRlciBhbmQgV29yZFByZXNzIGgzIGNvbG9yIG92ZXJyaWRlICovCi5mdXNpb24tYXV0aG9yIC5mdXNpb24tYXV0aG9yLXRpdGxlLCAuZnVzaW9uLW1vZGFsIC5tb2RhbC10aXRsZSwgLmZ1c2lvbi13aWRnZXQtYXJlYSBoMywgLnBvc3QtY29udGVudCBoMywgLnByb2plY3QtY29udGVudCBoMywgLnNpZGViYXIgLndpZGdldCBoMywgLm1haW4tZmxleCAuc2xpZGUtY29udGVudCBoMywgaDMgewogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKfQoKLnF1aWNrLWFwcHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGdhcDogMXJlbTsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLXRvcDogM3JlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5xdWljay1hcHAtYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtOwogICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpOwp9CgoucXVpY2stYXBwLWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKfQoKLyogSG93IEl0IFdvcmtzIFNlY3Rpb24gKi8KLmhvdy1pdC13b3Jrcy1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiAxMDAwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5ob3ctaXQtd29ya3MtdGl0bGUgewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9CgouaG93LWl0LXdvcmtzLXN1YnRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi50ZXh0LXdoaXRlewogICAgY29sb3I6IHdoaXRlOwp9Cgouc3RlcHMtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDJyZW07CiAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgd2lkdGg6IDEwMCU7CiAgICBwYWRkaW5nOiAwIDFyZW07CiAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5zdGVwLWNhcmQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICBwYWRkaW5nOiAycmVtIDEuNXJlbTsKICAgIG1heC13aWR0aDogMjgwcHg7CiAgICBmbGV4OiAxOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLnN0ZXAtY2FyZDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLnN0ZXAtbnVtYmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTE1cHg7CiAgICBsZWZ0OiAtNXB4OwogICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHdpZHRoOiAzNXB4OwogICAgaGVpZ2h0OiAzNXB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1zaXplOiAwLjlyZW07Cn0KCi5zdGVwLWljb24gewogICAgZm9udC1zaXplOiAyLjVyZW07CiAgICBtYXJnaW46IDFyZW0gMDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9Cgouc3RlcC1pY29uIGltZyB7CiAgICB3aWR0aDogMi41cmVtOwogICAgaGVpZ2h0OiAyLjVyZW07CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDAgYXV0bzsKfQoKLnN0ZXAtdGl0bGUgewogICAgZm9udC1zaXplOiAxLjNyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9Cgouc3RlcC1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnN0ZXAtYXJyb3cgewogICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgZm9udC1zaXplOiAycmVtOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmbGV4OiAwIDAgYXV0bzsKfQoKLnRyeS1ub3ctYnRuIHsKICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBwYWRkaW5nOiAxcmVtIDIuNXJlbTsKICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICBmb250LXNpemU6IDFyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg0MiwgNjUsIDIzMSwgMC4zKTsKfQoKLnRyeS1ub3ctYnRuOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6ICMxZTJlYjM7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNDIsIDY1LCAyMzEsIDAuNCk7Cn0KCi8qIEVuZGxlc3MgUG9zc2liaWxpdGllcyBTZWN0aW9uICovCi5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiB7CiAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICBwYWRkaW5nOiAwIDJyZW07Cn0KCi5lbmRsZXNzLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNvbG9yOiAjZmZmZmZmOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKfQoKLmVuZGxlc3Mtc3VidGl0bGUgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgIG1heC13aWR0aDogNzAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnBvc3NpYmlsaXRpZXMtZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNDBweCwgMWZyKSk7CiAgICBnYXA6IDFyZW07CiAgICBtYXJnaW4tYm90dG9tOiA1cmVtOwp9CgoucG9zc2liaWxpdHktY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5wb3NzaWJpbGl0eS1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMik7Cn0KCi5wb3NzaWJpbGl0eS1pY29uIHsKICAgIHdpZHRoOiA0OHB4OwogICAgaGVpZ2h0OiA0OHB4OwogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAxLjVyZW07CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKfQoKLnBvc3NpYmlsaXR5LWljb24gaW1nIHsKICAgIHdpZHRoOiAyNHB4OwogICAgaGVpZ2h0OiAyNHB4OwogICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgoucG9zc2liaWxpdHktdGl0bGUgewogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07Cn0KCi5wb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnBvcHVsYXItcHJvbXB0cy1zZWN0aW9uIHsKICAgIG1hcmdpbi10b3A6IDRyZW07Cn0KCi5wb3B1bGFyLXByb21wdHMtdGl0bGUgewogICAgZm9udC1zaXplOiAxLjhyZW07CiAgICBmb250LXdlaWdodDogNjAwOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICBtYXJnaW4tYm90dG9tOiAycmVtOwp9CgoucG9wdWxhci1wcm9tcHRzLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzIwcHgsIDFmcikpOwogICAgZ2FwOiAxcmVtOwogICAgbWF4LXdpZHRoOiAxMDAwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKfQoKLnBvcHVsYXItcHJvbXB0LWJ0biB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBhZGRpbmc6IDFyZW0gMC41cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5wb3B1bGFyLXByb21wdC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgY29sb3I6ICNmZmZmZmY7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7Cn0KCi8qIFNlZSBJdCBJbiBBY3Rpb24gU2VjdGlvbiAqLwouc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uIHsKICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIHBhZGRpbmc6IDAgMnJlbTsKfQoKLmFjdGlvbi10aXRsZSB7CiAgICBmb250LXNpemU6IDIuNXJlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5hY3Rpb24tc3VidGl0bGUgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgIG1heC13aWR0aDogNzAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLmRlbW8tdGFicyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgZ2FwOiAwOwogICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogNHB4OwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgbWF4LXdpZHRoOiAyNTBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwp9CgouZGVtby10YWIgewogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXI6IG5vbmU7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJTsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIGdhcDogMC41cmVtOwogICAgZmxleDogMTsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWluLXdpZHRoOiAxOTVweDsKfQoKLmRlbW8tdGFiOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwp9CgouZGVtby10YWIuYWN0aXZlIHsKICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSg0MiwgNjUsIDIzMSwgMC4zKTsKfQoKLnRhYi1pY29uIHsKICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi50YWItaWNvbiBpbWcgewogICAgd2lkdGg6IDE2cHg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi50YWItdGV4dCB7CiAgICBmb250LXdlaWdodDogNTAwOwp9CgouZGVtby1jb250ZW50IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1pbi1oZWlnaHQ6IDYwMHB4Owp9CgouZGVtby1wYW5lIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7Cn0KCi5kZW1vLXBhbmUuYWN0aXZlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgb3BhY2l0eTogMTsKfQoKLmRlbW8tcHJvbXB0IHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgcGFkZGluZzogMS4ycmVtIDEuNXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKICAgIG1heC13aWR0aDogNjAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLnByb21wdC1pY29uIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgcGFkZGluZzogMC41cmVtOwogICAgZm9udC1zaXplOiAxLjJyZW07Cn0KCi5kZW1vLXByb21wdCBzcGFuIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICBmb250LXNpemU6IDFyZW07Cn0KCi5kZW1vLWNvZGUtY29udGFpbmVyIHsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7Cn0KCi5jb2RlLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9CgouY29kZS1kb3RzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDAuNXJlbTsKfQoKLmRvdCB7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmRvdC5yZWQgewogICAgYmFja2dyb3VuZDogI2ZmNWY1NjsKfQoKLmRvdC55ZWxsb3cgewogICAgYmFja2dyb3VuZDogI2ZmYmQyZTsKfQoKLmRvdC5ncmVlbiB7CiAgICBiYWNrZ3JvdW5kOiAjMjdjYTNmOwp9CgouY29kZS10aXRsZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKfQoKLmNvcHktYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICBwYWRkaW5nOiAwLjRyZW0gMC44cmVtOwogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5jb3B5LWJ0bjpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgIGNvbG9yOiB3aGl0ZTsKfQoKLmNvZGUtaW1hZ2UtY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDFyZW07CiAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwp9CgouY29kZS1pbWFnZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKfQoKLyogTW9iaWxlIFVJIERlbW8gU3R5bGVzICovCi5jb2RlLXByZXZpZXcgewogICAgcGFkZGluZzogMnJlbTsKICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgbWluLWhlaWdodDogNDAwcHg7Cn0KCi5tb2JpbGUtbW9ja3VwIHsKICAgIGJhY2tncm91bmQ6ICMyZDJkMmQ7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMnJlbTsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoKLnByb2ZpbGUtY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgIHBhZGRpbmc6IDJyZW07CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICB3aWR0aDogMjUwcHg7Cn0KCi5wcm9maWxlLWF2YXRhciB7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogODBweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJsdWUtY29sb3IpOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgIG1hcmdpbjogMCBhdXRvIDFyZW07Cn0KCi5wcm9maWxlLWNhcmQgaDMgewogICAgY29sb3I6IHdoaXRlOwogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgZm9udC1zaXplOiAxLjJyZW07Cn0KCi5wcm9maWxlLWNhcmQgcCB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgZm9udC1zaXplOiAwLjlyZW07Cn0KCi5wcm9maWxlLWJ0biB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICBwYWRkaW5nOiAwLjhyZW0gMnJlbTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgoucHJvZmlsZS1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogIzNhN2JjODsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKfQoKLyogTW9yZSBDYXBhYmlsaXRpZXMgU2VjdGlvbiAqLwoubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiB7CiAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICBwYWRkaW5nOiA0cmVtIDJyZW07CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIDEwMCUpOwogICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKfQouZmxleHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDFyZW07Cn0KCi5tb3JlLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogM3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKfQoKLm1vcmUtc3VidGl0bGUgewogICAgZm9udC1zaXplOiAxLjFyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgIG1heC13aWR0aDogNjAwcHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLmNhcGFiaWxpdGllcy1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgZ2FwOiAycmVtOwogICAgbWFyZ2luLXRvcDogMnJlbTsKfQoKLmNhcGFiaWxpdHktY2FyZCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuOCk7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgcGFkZGluZzogMi41cmVtIDJyZW07CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5jYXBhYmlsaXR5LWNhcmQ6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMikgMTAwJSk7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7CiAgICBib3JkZXItcmFkaXVzOiAxNnB4Owp9CgouY2FwYWJpbGl0eS1jYXJkOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKfQoKLmNhcGFiaWxpdHktY2FyZDpob3Zlcjo6YmVmb3JlIHsKICAgIG9wYWNpdHk6IDE7Cn0KCi5jYXBhYmlsaXR5LWljb24gewogICAgd2lkdGg6IDY0cHg7CiAgICBoZWlnaHQ6IDY0cHg7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMTsKfQoKLndlYi1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9Cgoud2ViLWljb24gaW1nIHsKICAgIHdpZHRoOiA2MCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogNjAlICFpbXBvcnRhbnQ7Cn0KCi5weXRob24taWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmRhdGEtaWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmFwaS1pY29uIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwp9CgoubW9iaWxlLWljb24gewogICAgYmFja2dyb3VuZDogd2hpdGU7Cn0KCi5kZXZvcHMtaWNvbiB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKfQoKLmNhcGFiaWxpdHktaWNvbiBpbWcgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgYm9yZGVyLXJhZGl1czogOHB4Owp9CgouY2FwYWJpbGl0eS10aXRsZSB7CiAgICBmb250LXNpemU6IDEuM3JlbTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBjb2xvcjogI2ZmZmZmZjsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiAxOwp9CgouY2FwYWJpbGl0eS1kZXNjcmlwdGlvbiB7CiAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi8qIEdyYWRpZW50IFRleHQgKi8KLmdyYWRpZW50LXRleHQgewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCA0NWRlZywgI2ZmOGE4MCwgIzgwZGVlYSwgIzgxZDRmYSwgI2E1ZDZhNywgI2ZmZjU5ZCwgI2UxYmVlNywgI2IyZGZkYiApOwogICAgYmFja2dyb3VuZC1zaXplOiA0MDAlIDQwMCU7IGJhY2tncm91bmQtY2xpcDogdGV4dDsgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7IGFuaW1hdGlvbjogZ3JhZGllbnRGbG93IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7IGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQpAa2V5ZnJhbWVzIGdyYWRpZW50RmxvdyB7IDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9IDI1JSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgNTAlOyB9IDUwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTAwJTsgfSA3NSUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAxMDAlOyB9IDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7IH0gfQoKLyogRm9vdGVyICovCi5mb290ZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwOwogICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgcGFkZGluZzogMC42cmVtIDJyZW07CiAgICBmb250LXNpemU6IDAuODVyZW07CiAgICBtYXJnaW4tdG9wOiBhdXRvOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICBvcGFjaXR5OiAxOwp9Ci5mb290ZXItbGVmdCBhIHsgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KLmZvb3Rlci1yaWdodCB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTJweDsgfQouZm9vdGVyLWljb24geyBmb250LXNpemU6IDEuM3JlbTsgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsgfQouZm9vdGVyLWljb246aG92ZXIgeyBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7IH0KCi8qIC0tLSBDSEFUICYgQVBQIElOVEVSRkFDRSBTVFlMRVMgLS0tICovCgovKiBJbml0aWFsbHkgaGlkZSBjaGF0IGludGVyZmFjZSAqLwojY2hhdEludGVyZmFjZSB7CiAgICBkaXNwbGF5OiBub25lOwp9CgovKiBDaGF0IGludGVyZmFjZSBjb250YWluZXIgKi8KLmNoYXQtaW50ZXJmYWNlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgaGVpZ2h0OiAxMDAlOyAvKiBDaGFuZ2VkIGZyb20gY2FsYygpIHRvIHRha2UgZnVsbCBoZWlnaHQgb2YgcGFyZW50ICovCiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNvbG9yKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouY2hhdC1tZXNzYWdlcyB7CiAgICBmbGV4OiAxOwogICAgcGFkZGluZzogMjRweDsKICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGdhcDogMThweDsKICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgbWF4LWhlaWdodDogNjB2aDsKfQoKLmNoYXQtbWVzc2FnZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgZ2FwOiAxMnB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLmNoYXQtbWVzc2FnZS51c2VyIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKfQoKLmNoYXQtbWVzc2FnZSAuYXZhdGFyIHsKICAgIGZvbnQtc2l6ZTogMS43cmVtOwogICAgbWFyZ2luLWJvdHRvbTogMnB4Owp9CgovKiBDb25zb2xpZGF0ZWQgQ2hhdCBCdWJibGUgU3R5bGVzICovCi5jaGF0LWJ1YmJsZSB7CiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgICBtYXJnaW46IDEwcHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZm9udC1zaXplOiAxLjA1cmVtOwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgbWF4LXdpZHRoOiA5MCU7Cn0KCi5jaGF0LWJ1YmJsZS51c2VyIHsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICBjb2xvcjogd2hpdGU7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwogICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7Cn0KCi5jaGF0LWJ1YmJsZS51c2VyOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICByaWdodDogLThweDsKICAgIHdpZHRoOiA4cHg7CiAgICBoZWlnaHQ6IDhweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMCUgMTAwJSwgMTAwJSAxMDAlKTsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwp9CgovKiBJbnB1dCBjb250YWluZXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY2hhdCB2aWV3ICovCi5pbnB1dC1jb250YWluZXIgewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGJvdHRvbTogMDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN1cmZhY2UtY29sb3IpOwogICAgcGFkZGluZzogMTBweCAyMHB4OwogICAgei1pbmRleDogMTAwMDsKICAgIHdpZHRoOiAxMDAlOwogICAgYm94LXNoYWRvdzogMCAtMnB4IDEwcHggdmFyKC0tc2hhZG93KTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCiNjaGF0SW50ZXJmYWNlIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWlucHV0LWJnKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlcik7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgYm94LXNoYWRvdzogMCAycHggMTZweCB2YXIoLS1zaGFkb3cpOwogICAgd2lkdGg6IDEwMCU7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIHBhZGRpbmc6IDA7CiAgICBnYXA6IDA7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCiNjaGF0SW50ZXJmYWNlIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICBtaW4taGVpZ2h0OiA0NnB4OwogICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKfQoKI2NoYXRJbnRlcmZhY2UgLnN1Ym1pdC1idG46aG92ZXIgewogICAgYmFja2dyb3VuZDogIzNhODBkMjsKfQoKLyogTG9hZGluZyBCb3ggU3R5bGVzICovCi5sb2FkaW5nLWJveCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMCwgMCwgMCwgMC45NSkgMCUsIHJnYmEoMjAsIDIwLCAyMCwgMC45OCkgMTAwJSk7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgYm94LXNoYWRvdzogMCAxMnB4IDQ4cHggcmdiYSgwLCAwLCAwLCAwLjQpLCAwIDAgMCAxcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICB3aWR0aDogNzAlOwogICAgbWF4LXdpZHRoOiA0NTBweDsKICAgIG1pbi1oZWlnaHQ6IDE0MHB4OwogICAgbWFyZ2luOiAycmVtIGF1dG87CiAgICBwYWRkaW5nOiA0MHB4IDMwcHggMzVweCAzMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTk5OTsKICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICBhbmltYXRpb246IGxvYWRpbmdCb3hFbnRyYW5jZSAwLjdzIGVhc2Utb3V0LCBsb2FkaW5nQm94UHVsc2UgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgoubG9hZGluZy1ib3g6OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IC0xMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgYW5pbWF0aW9uOiBsb2FkaW5nU2hpbW1lciAycyBpbmZpbml0ZTsKICAgIHotaW5kZXg6IDE7Cn0KCi5sb2FkaW5nLWJveDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgaGVpZ2h0OiAzcHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICM0YTkwZTIsICMzNTdhYmQsICM0YTkwZTIpOwogICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDEwMCU7CiAgICBhbmltYXRpb246IGxvYWRpbmdQcm9ncmVzcyAyLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlLCBncmFkaWVudE1vdmUgMS41cyBsaW5lYXIgaW5maW5pdGU7CiAgICBib3JkZXItcmFkaXVzOiAwIDAgMjBweCAyMHB4OwogICAgei1pbmRleDogMjsKfQoKLmxvYWRpbmctb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDAsIDAsIDAsIDAuOTcpIDAlLCByZ2JhKDIwLCAyMCwgMjAsIDAuOTkpIDEwMCUpOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiAxMDAwOwogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE1cHgpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLyogSGktdGVjaCBsb2FkaW5nIGFuaW1hdGlvbiAqLwouaGl0ZWNoLWxvYWRlciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMjAwcHg7CiAgICBoZWlnaHQ6IDIwMHB4OwogICAgbWFyZ2luOiAyMHB4IGF1dG87Cn0KCi8qIENvZGUgTWF0cml4IEVmZmVjdCAqLwouY29kZS1tYXRyaXggewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLm1hdHJpeC1saW5lIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAycHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCAwJSwgIzAwZmY0MSA1MCUsIHRyYW5zcGFyZW50IDEwMCUpOwogICAgYW5pbWF0aW9uOiBtYXRyaXhSYWluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIG9wYWNpdHk6IDAuNzsKfQoKLm1hdHJpeC1saW5lOm50aC1jaGlsZCgxKSB7IGxlZnQ6IDIwJTsgYW5pbWF0aW9uLWRlbGF5OiAwczsgfQoubWF0cml4LWxpbmU6bnRoLWNoaWxkKDIpIHsgbGVmdDogNDAlOyBhbmltYXRpb24tZGVsYXk6IDAuNHM7IH0KLm1hdHJpeC1saW5lOm50aC1jaGlsZCgzKSB7IGxlZnQ6IDYwJTsgYW5pbWF0aW9uLWRlbGF5OiAwLjhzOyB9Ci5tYXRyaXgtbGluZTpudGgtY2hpbGQoNCkgeyBsZWZ0OiA4MCU7IGFuaW1hdGlvbi1kZWxheTogMS4yczsgfQoubWF0cml4LWxpbmU6bnRoLWNoaWxkKDUpIHsgbGVmdDogMTAwJTsgYW5pbWF0aW9uLWRlbGF5OiAxLjZzOyB9CgovKiBDZW50cmFsIENvcmUgKi8KLmNlbnRyYWwtY29yZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgd2lkdGg6IDgwcHg7CiAgICBoZWlnaHQ6IDgwcHg7Cn0KCi5jb3JlLXJpbmcgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBhbmltYXRpb246IGNvcmVSb3RhdGUgM3MgbGluZWFyIGluZmluaXRlOwp9CgouY29yZS1yaW5nOm50aC1jaGlsZCgxKSB7CiAgICBib3JkZXItdG9wOiAycHggc29saWQgIzRhOTBlMjsKICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICM0YTkwZTI7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDJzOwp9CgouY29yZS1yaW5nOm50aC1jaGlsZCgyKSB7CiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzAwZmY0MTsKICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzAwZmY0MTsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogM3M7CiAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwp9CgouY29yZS1yaW5nOm50aC1jaGlsZCgzKSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmY2YjZiOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiA0czsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC43KTsKfQoKLmNvcmUtY2VudGVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB3aWR0aDogMjBweDsKICAgIGhlaWdodDogMjBweDsKfQoKLnB1bHNlLWRvdCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICM0YTkwZTIgMCUsIHRyYW5zcGFyZW50IDcwJSk7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBhbmltYXRpb246IGNvcmVQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOwp9CgovKiBEYXRhIFN0cmVhbXMgKi8KLmRhdGEtc3RyZWFtcyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KCi5zdHJlYW0gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDFweDsKICAgIGhlaWdodDogNDBweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50IDAlLCAjNGE5MGUyIDUwJSwgdHJhbnNwYXJlbnQgMTAwJSk7CiAgICBhbmltYXRpb246IHN0cmVhbUZsb3cgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKfQoKLnN0cmVhbS0xIHsKICAgIHRvcDogMTAlOwogICAgbGVmdDogMTAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAwczsKICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKfQoKLnN0cmVhbS0yIHsKICAgIHRvcDogMTAlOwogICAgcmlnaHQ6IDEwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMC4zczsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7Cn0KCi5zdHJlYW0tMyB7CiAgICBib3R0b206IDEwJTsKICAgIGxlZnQ6IDEwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMC42czsKICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7Cn0KCi5zdHJlYW0tNCB7CiAgICBib3R0b206IDEwJTsKICAgIHJpZ2h0OiAxMCU7CiAgICBhbmltYXRpb24tZGVsYXk6IDAuOXM7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Cn0KCi8qIEdlb21ldHJpYyBQYXR0ZXJucyAqLwouZ2VvbWV0cmljLXBhdHRlcm5zIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouaGV4LXBhdHRlcm4gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDMwcHg7CiAgICBoZWlnaHQ6IDMwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNGE5MGUyOwogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgYW5pbWF0aW9uOiBoZXhGbG9hdCA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIG9wYWNpdHk6IDAuMzsKfQoKLmhleC1wYXR0ZXJuOm50aC1jaGlsZCgxKSB7CiAgICB0b3A6IDIwJTsKICAgIGxlZnQ6IDIwJTsKICAgIGFuaW1hdGlvbi1kZWxheTogMHM7Cn0KCi5oZXgtcGF0dGVybjpudGgtY2hpbGQoMikgewogICAgdG9wOiA2MCU7CiAgICByaWdodDogMjAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAxLjNzOwogICAgYm9yZGVyLWNvbG9yOiAjMDBmZjQxOwp9CgouaGV4LXBhdHRlcm46bnRoLWNoaWxkKDMpIHsKICAgIGJvdHRvbTogMjAlOwogICAgbGVmdDogNTAlOwogICAgYW5pbWF0aW9uLWRlbGF5OiAyLjZzOwogICAgYm9yZGVyLWNvbG9yOiAjZmY2YjZiOwp9Cgouc2FuZHBhY2std3JhcHBlci5sb2FkaW5nIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLnNhbmRwYWNrLXdyYXBwZXIubG9hZGluZyAubG9hZGluZy1vdmVybGF5IHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbmltYXRpb246IGxvYWRpbmdPdmVybGF5RmFkZUluIDAuNXMgZWFzZS1vdXQ7Cn0KCi5zYW5kcGFjay13cmFwcGVyLmxvYWRpbmcgLnNhbmRwYWNrLWNvbnRhaW5lciB7CiAgICBvcGFjaXR5OiAwLjI7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlOwp9CgoubG9hZGluZy1tZXNzYWdlIHsKICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgIG9wYWNpdHk6IDAuOTU7CiAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgYW5pbWF0aW9uOiB0ZXh0RmFkZUluIDFzIGVhc2Utb3V0LCB0ZXh0QnJlYXRoIDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjhweDsKICAgIHRleHQtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgei1pbmRleDogMzsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmxvYWRpbmctc3Bpbm5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogNTBweDsKICAgIGhlaWdodDogNTBweDsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgei1pbmRleDogMzsKfQoKLmxvYWRpbmctc3Bpbm5lcjo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzRhOTBlMjsKICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkICM0YTkwZTI7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBhbmltYXRpb246IHNwaW5NYWluIDEuNHMgY3ViaWMtYmV6aWVyKDAuNjgsIC0wLjU1LCAwLjI2NSwgMS41NSkgaW5maW5pdGU7CiAgICBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKfQoKLmxvYWRpbmctc3Bpbm5lcjo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDhweDsKICAgIGxlZnQ6IDhweDsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzM1N2FiZDsKICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzM1N2FiZDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGFuaW1hdGlvbjogc3BpblJldmVyc2UgMXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpIGluZmluaXRlOwogICAgb3BhY2l0eTogMC44Owp9CgoubG9hZGluZy1ib3ggLnBhcnRpY2xlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiA2cHg7CiAgICBoZWlnaHQ6IDZweDsKICAgIGJhY2tncm91bmQ6ICM0YTkwZTI7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBvcGFjaXR5OiAwLjc7CiAgICB6LWluZGV4OiAyOwp9Ci5sb2FkaW5nLWJveCAucGFydGljbGU6bnRoLWNoaWxkKDEpIHsgdG9wOiAxNSU7IGxlZnQ6IDEwJTsgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlMSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfQoubG9hZGluZy1ib3ggLnBhcnRpY2xlOm50aC1jaGlsZCgyKSB7IHRvcDogMjAlOyByaWdodDogMTUlOyBhbmltYXRpb246IGZsb2F0UGFydGljbGUyIDMuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgMC41czsgYmFja2dyb3VuZDogIzM1N2FiZDsgfQoubG9hZGluZy1ib3ggLnBhcnRpY2xlOm50aC1jaGlsZCgzKSB7IGJvdHRvbTogMjUlOyBsZWZ0OiAyMCU7IGFuaW1hdGlvbjogZmxvYXRQYXJ0aWNsZTMgNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgMXM7IGJhY2tncm91bmQ6ICM1YmEzZjU7IH0KLmxvYWRpbmctYm94IC5wYXJ0aWNsZTpudGgtY2hpbGQoNCkgeyBib3R0b206IDMwJTsgcmlnaHQ6IDI1JTsgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlNCAzLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlIDEuNXM7IH0KCi8qIExvYWRpbmcgQW5pbWF0aW9ucyAqLwpAa2V5ZnJhbWVzIGxvYWRpbmdCb3hFbnRyYW5jZSB7CiAgICAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCkgc2NhbGUoMC44KSByb3RhdGVYKDE1ZGVnKTsgYm94LXNoYWRvdzogMCAwIDAgcmdiYSgwLCAwLCAwLCAwKTsgfQogICAgNTAlIHsgb3BhY2l0eTogMC44OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgc2NhbGUoMS4wMikgcm90YXRlWCgwZGVnKTsgfQogICAgMTAwJSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOyBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAsIDAsIDAsIDAuNCk7IH0KfQpAa2V5ZnJhbWVzIGxvYWRpbmdCb3hQdWxzZSB7CiAgICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgMTJweCA0OHB4IHJnYmEoMCwgMCwgMCwgMC40KSwgMCAwIDAgMXB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgICA1MCUgeyBib3gtc2hhZG93OiAwIDE2cHggNTZweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSksIDAgMCAwIDFweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsgdHJhbnNmb3JtOiBzY2FsZSgxLjAxKTsgfQp9CkBrZXlmcmFtZXMgbG9hZGluZ1NoaW1tZXIgeyAwJSB7IGxlZnQ6IC0xMDAlOyB9IDEwMCUgeyBsZWZ0OiAxMDAlOyB9IH0KQGtleWZyYW1lcyBsb2FkaW5nUHJvZ3Jlc3MgeyAwJSB7IHdpZHRoOiAwJTsgfSA1MCUgeyB3aWR0aDogNzAlOyB9IDEwMCUgeyB3aWR0aDogMTAwJTsgfSB9CkBrZXlmcmFtZXMgZ3JhZGllbnRNb3ZlIHsgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsgfSAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSAwJTsgfSB9CkBrZXlmcmFtZXMgbG9hZGluZ092ZXJsYXlGYWRlSW4geyAwJSB7IG9wYWNpdHk6IDA7IGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpOyB9IDEwMCUgeyBvcGFjaXR5OiAxOyBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTVweCk7IH0gfQpAa2V5ZnJhbWVzIHRleHRGYWRlSW4geyAwJSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNXB4KTsgdGV4dC1zaGFkb3c6IDAgMCAwIHJnYmEoMCwgMCwgMCwgMCk7IH0gMTAwJSB7IG9wYWNpdHk6IDAuOTU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgdGV4dC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMyk7IH0gfQpAa2V5ZnJhbWVzIHRleHRCcmVhdGggeyAwJSwgMTAwJSB7IG9wYWNpdHk6IDAuOTU7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH0gNTAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsgfSB9CkBrZXlmcmFtZXMgc3Bpbk1haW4gewogICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgxKTsgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7IH0KICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykgc2NhbGUoMS4xKTsgYm94LXNoYWRvdzogMCAwIDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNSk7IH0KICAgIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDEpOyBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsgfQp9CkBrZXlmcmFtZXMgc3BpblJldmVyc2UgewogICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDAuOSk7IG9wYWNpdHk6IDAuODsgfQogICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfQogICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDAuOSk7IG9wYWNpdHk6IDAuODsgfQp9CgovKiBQYXJ0aWNsZSBmbG9hdGluZyBhbmltYXRpb25zICovCkBrZXlmcmFtZXMgZmxvYXRQYXJ0aWNsZTEgewogICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSB0cmFuc2xhdGVYKDBweCk7IG9wYWNpdHk6IDAuNzsgfQogICAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KSB0cmFuc2xhdGVYKDVweCk7IG9wYWNpdHk6IDE7IH0KICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KSB0cmFuc2xhdGVYKC0zcHgpOyBvcGFjaXR5OiAwLjg7IH0KICAgIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCkgdHJhbnNsYXRlWCg4cHgpOyBvcGFjaXR5OiAwLjk7IH0KfQoKQGtleWZyYW1lcyBmbG9hdFBhcnRpY2xlMiB7CiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMC43OyB9CiAgICAzMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgdHJhbnNsYXRlWCgtNHB4KTsgb3BhY2l0eTogMTsgfQogICAgNjAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMnB4KSB0cmFuc2xhdGVYKDZweCk7IG9wYWNpdHk6IDAuODsgfQogICAgOTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpIHRyYW5zbGF0ZVgoLTJweCk7IG9wYWNpdHk6IDAuOTsgfQp9CgpAa2V5ZnJhbWVzIGZsb2F0UGFydGljbGUzIHsKICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgdHJhbnNsYXRlWCgwcHgpOyBvcGFjaXR5OiAwLjc7IH0KICAgIDIwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNnB4KSB0cmFuc2xhdGVYKDdweCk7IG9wYWNpdHk6IDE7IH0KICAgIDQwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTRweCkgdHJhbnNsYXRlWCgtNXB4KTsgb3BhY2l0eTogMC44OyB9CiAgICA4MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgdHJhbnNsYXRlWCgzcHgpOyBvcGFjaXR5OiAwLjk7IH0KfQoKQGtleWZyYW1lcyBmbG9hdFBhcnRpY2xlNCB7CiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMC43OyB9CiAgICAzNSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTlweCkgdHJhbnNsYXRlWCgtNnB4KTsgb3BhY2l0eTogMTsgfQogICAgNzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpIHRyYW5zbGF0ZVgoNHB4KTsgb3BhY2l0eTogMC44OyB9CiAgICA4NSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTExcHgpIHRyYW5zbGF0ZVgoLTFweCk7IG9wYWNpdHk6IDAuOTsgfQp9Ci8qIEhpLXRlY2ggYW5pbWF0aW9uIGtleWZyYW1lcyAqLwpAa2V5ZnJhbWVzIG1hdHJpeFJhaW4gewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgIH0KICAgIDEwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDkwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgIH0KICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQp9CgpAa2V5ZnJhbWVzIGNvcmVSb3RhdGUgewogICAgMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIH0KfQoKQGtleWZyYW1lcyBjb3JlUHVsc2UgewogICAgMCUsIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICA1MCUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEuNSk7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgfQp9CgpAa2V5ZnJhbWVzIHN0cmVhbUZsb3cgewogICAgMCUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIH0KICAgIDUwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7CiAgICB9CiAgICAxMDAlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgaGV4RmxvYXQgewogICAgMCUsIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgfQogICAgMjUlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgfQogICAgNTAlIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICB9CiAgICA3NS