Learn & Support

[fusion_builder_container type=”flex” hundred_percent=”no” hundred_percent_height=”no” min_height_medium=”” min_height_small=”” min_height=”” hundred_percent_height_scroll=”no” align_content=”stretch” flex_align_items=”flex-start” flex_justify_content=”flex-start” flex_wrap_medium=”” flex_wrap_small=”” flex_wrap=”wrap” flex_column_spacing=”” hundred_percent_height_center_content=”yes” equal_height_columns=”no” container_tag=”div” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” html_attributes=”W10=” margin_top_medium=”” margin_bottom_medium=”” margin_top_small=”” margin_bottom_small=”” margin_top=”” margin_bottom=”” padding_top_medium=”” padding_right_medium=”” padding_bottom_medium=”” padding_left_medium=”” padding_top_small=”” padding_right_small=”0px” padding_bottom_small=”” padding_left_small=”0px” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” link_hover_color=”” hue=”” saturation=”” lightness=”” alpha=”” link_color=”” border_sizes_top=”” border_sizes_right=”” border_sizes_bottom=”” border_sizes_left=”” border_color=”” border_style=”solid” border_radius_top_left=”” border_radius_top_right=”” border_radius_bottom_right=”” border_radius_bottom_left=”” box_shadow=”no” box_shadow_vertical=”” box_shadow_horizontal=”” box_shadow_blur=”0″ box_shadow_spread=”0″ box_shadow_color=”” box_shadow_style=”” z_index=”” overflow=”” background_color_medium=”” background_color_small=”” background_color=”” gradient_start_color=”” gradient_end_color=”” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_image_medium=”” background_image_small=”” background_image=”” skip_lazy_load=”” background_position_medium=”” background_position_small=”” background_position=”center center” background_repeat_medium=”” background_repeat_small=”” background_repeat=”no-repeat” background_size_medium=”” background_size_small=”” background_size=”” background_custom_size=”” background_custom_size_medium=”” background_custom_size_small=”” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ background_blend_mode_medium=”” background_blend_mode_small=”” background_blend_mode=”none” background_slider_images=”” background_slider_position=”” background_slider_skip_lazy_loading=”no” background_slider_random_order=”no” background_slider_loop=”yes” background_slider_pause_on_hover=”no” background_slider_slideshow_speed=”5000″ background_slider_animation=”fade” background_slider_direction=”up” background_slider_animation_speed=”800″ background_slider_blend_mode=”” video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” pattern_bg=”none” pattern_custom_bg=”” pattern_bg_color=”” pattern_bg_style=”default” pattern_bg_opacity=”100″ pattern_bg_size=”” pattern_bg_blend_mode=”normal” mask_bg=”none” mask_custom_bg=”” mask_bg_color=”” mask_bg_accent_color=”” mask_bg_style=”default” mask_bg_opacity=”100″ mask_bg_transform=”left” mask_bg_blend_mode=”normal” render_logics=”” logics=”” absolute=”off” absolute_devices=”small,medium,large” position_top_medium=”” position_right_medium=”” position_bottom_medium=”” position_left_medium=”” position_top_small=”” position_right_small=”” position_bottom_small=”” position_left_small=”” position_top=”” position_right=”” position_bottom=”” position_left=”” sticky=”off” sticky_devices=”small-visibility,medium-visibility,large-visibility” sticky_background_color=”” sticky_height=”” sticky_offset=”” sticky_transition_offset=”0″ scroll_offset=”0″ animation_type=”” animation_direction=”left” animation_color=”” animation_speed=”0.3″ animation_delay=”0″ animation_offset=”” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ align_self=”auto” content_layout=”column” align_content=”flex-start” valign_content=”flex-start” dimension_gap_medium=”” dimension_gap_small=”” dimension_gap=”” content_wrap=”wrap” spacing=”” center_content=”no” column_tag=”div” link=”” target=”_self” link_description=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” sticky_display=”normal,sticky” class=”” id=”” html_attributes=”” type_medium=”” type_small=”” max_height_medium=”” max_height_small=”” max_height=”” flex_grow_medium=”” flex_grow_small=”” flex_grow=”” flex_shrink_medium=”” flex_shrink_small=”” flex_shrink=”” order_medium=”0″ order_small=”0″ dimension_spacing_medium=”” dimension_spacing_small=”” dimension_spacing=”” dimension_margin_medium=”” dimension_margin_small=”” margin_top=”” margin_bottom=”” padding_medium=”” padding_small=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” hover_type=”none” border_sizes=”” border_color_hover=”” border_color=”” border_style=”solid” border_radius=”” box_shadow=”no” dimension_box_shadow=”” box_shadow_blur=”0″ box_shadow_spread=”0″ box_shadow_color=”” box_shadow_style=”” z_index_hover=”” z_index=”” overflow=”” background_type=”single” background_color_medium=”” background_color_small=”” background_color_medium_hover=”” background_color_small_hover=”” background_color_hover=”” background_color=”” gradient_start_color=”” gradient_end_color=”” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_image_medium=”” background_image_small=”” background_image=”” background_image_id_medium=”” background_image_id_small=”” background_image_id=”” lazy_load=”avada” skip_lazy_load=”” background_position_medium=”” background_position_small=”” background_position=”left top” background_repeat_medium=”” background_repeat_small=”” background_repeat=”no-repeat” background_size_medium=”” background_size_small=”” background_size=”” background_custom_size=”” background_custom_size_medium=”” background_custom_size_small=”” background_blend_mode_medium=”” background_blend_mode_small=”” background_blend_mode=”none” background_slider_images=”” background_slider_position=”” background_slider_skip_lazy_loading=”no” background_slider_random_order=”no” background_slider_loop=”yes” background_slider_pause_on_hover=”no” background_slider_slideshow_speed=”5000″ background_slider_animation=”fade” background_slider_direction=”up” background_slider_animation_speed=”800″ background_slider_blend_mode=”” render_logics=”” sticky=”off” sticky_devices=”small-visibility,medium-visibility,large-visibility” sticky_offset=”” absolute=”off” absolute_props=”” filter_type=”regular” filter_hover_element=”self” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ transform_type=”regular” transform_hover_element=”self” transform_scale_x=”1″ transform_scale_y=”1″ transform_translate_x=”0″ transform_translate_y=”0″ transform_rotate=”0″ transform_skew_x=”0″ transform_skew_y=”0″ transform_scale_x_hover=”1″ transform_scale_y_hover=”1″ transform_translate_x_hover=”0″ transform_translate_y_hover=”0″ transform_rotate_hover=”0″ transform_skew_x_hover=”0″ transform_skew_y_hover=”0″ transform_origin=”” transition_duration=”300″ transition_easing=”ease” transition_custom_easing=”” motion_effects=”” scroll_motion_devices=”small-visibility,medium-visibility,large-visibility” animation_type=”” animation_direction=”left” animation_color=”” animation_speed=”0.3″ animation_delay=”0″ animation_offset=”” last=”true” border_position=”all” first=”true”][fusion_code render_logics=””]PHN0eWxlPgogIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIENBUkwgTGVhcm4gJiBTdXBwb3J0IE1haW4gUGFnZSBPdmVyaGF1bAogICAgIFNjb3BlZCBmb3IgV29yZFByZXNzL0F2YWRhIGNvZGUgYmxvY2sgdXNlCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgogIC5scy1zdXBwb3J0LXBhZ2UgewogICAgLS1scy1icmFuZC1kYXJrOiAjMDAyRDRDOwogICAgLS1scy1icmFuZC1kYXJrZXI6ICMwMDE5MzA7CiAgICAtLWxzLWJyYW5kLXRlYWw6ICMwMEU1RDM7CiAgICAtLWxzLWJyYW5kLWJsdWU6ICM1OUM5RTE7CiAgICAtLWxzLWJyYW5kLXBpbms6ICNGNjcxRUE7CiAgICAtLWxzLWJyYW5kLWNvcmFsOiAjRjg4Mzc5OwogICAgLS1scy1icmFuZC1hbWJlcjogI0ZGQjg0RDsKICAgIC0tbHMtYnJhbmQtbGltZTogI0E4RTA2MzsKCiAgICAtLWxzLXRleHQtcHJpbWFyeTogIzAwMkQ0QzsKICAgIC0tbHMtdGV4dC1zZWNvbmRhcnk6ICM1QTZDN0Q7CiAgICAtLWxzLXRleHQtbXV0ZWQ6ICM4YTlhYTg7CgogICAgLS1scy1iZy1saWdodDogI2Y4ZmFmYjsKICAgIC0tbHMtYmctd2hpdGU6ICNmZmZmZmY7CiAgICAtLWxzLWJvcmRlci1saWdodDogI2U4ZWVmMjsKICAgIC0tbHMtYm9yZGVyLW1lZGl1bTogI2QwZDdkZDsKCiAgICAtLWxzLWhvdmVyLXNwZWVkLXNvZnQ6IDU2MG1zOwogICAgLS1scy1ob3Zlci1lYXNlLXNvZnQ6IGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpOwoKICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgYmFja2dyb3VuZDogdmFyKC0tbHMtYmctbGlnaHQpOwogICAgY29sb3I6IHZhcigtLWxzLXRleHQtcHJpbWFyeSk7CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpOwogICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKTsKICAgIHdpZHRoOiAxMDB2dzsKICB9CgogIC5scy1zdXBwb3J0LXBhZ2UsCiAgLmxzLXN1cHBvcnQtcGFnZSAqIHsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBmb250LWZhbWlseTogJ1BvcHBpbnMnLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogIH0KCiAgLmxzLXN1cHBvcnQtcGFnZSBhIHsKICAgIGNvbG9yOiBpbmhlcml0OwogIH0KCiAgLmxzLXN1cHBvcnQtcGFnZSBidXR0b24gewogICAgZm9udDogaW5oZXJpdDsKICB9CgogIC5scy13cmFwIHsKICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgbWFyZ2luOiAwIGF1dG87CiAgICBwYWRkaW5nOiAwIDMycHg7CiAgfQoKICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBIZXJvCiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgogIC5scy1oZXJvIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWxzLWJyYW5kLWRhcmspIDAlLCB2YXIoLS1scy1icmFuZC1kYXJrZXIpIDEwMCUpOwogICAgcGFkZGluZzogNThweCAwIDg4cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogIH0KCiAgLmxzLWhlcm86OmJlZm9yZSB7CiAgICBjb250ZW50OiAnJzsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTE3MHB4OwogICAgcmlnaHQ6IC05MHB4OwogICAgd2lkdGg6IDU1MHB4OwogICAgaGVpZ2h0OiA1NTBweDsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjI5LCAyMTEsIDAuMTQpIDAlLCB0cmFuc3BhcmVudCA2OCUpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQoKICAubHMtaGVybzo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IC0yMTBweDsKICAgIGxlZnQ6IDclOwogICAgd2lkdGg6IDQzMHB4OwogICAgaGVpZ2h0OiA0MzBweDsKICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMjQ2LCAxMTMsIDIzNCwgMC4wOSkgMCUsIHRyYW5zcGFyZW50IDcwJSk7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICB9CgogIC5scy1oZXJvLWlubmVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHotaW5kZXg6IDE7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSAzMzBweDsKICAgIGdhcDogMzRweDsKICAgIGFsaWduLWl0ZW1zOiBzdGFydDsKICB9CgogIC5scy1oZXJvLWtpY2tlciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIHBhZGRpbmc6IDZweCAxM3B4OwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIyOSwgMjExLCAwLjEyKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMjI5LCAyMTEsIDAuMjQpOwogICAgY29sb3I6IHZhcigtLWxzLWJyYW5kLXRlYWwpOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjU1cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbWFyZ2luLWJvdHRvbTogMThweDsKICB9CgogIC5scy1oZXJvLXRpdGxlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiBjbGFtcCgyLjJyZW0sIDV2dywgMy4zcmVtKTsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgICBsaW5lLWhlaWdodDogMS4wODsKICAgIGxldHRlci1zcGFjaW5nOiAtMC41cHg7CiAgICBtYXJnaW46IDAgMCAxNnB4OwogICAgbWF4LXdpZHRoOiA3ODBweDsKICB9CgogIC5scy1oZXJvLWRlc2NyaXB0aW9uIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpOwogICAgZm9udC1zaXplOiAxN3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNjg7CiAgICBtYXgtd2lkdGg6IDc4MHB4OwogICAgbWFyZ2luOiAwOwogIH0KCiAgLmxzLWhlcm8tYWN0aW9ucyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAxMnB4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgbWFyZ2luLXRvcDogMjZweDsKICB9CgogIC5scy1oZXJvLWJ0biwKICAubHMtbW9kYWwtYnRuLAogIC5scy1lbXB0eS1idG4gewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIG1pbi1oZWlnaHQ6IDQ0cHg7CiAgICBwYWRkaW5nOiAxMnB4IDIycHg7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJvcmRlcjogMDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA3NTA7CiAgICBsaW5lLWhlaWdodDogMS40OwogIH0KCiAgLmxzLWhlcm8tYnRuLnByaW1hcnksCiAgLmxzLW1vZGFsLWJ0bi5wcmltYXJ5LAogIC5scy1lbXB0eS1idG4ucHJpbWFyeSB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1scy1icmFuZC1waW5rKSwgdmFyKC0tbHMtYnJhbmQtY29yYWwpKTsKICAgIGNvbG9yOiAjZmZmOwogICAgYm94LXNoYWRvdzogMCA4cHggMjJweCByZ2JhKDI0NiwgMTEzLCAyMzQsIDAuMjIpOwogIH0KCiAgLmxzLWhlcm8tYnRuLnNlY29uZGFyeSwKICAubHMtbW9kYWwtYnRuLnNlY29uZGFyeSwKICAubHMtZW1wdHktYnRuLnNlY29uZGFyeSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBjb2xvcjogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xOCk7CiAgfQoKICAubHMtaGVyby1idG46aG92ZXIsCiAgLmxzLW1vZGFsLWJ0bjpob3ZlciwKICAubHMtZW1wdHktYnRuOmhvdmVyIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICB9CgogIC5scy1zdXBwb3J0LWNhcmQgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNCk7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMjJweDsKICAgIGJveC1zaGFkb3c6IDAgMTRweCA0NHB4IHJnYmEoMCwgMCwgMCwgMC4xNik7CiAgfQoKICAubHMtc3VwcG9ydC1jYXJkLWxhYmVsIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgfQoKICAubHMtc3VwcG9ydC1jYXJkLXRpdGxlIHsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxOHB4OwogICAgZm9udC13ZWlnaHQ6IDc4MDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogIH0KCiAgLmxzLXN1cHBvcnQtY2FyZC10ZXh0IHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzYpOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNjU7CiAgICBtYXJnaW46IDAgMCAxOHB4OwogIH0KCiAgLmxzLXN1cHBvcnQtbGluayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIGNvbG9yOiAjZmZmOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgZm9udC13ZWlnaHQ6IDc1MDsKICB9CgogIC5scy1zdXBwb3J0LWxpbms6aG92ZXIgewogICAgY29sb3I6IHZhcigtLWxzLWJyYW5kLXRlYWwpOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgU2VhcmNoICsgZmlsdGVycyBjb250cm9sIGNhcmQKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgLmxzLWNvbnRyb2wtem9uZSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB6LWluZGV4OiA0OwogICAgbWFyZ2luLXRvcDogLTQ0cHg7CiAgfQoKICAubHMtY29udHJvbC1jYXJkIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgIGJveC1zaGFkb3c6IDAgMThweCA0NnB4IHJnYmEoMCwgNDUsIDc2LCAwLjEyKSwgMCAycHggOHB4IHJnYmEoMCwgNDUsIDc2LCAwLjA2KTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgfQoKICAubHMtc2VhcmNoLXJvdyB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvOwogICAgZ2FwOiAxNnB4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDE4cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbHMtYm9yZGVyLWxpZ2h0KTsKICB9CgogIC5scy1zZWFyY2gtYm94IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB9CgogIC5scy1zZWFyY2gtYm94IHN2ZyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAxNnB4OwogICAgdG9wOiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7CiAgICB3aWR0aDogMThweDsKICAgIGhlaWdodDogMThweDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LW11dGVkKTsKICB9CgogIC5scy1zZWFyY2gtaW5wdXQgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICBwYWRkaW5nOiAxM3B4IDE2cHggMTNweCA0NnB4OwogICAgY29sb3I6IHZhcigtLWxzLXRleHQtcHJpbWFyeSk7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBvdXRsaW5lOiBub25lOwogICAgYmFja2dyb3VuZDogdmFyKC0tbHMtYmctbGlnaHQpOwogIH0KCiAgLmxzLXNlYXJjaC1pbnB1dDpmb2N1cyB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDIyOSwgMjExLCAwLjc1KTsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDAsIDIyOSwgMjExLCAwLjEyKTsKICB9CgogIC5scy1zZWFyY2gtY291bnQgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LW11dGVkKTsKICAgIGZvbnQtd2VpZ2h0OiA2NTA7CiAgfQoKICAubHMtc2VhcmNoLWNvdW50IHN0cm9uZyB7CiAgICBjb2xvcjogdmFyKC0tbHMtYnJhbmQtZGFyayk7CiAgfQoKICAubHMtZmlsdGVyLXJvdyB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvOwogICAgZ2FwOiAxNnB4IDI4cHg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgcGFkZGluZzogMTZweCAxOHB4IDE4cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0OCwgMjUwLCAyNTEsIDAuNzIpOwogIH0KCiAgLmxzLWZpbHRlci1ncm91cHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IDEycHg7CiAgICBtaW4td2lkdGg6IDA7CiAgfQoKICAubHMtZmlsdGVyLWdyb3VwIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxMnB4OwogICAgZmxleC13cmFwOiB3cmFwOwogIH0KCiAgLmxzLWZpbHRlci1sYWJlbCB7CiAgICB3aWR0aDogNjRweDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LW11dGVkKTsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgICBsZXR0ZXItc3BhY2luZzogMC41NXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGZsZXgtc2hyaW5rOiAwOwogIH0KCiAgLmxzLWZpbHRlci1waWxscyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiA4cHg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQoKICAubHMtZmlsdGVyLXBpbGwgewogICAgYXBwZWFyYW5jZTogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgY29sb3I6IHZhcigtLWxzLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgcGFkZGluZzogOHB4IDE0cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNjgwOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KCiAgLmxzLWZpbHRlci1waWxsOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC40Mik7CiAgICBjb2xvcjogdmFyKC0tbHMtdGV4dC1wcmltYXJ5KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMDQpOwogIH0KCiAgLmxzLWZpbHRlci1waWxsLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1scy1icmFuZC1kYXJrKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbHMtYnJhbmQtZGFyayk7CiAgICBjb2xvcjogI2ZmZjsKICB9CgogIC5scy1yZXN1bHRzLWxhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LW11dGVkKTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA3NTA7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgfQoKICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBNYWluIGNvbnRlbnQKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgLmxzLW1haW4gewogICAgcGFkZGluZzogMzZweCAwIDgwcHg7CiAgfQoKICAubHMtc2VjdGlvbiB7CiAgICBtYXJnaW4tYm90dG9tOiA1NHB4OwogIH0KCiAgLmxzLXNlY3Rpb24taGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgZ2FwOiAyMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICB9CgogIC5scy1zZWN0aW9uLWhlYWRpbmctd3JhcCB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTJweDsKICAgIG1pbi13aWR0aDogMDsKICB9CgogIC5scy1zZWN0aW9uLWxpbmUgewogICAgd2lkdGg6IDI2cHg7CiAgICBoZWlnaHQ6IDNweDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tbHMtYnJhbmQtdGVhbCksIHZhcigtLWxzLWJyYW5kLWJsdWUpKTsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgZmxleC1zaHJpbms6IDA7CiAgfQoKICAubHMtc2VjdGlvbi10aXRsZSB7CiAgICBjb2xvcjogdmFyKC0tbHMtYnJhbmQtZGFyayk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogODUwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjlweDsKICB9CgogIC5scy1zZWN0aW9uLW5vdGUgewogICAgY29sb3I6IHZhcigtLWxzLXRleHQtbXV0ZWQpOwogICAgZm9udC1zaXplOiAxM3B4OwogIH0KCiAgLmxzLWJhZGdlLXNvZnQgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBwYWRkaW5nOiA1cHggMTFweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAxMTMsIDIzNCwgMC4xKTsKICAgIGNvbG9yOiB2YXIoLS1scy1icmFuZC1waW5rKTsKICAgIGZvbnQtc2l6ZTogMTBweDsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4zNXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICB9CgogIC5scy1mZWF0dXJlZC1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7CiAgICBnYXA6IDI0cHg7CiAgfQoKICAubHMtZ3VpZGVzLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTsKICAgIGdhcDogMjJweDsKICB9CgogIC5scy1yZXNvdXJjZS1jYXJkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiAxOHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGNvbG9yOiBpbmhlcml0OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICBtaW4taGVpZ2h0OiAxMDAlOwogICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDQ1LCA3NiwgMC4wNyksIDAgMXB4IDNweCByZ2JhKDAsIDQ1LCA3NiwgMC4wNSk7CiAgfQoKICAubHMtcmVzb3VyY2UtY2FyZDpob3ZlciB7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuNDYpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgYm94LXNoYWRvdzogMCAxMnB4IDM0cHggcmdiYSgwLCA0NSwgNzYsIDAuMTIpLCAwIDRweCAxMnB4IHJnYmEoMCwgNDUsIDc2LCAwLjA2KTsKICB9CgogIC5scy1mZWF0dXJlZC1jYXJkIHsKICAgIGJvcmRlci1yYWRpdXM6IDIycHg7CiAgfQoKICAubHMtY2FyZC1hcnQgewogICAgd2lkdGg6IDEwMCU7CiAgICBtaW4taGVpZ2h0OiAxMDRweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZmxleDogMCAwIGF1dG87CiAgfQoKICAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC1hcnQgewogICAgbWluLWhlaWdodDogMTU2cHg7CiAgfQoKICAubHMtY2FyZC1hcnQuZGFyayB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1scy1icmFuZC1kYXJrKSwgdmFyKC0tbHMtYnJhbmQtZGFya2VyKSk7CiAgfQoKICAubHMtY2FyZC1hcnQudGVhbCB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDAsIDIyOSwgMjExLCAwLjE1KSwgcmdiYSg4OSwgMjAxLCAyMjUsIDAuMTIpKTsKICB9CgogIC5scy1jYXJkLWFydC5ibHVlIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoODksIDIwMSwgMjI1LCAwLjE2KSwgcmdiYSgwLCA0NSwgNzYsIDAuMDgpKTsKICB9CgogIC5scy1jYXJkLWFydC5waW5rIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjQ2LCAxMTMsIDIzNCwgMC4xMyksIHJnYmEoMjQ4LCAxMzEsIDEyMSwgMC4wOSkpOwogIH0KCiAgLmxzLWNhcmQtYXJ0LmNvcmFsIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjQ4LCAxMzEsIDEyMSwgMC4xNCksIHJnYmEoMjU1LCAxODQsIDc3LCAwLjEpKTsKICB9CgogIC5scy1jYXJkLWFydC5zYWdlIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTY4LCAyMjQsIDk5LCAwLjE2KSwgcmdiYSgwLCAyMjksIDIxMSwgMC4wOCkpOwogIH0KCiAgLmxzLWFydC1udW1iZXIgewogICAgY29sb3I6IHZhcigtLWxzLWJyYW5kLXRlYWwpOwogICAgZm9udC1zaXplOiA1NHB4OwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICBmb250LXdlaWdodDogODUwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KCiAgLmxzLWFydC1sYWJlbCB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA3NTA7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IDZweDsKICB9CgogIC5scy1hcnQtc3RlcHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICB9CgogIC5scy1hcnQtc3RlcCB7CiAgICB3aWR0aDogMzJweDsKICAgIGhlaWdodDogMzJweDsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGNvbG9yOiB2YXIoLS1scy1icmFuZC1kYXJrKTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgfQoKICAubHMtYXJ0LXN0ZXA6bnRoLWNoaWxkKDEpIHsgYmFja2dyb3VuZDogdmFyKC0tbHMtYnJhbmQtdGVhbCk7IH0KICAubHMtYXJ0LXN0ZXA6bnRoLWNoaWxkKDIpIHsgYmFja2dyb3VuZDogdmFyKC0tbHMtYnJhbmQtYmx1ZSk7IH0KICAubHMtYXJ0LXN0ZXA6bnRoLWNoaWxkKDMpIHsgYmFja2dyb3VuZDogdmFyKC0tbHMtYnJhbmQtcGluayk7IGNvbG9yOiAjZmZmOyB9CiAgLmxzLWFydC1zdGVwOm50aC1jaGlsZCg0KSB7IGJhY2tncm91bmQ6IHZhcigtLWxzLWJyYW5kLWNvcmFsKTsgY29sb3I6ICNmZmY7IH0KICAubHMtYXJ0LXN0ZXA6bnRoLWNoaWxkKDUpIHsgYmFja2dyb3VuZDogdmFyKC0tbHMtYnJhbmQtYW1iZXIpOyB9CgogIC5scy1jYXJkLWljb24gewogICAgd2lkdGg6IDUwcHg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJveC1zaGFkb3c6IDAgNXB4IDE0cHggcmdiYSgwLCA0NSwgNzYsIDAuMSk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIH0KCiAgLmxzLWNhcmQtaWNvbiBzdmcgewogICAgd2lkdGg6IDI1cHg7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBzdHJva2U6IHZhcigtLWxzLWJyYW5kLWRhcmspOwogIH0KCiAgLmxzLWNhcmQtYXJ0LnRlYWwgLmxzLWNhcmQtaWNvbiBzdmcgeyBzdHJva2U6ICMwMGE4OWQ7IH0KICAubHMtY2FyZC1hcnQuYmx1ZSAubHMtY2FyZC1pY29uIHN2ZyB7IHN0cm9rZTogIzJjOWVjMTsgfQogIC5scy1jYXJkLWFydC5waW5rIC5scy1jYXJkLWljb24gc3ZnIHsgc3Ryb2tlOiB2YXIoLS1scy1icmFuZC1waW5rKTsgfQogIC5scy1jYXJkLWFydC5jb3JhbCAubHMtY2FyZC1pY29uIHN2ZyB7IHN0cm9rZTogdmFyKC0tbHMtYnJhbmQtY29yYWwpOyB9CgogIC5scy1jYXJkLWJvZHkgewogICAgcGFkZGluZzogMjBweDsKICAgIGZsZXg6IDE7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICB9CgogIC5scy1mZWF0dXJlZC1jYXJkIC5scy1jYXJkLWJvZHkgewogICAgcGFkZGluZzogMjRweDsKICB9CgogIC5scy1jYXJkLWJhZGdlcyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC13cmFwOiB3cmFwOwogICAgZ2FwOiA3cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogIH0KCiAgLmxzLWNhcmQtYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBwYWRkaW5nOiA1cHggMTFweDsKICAgIGZvbnQtc2l6ZTogMTBweDsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4zcHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIH0KCiAgLmxzLWNhcmQtYmFkZ2UuY2F0ZWdvcnkgewogICAgYmFja2dyb3VuZDogcmdiYSgwLCAyMjksIDIxMSwgMC4xKTsKICAgIGNvbG9yOiAjMDA4ZDg0OwogIH0KCiAgLmxzLWNhcmQtYmFkZ2UudHlwZSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI0NiwgMTEzLCAyMzQsIDAuMSk7CiAgICBjb2xvcjogdmFyKC0tbHMtYnJhbmQtcGluayk7CiAgfQoKICAubHMtY2FyZC10aXRsZSB7CiAgICBjb2xvcjogdmFyKC0tbHMtdGV4dC1wcmltYXJ5KTsKICAgIGZvbnQtc2l6ZTogMTdweDsKICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICBsaW5lLWhlaWdodDogMS4zNTsKICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwogICAgbWFyZ2luOiAwIDAgOHB4IDA7CiAgfQoKICAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC10aXRsZSB7CiAgICBmb250LXNpemU6IDIwcHg7CiAgfQoKICAubHMtY2FyZC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogIzRmNjI3MzsKICAgIGZvbnQtc2l6ZTogMTMuNXB4OwogICAgbGluZS1oZWlnaHQ6IDEuNjI7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbWFyZ2luOiAwOwogICAgZmxleDogMTsKICB9CgogIC5scy1mZWF0dXJlZC1jYXJkIC5scy1jYXJkLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTQuNXB4OwogIH0KCgogIC5scy1jYXJkLWZvb3RlciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgY29sdW1uLWdhcDogMTZweDsKICAgIHBhZGRpbmc6IDE0cHggMjBweDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgYmFja2dyb3VuZDogdmFyKC0tbHMtYmctbGlnaHQpOwogICAgbWluLWhlaWdodDogNTRweDsKICB9CgogIC5scy1jYXJkLW1ldGEgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICBjb2xvcjogdmFyKC0tbHMtdGV4dC1tdXRlZCk7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogNzAwOwogICAgbWluLXdpZHRoOiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB9CgogIC5scy1jYXJkLW1ldGEgc3ZnIHsKICAgIHdpZHRoOiAxM3B4OwogICAgaGVpZ2h0OiAxM3B4OwogIH0KCiAgLmxzLWNhcmQtcmVhZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogNnB4OwogICAgY29sb3I6IHZhcigtLWxzLWJyYW5kLWRhcmspOwogICAgYmFja2dyb3VuZDogI2ZmZmZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNDUsIDc2LCAwLjA4KTsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgcGFkZGluZzogNnB4IDExcHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogODUwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBib3gtc2hhZG93OiAwIDJweCA2cHggcmdiYSgwLCA0NSwgNzYsIDAuMDQpOwogIH0KCiAgLmxzLXJlc291cmNlLWNhcmQ6aG92ZXIgLmxzLWNhcmQtcmVhZCB7CiAgICBnYXA6IDhweDsKICAgIGNvbG9yOiAjMDA3Zjc3OwogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDIyOSwgMjExLCAwLjM2KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMDcpOwogIH0KCiAgLmxzLWNhcmQtcmVhZCBzdmcgewogICAgd2lkdGg6IDEzcHg7CiAgICBoZWlnaHQ6IDEzcHg7CiAgICBmbGV4LXNocmluazogMDsKICB9CgogIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFF1aWNrIGNhcmRzICsgY29taW5nIHNvb24KICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgLmxzLXF1aWNrLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTsKICAgIGdhcDogMTZweDsKICB9CgogIC5scy1xdWljay1jYXJkIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAxNXB4OwogICAgcGFkZGluZzogMTZweCAxOHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCk7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY29sb3I6IGluaGVyaXQ7CiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCA0NSwgNzYsIDAuMDUpOwogIH0KCiAgLmxzLXF1aWNrLWNhcmQ6aG92ZXIgewogICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDIyOSwgMjExLCAwLjQyKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMDM1KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KCiAgLmxzLXF1aWNrLWljb24gewogICAgd2lkdGg6IDQycHg7CiAgICBoZWlnaHQ6IDQycHg7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgwLCAyMjksIDIxMSwgMC4xKSwgcmdiYSg4OSwgMjAxLCAyMjUsIDAuMSkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZsZXgtc2hyaW5rOiAwOwogIH0KCiAgLmxzLXF1aWNrLWljb24gc3ZnIHsKICAgIHdpZHRoOiAyMXB4OwogICAgaGVpZ2h0OiAyMXB4OwogICAgc3Ryb2tlOiAjMDBhODlkOwogIH0KCiAgLmxzLXF1aWNrLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXByaW1hcnkpOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgZm9udC13ZWlnaHQ6IDc4MDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwogICAgbWFyZ2luLWJvdHRvbTogMnB4OwogIH0KCiAgLmxzLXF1aWNrLW1ldGEgewogICAgY29sb3I6IHZhcigtLWxzLXRleHQtbXV0ZWQpOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDY1MDsKICB9CgogIC5scy1xdWljay1hcnJvdyB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LW11dGVkKTsKICAgIGZsZXgtc2hyaW5rOiAwOwogIH0KCiAgLmxzLXF1aWNrLWNhcmQ6aG92ZXIgLmxzLXF1aWNrLWFycm93IHsKICAgIGNvbG9yOiAjMDBhODlkOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7CiAgfQoKICAubHMtY29taW5nLXNvb24gewogICAgbWFyZ2luLXRvcDogMzRweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgwLCA0NSwgNzYsIDAuMTgpOwogICAgYm9yZGVyLXJhZGl1czogMThweDsKICAgIHBhZGRpbmc6IDIycHg7CiAgfQoKICAubHMtY29taW5nLXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXByaW1hcnkpOwogICAgZm9udC1zaXplOiAxNXB4OwogICAgZm9udC13ZWlnaHQ6IDg1MDsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICB9CgogIC5scy1jb21pbmctdGV4dCB7CiAgICBjb2xvcjogdmFyKC0tbHMtdGV4dC1zZWNvbmRhcnkpOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgbGluZS1oZWlnaHQ6IDEuNjU7CiAgICBtYXJnaW46IDA7CiAgfQoKICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBFbXB0eSBzdGF0ZSArIENUQQogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICAubHMtZW1wdHktc3RhdGUgewogICAgZGlzcGxheTogbm9uZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIHBhZGRpbmc6IDcwcHggMjRweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCA0NSwgNzYsIDAuMDUpOwogIH0KCiAgLmxzLWVtcHR5LWljb24gewogICAgd2lkdGg6IDc0cHg7CiAgICBoZWlnaHQ6IDc0cHg7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWxzLWJnLWxpZ2h0KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXJnaW46IDAgYXV0byAyMHB4OwogIH0KCiAgLmxzLWVtcHR5LWljb24gc3ZnIHsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgY29sb3I6IHZhcigtLWxzLXRleHQtbXV0ZWQpOwogIH0KCiAgLmxzLWVtcHR5LXRpdGxlIHsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXByaW1hcnkpOwogICAgZm9udC1zaXplOiAxOXB4OwogICAgZm9udC13ZWlnaHQ6IDg1MDsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICB9CgogIC5scy1lbXB0eS10ZXh0IHsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXNlY29uZGFyeSk7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXgtd2lkdGg6IDUyMHB4OwogICAgbWFyZ2luOiAwIGF1dG8gMjBweDsKICB9CgogIC5scy1ib3R0b20tY3RhIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWxzLWJyYW5kLWRhcmspIDAlLCB2YXIoLS1scy1icmFuZC1kYXJrZXIpIDEwMCUpOwogICAgYm9yZGVyLXJhZGl1czogMjJweDsKICAgIHBhZGRpbmc6IDQycHg7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgIGdhcDogMjZweDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgfQoKICAubHMtYm90dG9tLWN0YTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAtODBweDsKICAgIHJpZ2h0OiAtNTBweDsKICAgIHdpZHRoOiAyNTBweDsKICAgIGhlaWdodDogMjUwcHg7CiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDAsIDIyOSwgMjExLCAwLjE0KSAwJSwgdHJhbnNwYXJlbnQgNzAlKTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogIH0KCiAgLmxzLWN0YS1jb3B5IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB9CgogIC5scy1jdGEtdGl0bGUgewogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDI0cHg7CiAgICBmb250LXdlaWdodDogODUwOwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogIH0KCiAgLmxzLWN0YS10ZXh0IHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDEuNjU7CiAgICBtYXJnaW46IDA7CiAgfQoKICAubHMtY3RhLWFjdGlvbnMgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogMTJweDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgfQoKICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBNb2RhbAogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICAubHMtbW9kYWwtYmFja2Ryb3AgewogICAgcG9zaXRpb246IGZpeGVkOwogICAgaW5zZXQ6IDA7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDI1LCA0OCwgMC44Nik7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTsKICAgIHotaW5kZXg6IDk5OTk5OTg7CiAgICBkaXNwbGF5OiBub25lOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcGFkZGluZzogMjJweDsKICB9CgogIC5scy1tb2RhbC1iYWNrZHJvcC5hY3RpdmUgewogICAgZGlzcGxheTogZmxleDsKICB9CgogIC5scy1tb2RhbCB7CiAgICB3aWR0aDogbWluKDExMDBweCwgOTZ2dyk7CiAgICBtYXgtaGVpZ2h0OiA5MHZoOwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDIycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBib3gtc2hhZG93OiAwIDI1cHggODBweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgfQoKICAubHMtbW9kYWwtaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWxzLWJyYW5kLWRhcmspIDAlLCB2YXIoLS1scy1icmFuZC1kYXJrZXIpIDEwMCUpOwogICAgcGFkZGluZzogMjBweCAyOHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDE4cHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgfQoKICAubHMtbW9kYWwtYmFkZ2VzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBnYXA6IDhweDsKICAgIGZsZXgtc2hyaW5rOiAwOwogICAgbWF4LXdpZHRoOiAyNjBweDsKICB9CgogIC5scy1tb2RhbC1iYWRnZSB7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIHBhZGRpbmc6IDVweCAxMnB4OwogICAgZm9udC1zaXplOiAxMHB4OwogICAgZm9udC13ZWlnaHQ6IDg1MDsKICAgIGxldHRlci1zcGFjaW5nOiAwLjM1cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIH0KCiAgLmxzLW1vZGFsLWJhZGdlLmNhdGVnb3J5IHsKICAgIGNvbG9yOiB2YXIoLS1scy1icmFuZC10ZWFsKTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMTQpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAyMjksIDIxMSwgMC4yNSk7CiAgfQoKICAubHMtbW9kYWwtYmFkZ2UudHlwZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7CiAgfQoKICAubHMtbW9kYWwtdGl0bGUtd3JhcCB7CiAgICBtaW4td2lkdGg6IDA7CiAgICBmbGV4OiAxOwogICAgcGFkZGluZy1yaWdodDogMzRweDsKICB9CgogIC5scy1tb2RhbC10aXRsZSB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogMjJweDsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgIG1hcmdpbi1ib3R0b206IDRweDsKICB9CgogIC5scy1tb2RhbC1zdWJ0aXRsZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjU1OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB9CgogIC5scy1tb2RhbC1jbG9zZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDE0cHg7CiAgICByaWdodDogMTRweDsKICAgIHdpZHRoOiAzNHB4OwogICAgaGVpZ2h0OiAzNHB4OwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KCiAgLmxzLW1vZGFsLWNsb3NlOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7CiAgfQoKICAubHMtbW9kYWwtY2xvc2Ugc3ZnIHsKICAgIHdpZHRoOiAxNXB4OwogICAgaGVpZ2h0OiAxNXB4OwogICAgc3Ryb2tlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODYpOwogIH0KCiAgLmxzLW1vZGFsLWNvbnRlbnQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTglIDQyJTsKICAgIG1pbi1oZWlnaHQ6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgZmxleDogMTsKICB9CgogIC5scy1tb2RhbC1tZWRpYS1wYW5lbCB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1scy1iZy1saWdodCk7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgcGFkZGluZzogMjRweDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgbWluLWhlaWdodDogMDsKICB9CgogIC5scy1tb2RhbC1tZWRpYS1zaGVsbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBmbGV4OiAxOwogICAgbWluLWhlaWdodDogMzIwcHg7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbHMtYm9yZGVyLW1lZGl1bSk7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLCA0NSwgNzYsIDAuMTEpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGN1cnNvcjogem9vbS1pbjsKICB9CgogIC5scy1tb2RhbC1tZWRpYS1zdGFnZSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogIH0KCiAgLmxzLW1vZGFsLW1lZGlhLXN0YWdlIGltZywKICAubHMtbW9kYWwtbWVkaWEtc3RhZ2UgdmlkZW8gewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogIH0KCiAgLmxzLW1vZGFsLXBsYWNlaG9sZGVyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LW11dGVkKTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmMGY0ZjcsICNlOGVlZjIpOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMjRweDsKICAgIGZvbnQtc2l6ZTogMTNweDsKICB9CgogIC5scy1tb2RhbC1wbGFjZWhvbGRlciBzdmcgewogICAgd2lkdGg6IDQycHg7CiAgICBoZWlnaHQ6IDQycHg7CiAgICBvcGFjaXR5OiAwLjY7CiAgfQoKICAubHMtbW9kYWwtbWVkaWEtbmF2IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogICAgd2lkdGg6IDM2cHg7CiAgICBoZWlnaHQ6IDM2cHg7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NCk7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDQ1LCA3NiwgMC4wOCk7CiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgICBkaXNwbGF5OiBub25lOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KCiAgLmxzLW1vZGFsLW1lZGlhLW5hdi52aXNpYmxlIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgfQoKICAubHMtbW9kYWwtbWVkaWEtbmF2LnByZXYgeyBsZWZ0OiAxMnB4OyB9CiAgLmxzLW1vZGFsLW1lZGlhLW5hdi5uZXh0IHsgcmlnaHQ6IDEycHg7IH0KCiAgLmxzLW1vZGFsLW1lZGlhLW5hdjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4wNSk7CiAgfQoKICAubHMtbW9kYWwtbWVkaWEtbmF2IHN2ZyB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIHN0cm9rZTogdmFyKC0tbHMtYnJhbmQtZGFyayk7CiAgfQoKICAubHMtbW9kYWwtem9vbS1oaW50IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAxMnB4OwogICAgYm90dG9tOiAxMnB4OwogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICBwYWRkaW5nOiA2cHggMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMjUsIDQ4LCAwLjc1KTsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDY1MDsKICAgIG9wYWNpdHk6IDA7CiAgfQoKICAubHMtbW9kYWwtbWVkaWEtc2hlbGw6aG92ZXIgLmxzLW1vZGFsLXpvb20taGludCB7CiAgICBvcGFjaXR5OiAxOwogIH0KCiAgLmxzLW1vZGFsLWRvdHMgewogICAgZGlzcGxheTogZmxleDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiA2cHg7CiAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgbWluLWhlaWdodDogOXB4OwogIH0KCiAgLmxzLW1vZGFsLWRvdCB7CiAgICB3aWR0aDogOHB4OwogICAgaGVpZ2h0OiA4cHg7CiAgICBib3JkZXI6IDA7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJhY2tncm91bmQ6ICNjYmQ0ZGM7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBwYWRkaW5nOiAwOwogIH0KCiAgLmxzLW1vZGFsLWRvdC5hY3RpdmUgewogICAgd2lkdGg6IDIwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1scy1icmFuZC10ZWFsKTsKICB9CgogIC5scy1tb2RhbC1pbmZvLXBhbmVsIHsKICAgIHBhZGRpbmc6IDI0cHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogIH0KCiAgLmxzLWluZm8tYmxvY2sgewogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICB9CgogIC5scy1pbmZvLWJsb2NrOmxhc3QtY2hpbGQgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CgogIC5scy1pbmZvLWhlYWRpbmcgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDhweDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXByaW1hcnkpOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDg1MDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMC41NXB4OwogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICB9CgogIC5scy1pbmZvLWhlYWRpbmcgc3ZnIHsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgc3Ryb2tlOiB2YXIoLS1scy1icmFuZC10ZWFsKTsKICB9CgogIC5scy1sZWFybi1saXN0IHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwogIH0KCiAgLmxzLWxlYXJuLWxpc3QgbGkgewogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogMTBweDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXNlY29uZGFyeSk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBsaW5lLWhlaWdodDogMS41NTsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICB9CgogIC5scy1sZWFybi1saXN0IGxpOjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICB3aWR0aDogNnB4OwogICAgaGVpZ2h0OiA2cHg7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLWxzLWJyYW5kLXRlYWwpOwogICAgZmxleC1zaHJpbms6IDA7CiAgICBtYXJnaW4tdG9wOiA3cHg7CiAgfQoKICAubHMtY292ZXJlZC1saXN0IHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBnYXA6IDdweDsKICB9CgogIC5scy1jb3ZlcmVkLWl0ZW0gewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiA5cHggMTFweDsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgYmFja2dyb3VuZDogdmFyKC0tbHMtYmctbGlnaHQpOwogIH0KCiAgLmxzLWNvdmVyZWQtbnVtYmVyIHsKICAgIHdpZHRoOiAyM3B4OwogICAgaGVpZ2h0OiAyM3B4OwogICAgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1scy1icmFuZC10ZWFsKSwgdmFyKC0tbHMtYnJhbmQtYmx1ZSkpOwogICAgY29sb3I6IHZhcigtLWxzLWJyYW5kLWRhcmspOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiA4NTA7CiAgICBmbGV4LXNocmluazogMDsKICB9CgogIC5scy1jb3ZlcmVkLXRleHQgewogICAgY29sb3I6IHZhcigtLWxzLXRleHQtcHJpbWFyeSk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBmb250LXdlaWdodDogNjUwOwogICAgbGluZS1oZWlnaHQ6IDEuMzU7CiAgfQoKICAubHMtbW9kYWwtZm9vdGVyIHsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1scy1ib3JkZXItbGlnaHQpOwogICAgYmFja2dyb3VuZDogdmFyKC0tbHMtYmctbGlnaHQpOwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBnYXA6IDE2cHg7CiAgfQoKICAubHMtbW9kYWwtZm9vdGVyLW5vdGUgewogICAgY29sb3I6IHZhcigtLWxzLXRleHQtbXV0ZWQpOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IDY1MDsKICB9CgogIC5scy1tb2RhbC1hY3Rpb25zIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBnYXA6IDEwcHg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogIH0KCiAgLmxzLW1vZGFsLWJ0bi5wcmltYXJ5IHsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWxzLWJyYW5kLXRlYWwpLCAjMDBjNGI0KTsKICAgIGNvbG9yOiB2YXIoLS1scy1icmFuZC1kYXJrKTsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE0cHggcmdiYSgwLCAyMjksIDIxMSwgMC4yOCk7CiAgfQoKICAubHMtbW9kYWwtYnRuLnNlY29uZGFyeSB7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgY29sb3I6IHZhcigtLWxzLXRleHQtc2Vjb25kYXJ5KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1tZWRpdW0pOwogICAgYm94LXNoYWRvdzogbm9uZTsKICB9CgogIC5scy1tb2RhbC1saWdodGJveCB7CiAgICBkaXNwbGF5OiBub25lOwogICAgcG9zaXRpb246IGZpeGVkOwogICAgaW5zZXQ6IDA7CiAgICB6LWluZGV4OiA5OTk5OTk5OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjg4KTsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDI0cHg7CiAgICBjdXJzb3I6IHpvb20tb3V0OwogIH0KCiAgLmxzLW1vZGFsLWxpZ2h0Ym94LmFjdGl2ZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogIH0KCiAgLmxzLW1vZGFsLWxpZ2h0Ym94IGltZywKICAubHMtbW9kYWwtbGlnaHRib3ggdmlkZW8gewogICAgbWF4LXdpZHRoOiAxMDAlOwogICAgbWF4LWhlaWdodDogOTB2aDsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgYmFja2dyb3VuZDogIzAwMDsKICB9CgogIGJvZHkubHMtbW9kYWwtb3BlbiB7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogIH0KCiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgUmVzcG9uc2l2ZSArIEF2YWRhIHByb3RlY3Rpb24KICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMDBweCkgewogICAgLmxzLWhlcm8taW5uZXIgewogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgIH0KCiAgICAubHMtc3VwcG9ydC1jYXJkIHsKICAgICAgbWF4LXdpZHRoOiA1MjBweDsKICAgIH0KCiAgICAubHMtZ3VpZGVzLWdyaWQgewogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7CiAgICB9CgogICAgLmxzLWZpbHRlci1yb3cgewogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0OwogICAgfQoKICAgIC5scy1yZXN1bHRzLWxhYmVsIHsKICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIH0KCiAgICAubHMtbW9kYWwtY29udGVudCB7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgfQoKICAgIC5scy1tb2RhbC1tZWRpYS1wYW5lbCB7CiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCk7CiAgICAgIG1pbi1oZWlnaHQ6IDM2MHB4OwogICAgfQoKICAgIC5scy1tb2RhbC1zdWJ0aXRsZSB7CiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICB9CiAgfQoKICAvKiBEZXNrdG9wL3RhYmxldCBwcm90ZWN0aW9uIGZyb20gQXZhZGEvZ2xvYmFsIHN0eWxlcyAqLwogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlICogewogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtaGVyby10aXRsZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc2VjdGlvbi10aXRsZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC10aXRsZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stdGl0bGUsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWN0YS10aXRsZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtdGl0bGUsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWVtcHR5LXRpdGxlLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zdXBwb3J0LWNhcmQtdGl0bGUsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNvbWluZy10aXRsZSB7CiAgICBmb250LWZhbWlseTogJ1BvcHBpbnMnLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvLXRpdGxlLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jdGEtdGl0bGUsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLXRpdGxlLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zdXBwb3J0LWNhcmQtdGl0bGUgewogICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zZWN0aW9uLXRpdGxlLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLXRpdGxlLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1xdWljay10aXRsZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZW1wdHktdGl0bGUsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNvbWluZy10aXRsZSB7CiAgICBjb2xvcjogdmFyKC0tbHMtdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtdGl0bGUgewogICAgZm9udC1zaXplOiAxN3B4ICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMS4zMiAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDgwMCAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW0gIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAwIDhweCAwICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC10aXRsZSB7CiAgICBmb250LXNpemU6IDIxcHggIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI4ICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1kZXNjcmlwdGlvbiB7CiAgICBjb2xvcjogIzRmNjI3MyAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiAxMy41cHggIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxLjYyICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1mZWF0dXJlZC1jYXJkIC5scy1jYXJkLWRlc2NyaXB0aW9uIHsKICAgIGZvbnQtc2l6ZTogMTQuNXB4ICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1iYWRnZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLWxhYmVsLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1iYWRnZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtaGVyby1raWNrZXIsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWJhZGdlLXNvZnQgewogICAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA4MDAgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIGEsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgYTpob3ZlciwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSBhOmZvY3VzLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIGJ1dHRvbiwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSBidXR0b246aG92ZXIsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgYnV0dG9uOmZvY3VzIHsKICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgIG91dGxpbmUtY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuNTUpICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcmVzb3VyY2UtY2FyZCB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICB0cmFuc2l0aW9uOgogICAgICB0cmFuc2Zvcm0gOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgYm9yZGVyLWNvbG9yIDkwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpICFpbXBvcnRhbnQsCiAgICAgIGJveC1zaGFkb3cgOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgYmFja2dyb3VuZC1jb2xvciA5MDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXJlc291cmNlLWNhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpICFpbXBvcnRhbnQ7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuNDIpICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiAwIDEycHggMzRweCByZ2JhKDAsIDQ1LCA3NiwgMC4xMiksIDAgNHB4IDEycHggcmdiYSgwLCA0NSwgNzYsIDAuMDYpICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1ib2R5IHsKICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1mb290ZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICBib3R0b206IGF1dG8gIWltcG9ydGFudDsKICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBjb2x1bW4tZ2FwOiAxNHB4ICFpbXBvcnRhbnQ7CiAgICBtaW4taGVpZ2h0OiA1OHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAxNHB4IDE4cHggIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQ6ICNmOGZhZmIgIWltcG9ydGFudDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZThlZWYyICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1tZXRhIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBnYXA6IDZweCAhaW1wb3J0YW50OwogICAgbWluLXdpZHRoOiAwICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzgxOTNhMyAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMS4yICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1tZXRhIHN2ZyB7CiAgICB3aWR0aDogMTNweCAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxM3B4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtcmVhZCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgZ2FwOiA2cHggIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgICBtaW4td2lkdGg6IDc2cHggIWltcG9ydGFudDsKICAgIG1pbi1oZWlnaHQ6IDM0cHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDhweCAxM3B4ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50OwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCA0NSwgNzYsIDAuMTApICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogdmFyKC0tbHMtYnJhbmQtZGFyaykgIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDg1MCAhaW1wb3J0YW50OwogICAgbGluZS1oZWlnaHQ6IDEgIWltcG9ydGFudDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgNDUsIDc2LCAwLjA1KSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjoKICAgICAgdHJhbnNmb3JtIDkwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpICFpbXBvcnRhbnQsCiAgICAgIGJhY2tncm91bmQtY29sb3IgOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgYm9yZGVyLWNvbG9yIDkwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpICFpbXBvcnRhbnQsCiAgICAgIGJveC1zaGFkb3cgOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgY29sb3IgOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgZ2FwIDkwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcmVzb3VyY2UtY2FyZDpob3ZlciAubHMtY2FyZC1yZWFkLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLXJlYWQ6aG92ZXIgewogICAgZ2FwOiA4cHggIWltcG9ydGFudDsKICAgIGNvbG9yOiAjMDA3Zjc3ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMzYpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDIyOSwgMjExLCAwLjA4KSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDQ1LCA3NiwgMC4wNykgIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLXJlYWQgc3ZnIHsKICAgIHdpZHRoOiAxM3B4ICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEzcHggIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stY2FyZCwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXBpbGwsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYnRuLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1idG4sCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWVtcHR5LWJ0biwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc3VwcG9ydC1saW5rLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1jbG9zZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtbWVkaWEtbmF2LAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1kb3QsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLXpvb20taGludCwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc2VhcmNoLWlucHV0LAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1xdWljay1hcnJvdyB7CiAgICB0cmFuc2l0aW9uOgogICAgICB0cmFuc2Zvcm0gOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgYmFja2dyb3VuZC1jb2xvciA5MDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50LAogICAgICBib3JkZXItY29sb3IgOTAwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgIWltcG9ydGFudCwKICAgICAgYm94LXNoYWRvdyA5MDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50LAogICAgICBjb2xvciA5MDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50LAogICAgICBvcGFjaXR5IDkwMG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpICFpbXBvcnRhbnQsCiAgICAgIGdhcCA5MDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50LAogICAgICB3aWR0aCA5MDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWZpbHRlci1waWxsOmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC40MikgIWltcG9ydGFudDsKICAgIGNvbG9yOiB2YXIoLS1scy10ZXh0LXByaW1hcnkpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDIyOSwgMjExLCAwLjA0KSAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWZpbHRlci1waWxsLmFjdGl2ZSwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXBpbGwuYWN0aXZlOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWxzLWJyYW5kLWRhcmspICFpbXBvcnRhbnQ7CiAgICBib3JkZXItY29sb3I6IHZhcigtLWxzLWJyYW5kLWRhcmspICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXF1aWNrLWNhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCkgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC40MikgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMDM1KSAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogMCA1cHggMTZweCByZ2JhKDAsIDQ1LCA3NiwgMC4wNikgIWltcG9ydGFudDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXF1aWNrLWNhcmQ6aG92ZXIgLmxzLXF1aWNrLWFycm93IHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzAwYTg5ZCAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYnRuOmhvdmVyLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1idG46aG92ZXIsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWVtcHR5LWJ0bjpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgIWltcG9ydGFudDsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIH0KCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXN1cHBvcnQtbGluaywKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc3VwcG9ydC1saW5rOnZpc2l0ZWQgewogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7CiAgICB3aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDlweCAxNHB4ICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZDogcmdiYSgwLCAyMjksIDIxMSwgMC4xMikgIWltcG9ydGFudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMjI5LCAyMTEsIDAuMjgpICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDc1MCAhaW1wb3J0YW50OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc3VwcG9ydC1saW5rOmhvdmVyLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zdXBwb3J0LWxpbms6Zm9jdXMgewogICAgYmFja2dyb3VuZDogcmdiYSgwLCAyMjksIDIxMSwgMC4xOCkgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC40NCkgIWltcG9ydGFudDsKICAgIGNvbG9yOiB2YXIoLS1scy1icmFuZC10ZWFsKSAhaW1wb3J0YW50OwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zdXBwb3J0LWxpbmsgc3ZnIHsKICAgIGNvbG9yOiBjdXJyZW50Q29sb3IgIWltcG9ydGFudDsKICAgIHN0cm9rZTogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7CiAgfQoKICAvKiBNb2JpbGU6IGNvbXBhY3QgZmlsdGVycyBhbmQgZnVsbC13aWR0aCBjYXJkIGFydCAqLwogIEBtZWRpYSAobWF4LXdpZHRoOiA3NjBweCkgewogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgewogICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy13cmFwIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctbGVmdDogMTZweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8gewogICAgICBwYWRkaW5nOiAzOHB4IDAgNjZweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiBjbGFtcCgycmVtLCAxMHZ3LCAyLjc1cmVtKSAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS4wOCAhaW1wb3J0YW50OwogICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDRlbSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgZm9udC1zaXplOiAxNS41cHggIWltcG9ydGFudDsKICAgICAgbGluZS1oZWlnaHQ6IDEuNjIgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtaGVyby1hY3Rpb25zIHsKICAgICAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYnRuLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWJ0biwKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1lbXB0eS1idG4gewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtaW4taGVpZ2h0OiA1MHB4ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDEzcHggMThweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zdXBwb3J0LWNhcmQgewogICAgICBwYWRkaW5nOiAyMnB4ICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY29udHJvbC16b25lIHsKICAgICAgbWFyZ2luLXRvcDogLTM2cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY29udHJvbC1jYXJkIHsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXNlYXJjaC1yb3cgewogICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgIGdhcDogMTBweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXNlYXJjaC1pbnB1dCB7CiAgICAgIG1pbi1oZWlnaHQ6IDUycHggIWltcG9ydGFudDsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHggIWltcG9ydGFudDsKICAgICAgcGFkZGluZy1sZWZ0OiA0NnB4ICFpbXBvcnRhbnQ7CiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmIgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc2VhcmNoLWNvdW50IHsKICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1ICFpbXBvcnRhbnQ7CiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDsKICAgICAgY29sb3I6ICM3MTgzOTMgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXJvdyB7CiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDE1cHggMTZweCAxN3B4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWZpbHRlci1ncm91cHMgewogICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgZ2FwOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWZpbHRlci1ncm91cCB7CiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgICBnYXA6IDhweCAhaW1wb3J0YW50OwogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1maWx0ZXItbGFiZWwgewogICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICBtaW4td2lkdGg6IDAgIWltcG9ydGFudDsKICAgICAgbWFyZ2luLWxlZnQ6IDJweCAhaW1wb3J0YW50OwogICAgICBjb2xvcjogIzdhOGI5OSAhaW1wb3J0YW50OwogICAgICBmb250LXNpemU6IDExcHggIWltcG9ydGFudDsKICAgICAgZm9udC13ZWlnaHQ6IDg1MCAhaW1wb3J0YW50OwogICAgICBsZXR0ZXItc3BhY2luZzogMC41NXB4ICFpbXBvcnRhbnQ7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXBpbGxzIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgICBnYXA6IDhweCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdy14OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAycHggMnB4IDhweCAhaW1wb3J0YW50OwogICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2ggIWltcG9ydGFudDsKICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeCBwcm94aW1pdHkgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXBpbGxzOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXBpbGwgewogICAgICBmbGV4OiAwIDAgYXV0byAhaW1wb3J0YW50OwogICAgICBtaW4taGVpZ2h0OiA0MnB4ICFpbXBvcnRhbnQ7CiAgICAgIG1heC13aWR0aDogODJ2dyAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAxMHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLXBpbGwuYWN0aXZlIHsKICAgICAgYm94LXNoYWRvdzogMCA1cHggMTZweCByZ2JhKDAsIDQ1LCA3NiwgMC4xNCkgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcmVzdWx0cy1sYWJlbCB7CiAgICAgIG1hcmdpbi10b3A6IDEycHggIWltcG9ydGFudDsKICAgICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tYWluIHsKICAgICAgcGFkZGluZzogMzBweCAwIDU4cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc2VjdGlvbiB7CiAgICAgIG1hcmdpbi1ib3R0b206IDQwcHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc2VjdGlvbi1oZWFkZXIgewogICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICAgICAgZ2FwOiA4cHggIWltcG9ydGFudDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTdweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zZWN0aW9uLWhlYWRpbmctd3JhcCB7CiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXNlY3Rpb24tbm90ZSB7CiAgICAgIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWZlYXR1cmVkLWdyaWQsCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZ3VpZGVzLWdyaWQsCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stZ3JpZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgZ2FwOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXJlc291cmNlLWNhcmQgewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICAgICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQgewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtaW4td2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1pbi1oZWlnaHQ6IDkycHggIWltcG9ydGFudDsKICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDUgIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMThweCAhaW1wb3J0YW50OwogICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC1hcnQgewogICAgICBtaW4taGVpZ2h0OiAxMzJweCAhaW1wb3J0YW50OwogICAgICBhc3BlY3QtcmF0aW86IDE2IC8gNyAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWljb24gewogICAgICB3aWR0aDogNTZweCAhaW1wb3J0YW50OwogICAgICBoZWlnaHQ6IDU2cHggIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWljb24gc3ZnIHsKICAgICAgd2lkdGg6IDI3cHggIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiAyN3B4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWFydC1udW1iZXIgewogICAgICBmb250LXNpemU6IDU4cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtYXJ0LWxhYmVsIHsKICAgICAgZm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7CiAgICAgIGxldHRlci1zcGFjaW5nOiAxLjhweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1hcnQtc3RlcHMgewogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1hcnQtc3RlcCB7CiAgICAgIHdpZHRoOiAzMXB4ICFpbXBvcnRhbnQ7CiAgICAgIGhlaWdodDogMzFweCAhaW1wb3J0YW50OwogICAgICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1ib2R5IHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMThweCAyMHB4IDIwcHggIWltcG9ydGFudDsKICAgICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC1ib2R5IHsKICAgICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWJhZGdlcyB7CiAgICAgIGdhcDogN3B4ICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1ib3R0b206IDEycHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMTlweCAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS4yOCAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tYm90dG9tOiA4cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMjFweCAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS4yNSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWRlc2NyaXB0aW9uIHsKICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtZm9vdGVyIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG8gIWltcG9ydGFudDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICBjb2x1bW4tZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDEzcHggMTZweCAhaW1wb3J0YW50OwogICAgICBtaW4taGVpZ2h0OiA1NnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtbWV0YSB7CiAgICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7CiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgZm9udC1zaXplOiAxMS41cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1yZWFkIHsKICAgICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIG1pbi1oZWlnaHQ6IDM0cHggIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogOHB4IDEzcHggIWltcG9ydGFudDsKICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXF1aWNrLWNhcmQgewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1xdWljay1pY29uIHsKICAgICAgd2lkdGg6IDQ4cHggIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXF1aWNrLXRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxNC41cHggIWltcG9ydGFudDsKICAgICAgbGluZS1oZWlnaHQ6IDEuMjUgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stbWV0YSB7CiAgICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jb21pbmctc29vbiB7CiAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogMThweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1ib3R0b20tY3RhIHsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAyOHB4IDIycHggIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogMjJweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jdGEtdGl0bGUgewogICAgICBmb250LXNpemU6IDI1cHggIWltcG9ydGFudDsKICAgICAgbGluZS1oZWlnaHQ6IDEuMTggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY3RhLXRleHQgewogICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICAgICAgbGluZS1oZWlnaHQ6IDEuNiAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jdGEtYWN0aW9ucyB7CiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbCB7CiAgICAgIHdpZHRoOiBtaW4oOTZ2dywgNzYwcHgpICFpbXBvcnRhbnQ7CiAgICAgIG1heC1oZWlnaHQ6IDkydmggIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1oZWFkZXIgewogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDE4cHggNTRweCAxOHB4IDIwcHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYmFkZ2VzIHsKICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLXBhbmVsLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWluZm8tcGFuZWwgewogICAgICBwYWRkaW5nOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWZvb3RlciB7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYWN0aW9ucyB7CiAgICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgfQogIH0KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDQyMHB4KSB7CiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtd3JhcCB7CiAgICAgIHBhZGRpbmctbGVmdDogMTRweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAxNHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtYm9keSB7CiAgICAgIHBhZGRpbmctbGVmdDogMTdweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAxN3B4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtdGl0bGUgewogICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydCB7CiAgICAgIG1pbi1oZWlnaHQ6IDg0cHggIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmVhdHVyZWQtY2FyZCAubHMtY2FyZC1hcnQgewogICAgICBtaW4taGVpZ2h0OiAxMjJweCAhaW1wb3J0YW50OwogICAgfQogIH0KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSBhbmQgKGhvdmVyOiBub25lKSB7CiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcmVzb3VyY2UtY2FyZDpob3ZlciwKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1xdWljay1jYXJkOmhvdmVyLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYnRuOmhvdmVyLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWJ0bjpob3ZlciwKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1lbXB0eS1idG46aG92ZXIgewogICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICB9CgoKICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBGSU5BTCBNT0JJTEUgQ0xFQU5VUDogZWRnZS10by1lZGdlIG1vYmlsZSBoZXJvLCBubyBtb2RhbCBkb3VibGUtc2Nyb2xsLAogICAgIG5hdGl2ZSBtb2JpbGUgZmlsdGVycywgc2hvcnRlciBtb2JpbGUgbW9kYWwuIEtlZXAgdGhpcyBhdCB0aGUgYm90dG9tLgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICAubHMtbW9iaWxlLWZpbHRlci1jb250cm9scyB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSB7CiAgICBodG1sLAogICAgYm9keSB7CiAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdy14OiBoaWRkZW4gIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSB7CiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxzLWJnLWxpZ2h0KSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qCiAgICAgIEhlcm86IHB1bGwgdGhlIGJsdWUgcGFuZWwgaW50byB0aGUgV29yZFByZXNzL0F2YWRhIHNpZGUgZ3V0dGVyLAogICAgICBidXQgYXZvaWQgMTAwdncgc28gd2UgZG8gbm90IGNyZWF0ZSB0aGUgZXh0cmEgcmlnaHQtc2lkZSBzY3JvbGxiYXIuCiAgICAgIFRoZSBibHVlIHJlYWNoZXMgdGhlIG1vYmlsZSB2aWV3cG9ydCBlZGdlLCB3aGlsZSBjb250ZW50IHN0YXlzIHBhZGRlZCBpbnNpZGUuCiAgICAqLwogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8gewogICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsKICAgICAgbWFyZ2luLWxlZnQ6IC0zNHB4ICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1yaWdodDogLTM0cHggIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMzhweCA2MHB4IDY2cHggIWltcG9ydGFudDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtaGVybyAubHMtd3JhcCwKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvIC5scy1oZXJvLWlubmVyIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tdGl0bGUgewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjlyZW0sIDcuNnZ3LCAyLjI4cmVtKSAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS4xICFpbXBvcnRhbnQ7CiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMzVlbSAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdy13cmFwOiBub3JtYWwgIWltcG9ydGFudDsKICAgICAgd29yZC1icmVhazogbm9ybWFsICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tZGVzY3JpcHRpb24gewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgZm9udC1zaXplOiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjYyICFpbXBvcnRhbnQ7CiAgICAgIG92ZXJmbG93LXdyYXA6IG5vcm1hbCAhaW1wb3J0YW50OwogICAgICB3b3JkLWJyZWFrOiBub3JtYWwgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc3VwcG9ydC1jYXJkLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYWN0aW9ucyB7CiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogTmF0aXZlIG1vYmlsZSBmaWx0ZXJzLCBiZWNhdXNlIHRoZSBob3Jpem9udGFsIGNoaXAgcm93IHdhcyBhd2t3YXJkIG9uIHBob25lcy4gKi8KICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2JpbGUtZmlsdGVyLWNvbnRyb2xzIHsKICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICBnYXA6IDEycHggIWltcG9ydGFudDsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZmlsdGVyLWdyb3VwcyB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9iaWxlLWZpbHRlci1maWVsZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgZ2FwOiA2cHggIWltcG9ydGFudDsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vYmlsZS1maWx0ZXItZmllbGQgc3BhbiB7CiAgICAgIGNvbG9yOiAjN2E4Yjk5ICFpbXBvcnRhbnQ7CiAgICAgIGZvbnQtc2l6ZTogMTFweCAhaW1wb3J0YW50OwogICAgICBmb250LXdlaWdodDogODUwICFpbXBvcnRhbnQ7CiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjU1cHggIWltcG9ydGFudDsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS4yICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vYmlsZS1maWx0ZXItZmllbGQgc2VsZWN0IHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogNDhweCAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmFkaXVzOiAxNHB4ICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCkgIWltcG9ydGFudDsKICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICBjb2xvcjogdmFyKC0tbHMtdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAwIDQycHggMCAxNHB4ICFpbXBvcnRhbnQ7CiAgICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucycsIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogICAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDsKICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCA0NSwgNzYsIDAuMDQpICFpbXBvcnRhbnQ7CiAgICAgIGFwcGVhcmFuY2U6IGF1dG8gIWltcG9ydGFudDsKICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZW51bGlzdCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2JpbGUtZmlsdGVyLWZpZWxkIHNlbGVjdDpmb2N1cyB7CiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC43MikgIWltcG9ydGFudDsKICAgICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMCwgMjI5LCAyMTEsIDAuMTIpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXJlc3VsdHMtbGFiZWwgewogICAgICBtYXJnaW4tdG9wOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogTW9kYWw6IG9uZSBpbnRlcm5hbCBzY3JvbGwgb25seSwgc2hvcnRlciBoZWlnaHQsIGNsb3NlIGJ1dHRvbiByZWFjaGFibGUuICovCiAgICBodG1sLmxzLW1vZGFsLW9wZW4sCiAgICBib2R5LmxzLW1vZGFsLW9wZW4gewogICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICB0b3VjaC1hY3Rpb246IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYmFja2Ryb3AuYWN0aXZlIHsKICAgICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CiAgICAgIGluc2V0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIGhlaWdodDogMTAwZHZoICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDE4cHggMTJweCAyNHB4ICFpbXBvcnRhbnQ7CiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDI1LCA0OCwgMC45MikgIWltcG9ydGFudDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIExvZ2dlZC1pbiBXb3JkUHJlc3MgYWRtaW4gYmFyIGNhbiBjb3ZlciB0aGUgdG9wIG9mIGZpeGVkIG1vZGFscy4gKi8KICAgIGh0bWwgYm9keS5hZG1pbi1iYXIgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYmFja2Ryb3AuYWN0aXZlIHsKICAgICAgdG9wOiA0NnB4ICFpbXBvcnRhbnQ7CiAgICAgIGhlaWdodDogY2FsYygxMDBkdmggLSA0NnB4KSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbCB7CiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1heC13aWR0aDogNTIwcHggIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwZHZoIC0gNTRweCkgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIGJveC1zaGFkb3c6IDAgMThweCA1NnB4IHJnYmEoMCwgMCwgMCwgMC4zNCkgIWltcG9ydGFudDsKICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keS5hZG1pbi1iYXIgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwgewogICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMGR2aCAtIDk4cHgpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWhlYWRlciB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICB0b3A6IGF1dG8gIWltcG9ydGFudDsKICAgICAgei1pbmRleDogNSAhaW1wb3J0YW50OwogICAgICBmbGV4OiAwIDAgYXV0byAhaW1wb3J0YW50OwogICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmc6IDE1cHggNTRweCAxM3B4IDE4cHggIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDAgMCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC10aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMTlweCAhaW1wb3J0YW50OwogICAgICBsaW5lLWhlaWdodDogMS4yICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbjogMCAwIDRweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1zdWJ0aXRsZSB7CiAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDsKICAgICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcCAhaW1wb3J0YW50OwogICAgICBmb250LXNpemU6IDEyLjI1cHggIWltcG9ydGFudDsKICAgICAgbGluZS1oZWlnaHQ6IDEuNDUgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtY2xvc2UgewogICAgICB0b3A6IDEycHggIWltcG9ydGFudDsKICAgICAgcmlnaHQ6IDE0cHggIWltcG9ydGFudDsKICAgICAgd2lkdGg6IDM4cHggIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiAzOHB4ICFpbXBvcnRhbnQ7CiAgICAgIG1pbi13aWR0aDogMzhweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWNvbnRlbnQgewogICAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgIG92ZXJmbG93LXk6IGF1dG8gIWltcG9ydGFudDsKICAgICAgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaCAhaW1wb3J0YW50OwogICAgICBvdmVyc2Nyb2xsLWJlaGF2aW9yOiBjb250YWluICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLXBhbmVsIHsKICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAxMnB4IDE0cHggMTBweCAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCkgIWltcG9ydGFudDsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbHMtYmctbGlnaHQpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLXNoZWxsIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDguNiAhaW1wb3J0YW50OwogICAgICBmbGV4OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHggIWltcG9ydGFudDsKICAgICAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLXN0YWdlIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtbWVkaWEtc3RhZ2UgaW1nLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLXN0YWdlIHZpZGVvIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtbWVkaWEtbmF2LAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLW5hdi52aXNpYmxlIHsKICAgICAgd2lkdGg6IDM0cHggIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiAzNHB4ICFpbXBvcnRhbnQ7CiAgICAgIG1pbi13aWR0aDogMzRweCAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6IDM0cHggIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50OwogICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLW5hdi5wcmV2IHsKICAgICAgbGVmdDogMTBweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1tZWRpYS1uYXYubmV4dCB7CiAgICAgIHJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLW5hdjpub3QoLnZpc2libGUpIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC16b29tLWhpbnQgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWRvdHMgewogICAgICBtYXJnaW4tdG9wOiA5cHggIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogOHB4ICFpbXBvcnRhbnQ7CiAgICAgIGdhcDogNXB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWRvdCB7CiAgICAgIHdpZHRoOiA3cHggIWltcG9ydGFudDsKICAgICAgaGVpZ2h0OiA3cHggIWltcG9ydGFudDsKICAgICAgbWluLXdpZHRoOiA3cHggIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1kb3QuYWN0aXZlIHsKICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDsKICAgICAgbWluLXdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWluZm8tcGFuZWwgewogICAgICBwYWRkaW5nOiAxNnB4IDE2cHggMThweCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1pbmZvLWJsb2NrIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMTlweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1sZWFybi1saXN0IGxpIHsKICAgICAgZm9udC1zaXplOiAxMi43NXB4ICFpbXBvcnRhbnQ7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ1ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNvdmVyZWQtaXRlbSB7CiAgICAgIHBhZGRpbmc6IDhweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNvdmVyZWQtdGV4dCB7CiAgICAgIGZvbnQtc2l6ZTogMTIuNzVweCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1mb290ZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIHotaW5kZXg6IDQgIWltcG9ydGFudDsKICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgICBnYXA6IDEwcHggIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMTJweCAxNnB4IG1heCgxMnB4LCBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpICFpbXBvcnRhbnQ7CiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmIgIWltcG9ydGFudDsKICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxzLWJvcmRlci1saWdodCkgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYWN0aW9ucyB7CiAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgZ2FwOiA5cHggIWltcG9ydGFudDsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIH0KCiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYWN0aW9ucyAubHMtbW9kYWwtYnRuIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWluLWhlaWdodDogNDRweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLWJvdHRvbTogMTBweCAhaW1wb3J0YW50OwogICAgfQogIH0KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDQyMHB4KSB7CiAgICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtaGVybyB7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMzBweCAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tcmlnaHQ6IC0zMHB4ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctbGVmdDogNTJweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiA1MnB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWJhY2tkcm9wLmFjdGl2ZSB7CiAgICAgIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctdG9wOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgfQoKCiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgQUJTT0xVVEUgTU9CSUxFIEVER0UgKyBNT0RBTCBCWVBBU1MgU1VQUE9SVAogICAgIFRoaXMgcmVtb3ZlcyBXb3JkUHJlc3MvQXZhZGEgc2lkZSBndXR0ZXJzIG9uIHRoZSBMZWFybiBwYWdlIG9ubHkuCiAgICAgTW9iaWxlIGd1aWRlIGNhcmRzIG9wZW4gdGhlIGZ1bGwgZ3VpZGUgZGlyZWN0bHkgaW5zdGVhZCBvZiBsYXVuY2hpbmcgbW9kYWxzLgogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKICBAbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHsKICAgIGh0bWwsCiAgICBib2R5IHsKICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdy14OiBjbGlwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgYm9keTpoYXMoI2xzU3VwcG9ydFBhZ2UpICNtYWluLAogICAgYm9keTpoYXMoI2xzU3VwcG9ydFBhZ2UpICNjb250ZW50LAogICAgYm9keTpoYXMoI2xzU3VwcG9ydFBhZ2UpIC5wb3N0LWNvbnRlbnQsCiAgICBib2R5OmhhcygjbHNTdXBwb3J0UGFnZSkgLmVudHJ5LWNvbnRlbnQsCiAgICBib2R5OmhhcygjbHNTdXBwb3J0UGFnZSkgLmZ1c2lvbi1wYWdlLWNvbnRlbnQsCiAgICBib2R5OmhhcygjbHNTdXBwb3J0UGFnZSkgLmZ1c2lvbi1mdWxsd2lkdGgsCiAgICBib2R5OmhhcygjbHNTdXBwb3J0UGFnZSkgLmZ1c2lvbi1yb3csCiAgICBib2R5OmhhcygjbHNTdXBwb3J0UGFnZSkgLmZ1c2lvbi1idWlsZGVyLXJvdywKICAgIGJvZHk6aGFzKCNsc1N1cHBvcnRQYWdlKSAuZnVzaW9uLWxheW91dC1jb2x1bW4sCiAgICBib2R5OmhhcygjbHNTdXBwb3J0UGFnZSkgLmZ1c2lvbi1jb2x1bW4td3JhcHBlciB7CiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIHsKICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdy14OiBjbGlwICFpbXBvcnRhbnQ7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxzLWJnLWxpZ2h0KSAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAzOHB4IDIycHggNjZweCAhaW1wb3J0YW50OwogICAgICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgfQoKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvIC5scy13cmFwLAogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8gLmxzLWhlcm8taW5uZXIgewogICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNvbnRyb2wtem9uZSwKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tYWluIHsKICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICBvdmVyZmxvdy14OiBjbGlwICFpbXBvcnRhbnQ7CiAgICB9CiAgfQoKICBAbWVkaWEgKG1heC13aWR0aDogNDIwcHgpIHsKICAgIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1oZXJvIHsKICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIHBhZGRpbmctbGVmdDogMjBweCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgICB9CiAgfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRklOQUwgU0NPUEVEIDUoaXNoKSBUT1VSIENBUkQgQVJUCiAgIFBhc3RlIGF0IHRoZSBWRVJZIEJPVFRPTSBvZiB0aGUgc3R5bGUgYmxvY2sKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciB7CiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIGlzb2xhdGlvbjogaXNvbGF0ZSAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOgogICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNDglLCByZ2JhKDAsIDIyOSwgMjExLCAwLjA4KSAwJSwgcmdiYSgwLCAyMjksIDIxMSwgMC4wMykgMjYlLCB0cmFuc3BhcmVudCA1MiUpLAogICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwMmQ0YyAwJSwgIzAwM2Q2MyA1NSUsICMwMDE5MzAgMTAwJSkgIWltcG9ydGFudDsKfQoKLyogVG9wLWxlZnQgcGlsbCAqLwpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1waWxsIHsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICB0b3A6IDE2cHggIWltcG9ydGFudDsKICBsZWZ0OiAxNnB4ICFpbXBvcnRhbnQ7CiAgei1pbmRleDogNCAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMTQpICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAyMjksIDIxMSwgMC4yNCkgIWltcG9ydGFudDsKICBjb2xvcjogIzAwZTVkMyAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA4NTAgIWltcG9ydGFudDsKICBsZXR0ZXItc3BhY2luZzogMC42cHggIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBHbG93ICovCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLWdsb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIGxlZnQ6IDUwJSAhaW1wb3J0YW50OwogIHRvcDogNTAlICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEzMHB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAxMzBweCAhaW1wb3J0YW50OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC00NCUpICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDAsIDIyOSwgMjExLCAwLjI0KSAwJSwgcmdiYSgwLCAyMjksIDIxMSwgMC4xMCkgMzQlLCByZ2JhKDAsIDIyOSwgMjExLCAwLjA0KSA1NCUsIHRyYW5zcGFyZW50IDc0JSkgIWltcG9ydGFudDsKICB6LWluZGV4OiAxICFpbXBvcnRhbnQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsKfQoKLyogT3JiaXQgcmluZyAqLwpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1vcmJpdCB7CiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7CiAgbGVmdDogNTAlICFpbXBvcnRhbnQ7CiAgdG9wOiA1MCUgIWltcG9ydGFudDsKICB3aWR0aDogMTY4cHggIWltcG9ydGFudDsKICBoZWlnaHQ6IDE2OHB4ICFpbXBvcnRhbnQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTQ0JSkgIWltcG9ydGFudDsKICBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50OwogIGJvcmRlcjogMS41cHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSAhaW1wb3J0YW50OwogIHotaW5kZXg6IDEgIWltcG9ydGFudDsKICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBMaXR0bGUgb3JiaXQgZG90ICovCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLW9yYml0LWRvdCB7CiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7CiAgbGVmdDogY2FsYyg1MCUgKyA1NnB4KSAhaW1wb3J0YW50OwogIHRvcDogY2FsYyg1MCUgLSAxOHB4KSAhaW1wb3J0YW50OwogIHdpZHRoOiA4cHggIWltcG9ydGFudDsKICBoZWlnaHQ6IDhweCAhaW1wb3J0YW50OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC00NCUpICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiAjZjY3MWVhICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgyNDYsIDExMywgMjM0LCAwLjQ1KSAhaW1wb3J0YW50OwogIHotaW5kZXg6IDIgIWltcG9ydGFudDsKICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50Owp9CgovKiBNYWluIGNlbnRlciB3cmFwcGVyICovCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLWNlbnRlciB7CiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgei1pbmRleDogMyAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi8qIEJpZyA1ICovCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy1hcnQtbnVtYmVyIHsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKICBjb2xvcjogIzAwZTVkMyAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogNjRweCAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiA4NTAgIWltcG9ydGFudDsKICBsaW5lLWhlaWdodDogMC45NSAhaW1wb3J0YW50OwogIGxldHRlci1zcGFjaW5nOiAtMC4wM2VtICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgdGV4dC1zaGFkb3c6IDAgMCAxOHB4IHJnYmEoMCwgMjI5LCAyMTEsIDAuMTIpICFpbXBvcnRhbnQ7Cn0KCi8qIElTSCBNSU4gKi8KaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtYXJ0LXRvdXIgLmxzLWFydC1sYWJlbCB7CiAgbWFyZ2luLXRvcDogOHB4ICFpbXBvcnRhbnQ7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44MikgIWltcG9ydGFudDsKICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKICBmb250LXdlaWdodDogODAwICFpbXBvcnRhbnQ7CiAgbGV0dGVyLXNwYWNpbmc6IDIuMnB4ICFpbXBvcnRhbnQ7CiAgbGluZS1oZWlnaHQ6IDEgIWltcG9ydGFudDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi8qIExpdHRsZSBzcGFyayBkb3RzICovCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLXNwYXJrIHsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICB6LWluZGV4OiAyICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsKICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50Owp9CgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1zcGFyay5zcGFyay0xIHsKICB3aWR0aDogNnB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiA2cHggIWltcG9ydGFudDsKICB0b3A6IDM4cHggIWltcG9ydGFudDsKICBsZWZ0OiBjYWxjKDUwJSAtIDY2cHgpICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI2KSAhaW1wb3J0YW50Owp9CgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1zcGFyay5zcGFyay0yIHsKICB3aWR0aDogNHB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiA0cHggIWltcG9ydGFudDsKICB0b3A6IDU4cHggIWltcG9ydGFudDsKICByaWdodDogY2FsYyg1MCUgLSA3MHB4KSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6IHJnYmEoMCwgMjI5LCAyMTEsIDAuNTUpICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLXNwYXJrLnNwYXJrLTMgewogIHdpZHRoOiA1cHggIWltcG9ydGFudDsKICBoZWlnaHQ6IDVweCAhaW1wb3J0YW50OwogIGJvdHRvbTogMzRweCAhaW1wb3J0YW50OwogIGxlZnQ6IGNhbGMoNTAlIC0gNTRweCkgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTg0LCA3NywgMC43NSkgIWltcG9ydGFudDsKfQoKLyogTW9iaWxlIHR1bmluZyAqLwpAbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHsKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtYXJ0LW51bWJlciB7CiAgICBmb250LXNpemU6IDU4cHggIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy1hcnQtbGFiZWwgewogICAgZm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7CiAgICBsZXR0ZXItc3BhY2luZzogMnB4ICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1vcmJpdCB7CiAgICB3aWR0aDogMTUycHggIWltcG9ydGFudDsKICAgIGhlaWdodDogMTUycHggIWltcG9ydGFudDsKICB9CgogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLWdsb3cgewogICAgd2lkdGg6IDExOHB4ICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDExOHB4ICFpbXBvcnRhbnQ7CiAgfQoKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1waWxsIHsKICAgIHRvcDogMTRweCAhaW1wb3J0YW50OwogICAgbGVmdDogMTRweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogNXB4IDEwcHggIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogOXB4ICFpbXBvcnRhbnQ7CiAgfQp9Cmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLWFydC10b3VyIC5scy10b3VyLXBpbGwgewogIHRvcDogMThweCAhaW1wb3J0YW50OwogIGxlZnQ6IDE4cHggIWltcG9ydGFudDsKfQoKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWNhcmQtYXJ0LXRvdXIgLmxzLXRvdXItb3JiaXQgewogIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA5KSAhaW1wb3J0YW50Owp9CgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1hcnQtdG91ciAubHMtdG91ci1nbG93IHsKICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoCiAgICBjaXJjbGUsCiAgICByZ2JhKDAsIDIyOSwgMjExLCAwLjIwKSAwJSwKICAgIHJnYmEoMCwgMjI5LCAyMTEsIDAuMDgpIDM0JSwKICAgIHJnYmEoMCwgMjI5LCAyMTEsIDAuMDMpIDU0JSwKICAgIHRyYW5zcGFyZW50IDc0JQogICkgIWltcG9ydGFudDsKfQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgTW9kYWwgbWVkaWEgZmlsbC1mcmFtZSBpbXByb3ZlbWVudAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1tZWRpYS1zaGVsbCwKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLW1lZGlhLXN0YWdlIHsKICBiYWNrZ3JvdW5kOiAjZWVmM2Y2ICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1tZWRpYS1zdGFnZSBpbWcgewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsKICBvYmplY3QtcG9zaXRpb246IGNlbnRlciB0b3AgIWltcG9ydGFudDsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1tb2RhbC1tZWRpYS1zdGFnZSB2aWRlbyB7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7CiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBGSU5BTCBGSUxURVIgVklTSUJJTElUWSBGSVgKICAgTXVzdCBzdGF5IGF0IHRoZSBWRVJZIEJPVFRPTSBvZiB0aGUgc3R5bGUgYmxvY2suCiAgIFRoZSBKUyB1c2VzIGNhcmQuaGlkZGVuLCBidXQgQXZhZGEvZGlzcGxheTpmbGV4IWltcG9ydGFudCBjYW4gb3ZlcnJpZGUgaXQuCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwoKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgW2RhdGEtY2FyZF1baGlkZGVuXSwKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXJlc291cmNlLWNhcmRbaGlkZGVuXSwKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXF1aWNrLWNhcmRbaGlkZGVuXSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgRklOQUwgU09GVCBIT1ZFUiBGSVgKICAgUGFzdGUgZGlyZWN0bHkgQUJPVkUgdGhlIGNsb3NpbmcgIHRhZy4KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSB7CiAgLS1scy1zb2Z0LWhvdmVyLXNwZWVkOiA4NTBtcyAhaW1wb3J0YW50OwogIC0tbHMtc29mdC1ob3Zlci1lYXNlOiBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSAhaW1wb3J0YW50Owp9CgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcmVzb3VyY2UtY2FyZCwKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLXF1aWNrLWNhcmQsCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1maWx0ZXItcGlsbCwKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYnRuLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYnRuLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZW1wdHktYnRuLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc3VwcG9ydC1saW5rLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtY2FyZC1yZWFkLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stYXJyb3cgewogIHRyYW5zaXRpb246CiAgICB0cmFuc2Zvcm0gdmFyKC0tbHMtc29mdC1ob3Zlci1zcGVlZCkgdmFyKC0tbHMtc29mdC1ob3Zlci1lYXNlKSwKICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tbHMtc29mdC1ob3Zlci1zcGVlZCkgdmFyKC0tbHMtc29mdC1ob3Zlci1lYXNlKSwKICAgIGJvcmRlci1jb2xvciB2YXIoLS1scy1zb2Z0LWhvdmVyLXNwZWVkKSB2YXIoLS1scy1zb2Z0LWhvdmVyLWVhc2UpLAogICAgYm94LXNoYWRvdyB2YXIoLS1scy1zb2Z0LWhvdmVyLXNwZWVkKSB2YXIoLS1scy1zb2Z0LWhvdmVyLWVhc2UpLAogICAgY29sb3IgdmFyKC0tbHMtc29mdC1ob3Zlci1zcGVlZCkgdmFyKC0tbHMtc29mdC1ob3Zlci1lYXNlKSwKICAgIGdhcCB2YXIoLS1scy1zb2Z0LWhvdmVyLXNwZWVkKSB2YXIoLS1scy1zb2Z0LWhvdmVyLWVhc2UpICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1yZXNvdXJjZS1jYXJkOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgIWltcG9ydGFudDsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuNDIpICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCAxMHB4IDI4cHggcmdiYSgwLCA0NSwgNzYsIDAuMTA1KSwgMCA0cHggMTBweCByZ2JhKDAsIDQ1LCA3NiwgMC4wNTUpICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1yZXNvdXJjZS1jYXJkOmhvdmVyIC5scy1jYXJkLXJlYWQsCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1jYXJkLXJlYWQ6aG92ZXIgewogIGdhcDogOHB4ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMwMDdmNzcgIWltcG9ydGFudDsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMzQpICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC4wNzUpICFpbXBvcnRhbnQ7CiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDQ1LCA3NiwgMC4wNjUpICFpbXBvcnRhbnQ7Cn0KCmh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1xdWljay1jYXJkOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KSAhaW1wb3J0YW50OwogIGJvcmRlci1jb2xvcjogcmdiYSgwLCAyMjksIDIxMSwgMC40KSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuMDM1KSAhaW1wb3J0YW50OwogIGJveC1zaGFkb3c6IDAgNXB4IDE2cHggcmdiYSgwLCA0NSwgNzYsIDAuMDU1KSAhaW1wb3J0YW50OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Owp9CgpodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stY2FyZDpob3ZlciAubHMtcXVpY2stYXJyb3cgewogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMwMGE4OWQgIWltcG9ydGFudDsKfQoKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWhlcm8tYnRuOmhvdmVyLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtbW9kYWwtYnRuOmhvdmVyLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZW1wdHktYnRuOmhvdmVyLApodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtc3VwcG9ydC1saW5rOmhvdmVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgIWltcG9ydGFudDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKfQoKaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLWZpbHRlci1waWxsOmhvdmVyIHsKICBib3JkZXItY29sb3I6IHJnYmEoMCwgMjI5LCAyMTEsIDAuNDIpICFpbXBvcnRhbnQ7CiAgY29sb3I6IHZhcigtLWxzLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDIyOSwgMjExLCAwLjA0KSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIGFuZCAoaG92ZXI6IG5vbmUpIHsKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcmVzb3VyY2UtY2FyZDpob3ZlciwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtcXVpY2stY2FyZDpob3ZlciwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtaGVyby1idG46aG92ZXIsCiAgaHRtbCBib2R5IC5scy1zdXBwb3J0LXBhZ2UgLmxzLW1vZGFsLWJ0bjpob3ZlciwKICBodG1sIGJvZHkgLmxzLXN1cHBvcnQtcGFnZSAubHMtZW1wdHktYnRuOmhvdmVyLAogIGh0bWwgYm9keSAubHMtc3VwcG9ydC1wYWdlIC5scy1zdXBwb3J0LWxpbms6aG92ZXIgewogICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgfQp9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJscy1zdXBwb3J0LXBhZ2UiIGlkPSJsc1N1cHBvcnRQYWdlIj4KICA8c2VjdGlvbiBjbGFzcz0ibHMtaGVybyI+CiAgICA8ZGl2IGNsYXNzPSJscy13cmFwIGxzLWhlcm8taW5uZXIiPgogICAgICA8ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxzLWhlcm8ta2lja2VyIj5DQVJMIExlYXJuICYgU3VwcG9ydDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxzLWhlcm8tdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjEiPkZpbmQgdGhlIHJpZ2h0IENBUkwgZ3VpZGUgZmFzdGVyLjwvZGl2PgogICAgICAgIDxwIGNsYXNzPSJscy1oZXJvLWRlc2NyaXB0aW9uIj5TdGFydCB3aXRoIHRoZSBlc3NlbnRpYWxzLCBzZWFyY2ggYnkgdGFzaywgb3IgcHJldmlldyBhIGd1aWRlIGJlZm9yZSBvcGVuaW5nIHRoZSBmdWxsIHdhbGt0aHJvdWdoLiBUaGVzZSByZXNvdXJjZXMgYXJlIGJ1aWx0IGZvciB0aGUgY3VycmVudCBDQVJMIGJldGEgd29ya2Zsb3cuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImxzLWhlcm8tYWN0aW9ucyI+CiAgICAgICAgICA8YSBjbGFzcz0ibHMtaGVyby1idG4gcHJpbWFyeSIgaHJlZj0iaHR0cHM6Ly9oaWNhcmwuYWkvY2FybC1pbi01LW1pbnV0ZXMtdGhlLWVzc2VudGlhbC10b3VyLyI+U3RhcnQgd2l0aCB0aGUgRXNzZW50aWFsIFRvdXI8L2E+CiAgICAgICAgICA8YSBjbGFzcz0ibHMtaGVyby1idG4gc2Vjb25kYXJ5IiBocmVmPSJodHRwczovL2hpY2FybC5haS9xdWljay1ob3ctdG9zLyI+T3BlbiBRdWljayBIb3ctVG9zPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxhc2lkZSBjbGFzcz0ibHMtc3VwcG9ydC1jYXJkIiBhcmlhLWxhYmVsPSJTdXBwb3J0IGhlbHAiPgogICAgICAgIDxkaXYgY2xhc3M9ImxzLXN1cHBvcnQtY2FyZC1sYWJlbCI+TmVlZCBoZWxwPzwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxzLXN1cHBvcnQtY2FyZC10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMiI+Q2Fu4oCZdCBmaW5kIHdoYXQgeW91IG5lZWQ/PC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImxzLXN1cHBvcnQtY2FyZC10ZXh0Ij5Ucnkgc2VhcmNoaW5nIGZpcnN0LiBJZiB5b3UgYXJlIHN0aWxsIHN0dWNrLCBzZW5kIHVzIGEgbm90ZSBhbmQgaW5jbHVkZSB3aGF0IHlvdSB3ZXJlIHRyeWluZyB0byBkbyBpbiBDQVJMLjwvcD4KICAgICAgICA8YSBjbGFzcz0ibHMtc3VwcG9ydC1saW5rIiBocmVmPSJodHRwczovL2hpY2FybC5haS9zdXBwb3J0LyI+CiAgICAgICAgICBDb250YWN0IFN1cHBvcnQKICAgICAgICAgIDxzdmcgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48bGluZSB4MT0iNSIgeTE9IjEyIiB4Mj0iMTkiIHkyPSIxMiI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9IjEyIDUgMTkgMTIgMTIgMTkiPjwvcG9seWxpbmU+PC9zdmc+CiAgICAgICAgPC9hPgogICAgICA8L2FzaWRlPgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8ZGl2IGNsYXNzPSJscy1jb250cm9sLXpvbmUiPgogICAgPGRpdiBjbGFzcz0ibHMtd3JhcCI+CiAgICAgIDxkaXYgY2xhc3M9ImxzLWNvbnRyb2wtY2FyZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ibHMtc2VhcmNoLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWFyY2gtYm94Ij4KICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiPjwvY2lyY2xlPjxsaW5lIHgxPSIyMSIgeTE9IjIxIiB4Mj0iMTYuNjUiIHkyPSIxNi42NSI+PC9saW5lPjwvc3ZnPgogICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImxzLXNlYXJjaC1pbnB1dCIgaWQ9ImxzU2VhcmNoSW5wdXQiIHR5cGU9InNlYXJjaCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBndWlkZXMsIHRvb2xzLCBvciB0YXNrcy4uLiIgYXJpYS1sYWJlbD0iU2VhcmNoIExlYXJuIGFuZCBTdXBwb3J0IHJlc291cmNlcyIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWFyY2gtY291bnQiIGlkPSJsc1NlYXJjaENvdW50Ij48c3Ryb25nPjA8L3N0cm9uZz4gcmVzb3VyY2VzPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImxzLWZpbHRlci1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0ibHMtbW9iaWxlLWZpbHRlci1jb250cm9scyIgYXJpYS1sYWJlbD0iTW9iaWxlIGZpbHRlcnMiPgogICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImxzLW1vYmlsZS1maWx0ZXItZmllbGQiPgogICAgICAgICAgICAgIDxzcGFuPlRvcGljPC9zcGFuPgogICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImxzTW9iaWxlQ2F0ZWdvcnlGaWx0ZXIiIGFyaWEtbGFiZWw9IkZpbHRlciBMZWFybiBhbmQgU3VwcG9ydCByZXNvdXJjZXMgYnkgdG9waWMiPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYWxsIj5BbGwgVG9waWNzPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJnZXR0aW5nLXN0YXJ0ZWQiPkdldHRpbmcgU3RhcnRlZDwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibGVzc29uLWJ1aWxkaW5nIj5MZXNzb24gQnVpbGRpbmc8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImFpLW1lZGlhIj5BSSAmIE1lZGlhPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwdWJsaXNoaW5nIj5QdWJsaXNoaW5nPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzZXR1cCI+U2V0dXA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ibGlicmFyeS1jb2xsYWJvcmF0aW9uIj5MaWJyYXJ5ICYgQ29sbGFib3JhdGlvbjwvb3B0aW9uPgogICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImxzLW1vYmlsZS1maWx0ZXItZmllbGQiPgogICAgICAgICAgICAgIDxzcGFuPlR5cGU8L3NwYW4+CiAgICAgICAgICAgICAgPHNlbGVjdCBpZD0ibHNNb2JpbGVUeXBlRmlsdGVyIiBhcmlhLWxhYmVsPSJGaWx0ZXIgTGVhcm4gYW5kIFN1cHBvcnQgcmVzb3VyY2VzIGJ5IGd1aWRlIHR5cGUiPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYWxsIj5BbGwgVHlwZXM8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImZ1bGwiPkZ1bGwgR3VpZGVzPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJxdWljayI+UXVpY2sgSG93LVRvczwvb3B0aW9uPgogICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ibHMtZmlsdGVyLWdyb3VwcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWZpbHRlci1ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxzLWZpbHRlci1sYWJlbCI+VG9waWM8L3NwYW4+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtZmlsdGVyLXBpbGxzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQnJvd3NlIGJ5IGNhdGVnb3J5Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxzLWZpbHRlci1waWxsIGFjdGl2ZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWZpbHRlci1ncm91cD0iY2F0ZWdvcnkiIGRhdGEtZmlsdGVyLXZhbHVlPSJhbGwiPkFsbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtZmlsdGVyLXBpbGwiIHR5cGU9ImJ1dHRvbiIgZGF0YS1maWx0ZXItZ3JvdXA9ImNhdGVnb3J5IiBkYXRhLWZpbHRlci12YWx1ZT0iZ2V0dGluZy1zdGFydGVkIj5HZXR0aW5nIFN0YXJ0ZWQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxzLWZpbHRlci1waWxsIiB0eXBlPSJidXR0b24iIGRhdGEtZmlsdGVyLWdyb3VwPSJjYXRlZ29yeSIgZGF0YS1maWx0ZXItdmFsdWU9Imxlc3Nvbi1idWlsZGluZyI+TGVzc29uIEJ1aWxkaW5nPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1maWx0ZXItcGlsbCIgdHlwZT0iYnV0dG9uIiBkYXRhLWZpbHRlci1ncm91cD0iY2F0ZWdvcnkiIGRhdGEtZmlsdGVyLXZhbHVlPSJhaS1tZWRpYSI+QUkgJiBNZWRpYTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtZmlsdGVyLXBpbGwiIHR5cGU9ImJ1dHRvbiIgZGF0YS1maWx0ZXItZ3JvdXA9ImNhdGVnb3J5IiBkYXRhLWZpbHRlci12YWx1ZT0icHVibGlzaGluZyI+UHVibGlzaGluZzwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtZmlsdGVyLXBpbGwiIHR5cGU9ImJ1dHRvbiIgZGF0YS1maWx0ZXItZ3JvdXA9ImNhdGVnb3J5IiBkYXRhLWZpbHRlci12YWx1ZT0ic2V0dXAiPlNldHVwPC9idXR0b24+CjxidXR0b24gY2xhc3M9ImxzLWZpbHRlci1waWxsIiB0eXBlPSJidXR0b24iIGRhdGEtZmlsdGVyLWdyb3VwPSJjYXRlZ29yeSIgZGF0YS1maWx0ZXItdmFsdWU9ImxpYnJhcnktY29sbGFib3JhdGlvbiI+TGlicmFyeSAmIENvbGxhYm9yYXRpb248L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1maWx0ZXItZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJscy1maWx0ZXItbGFiZWwiPlR5cGU8L3NwYW4+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtZmlsdGVyLXBpbGxzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQnJvd3NlIGJ5IGd1aWRlIHR5cGUiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtZmlsdGVyLXBpbGwgYWN0aXZlIiB0eXBlPSJidXR0b24iIGRhdGEtZmlsdGVyLWdyb3VwPSJ0eXBlIiBkYXRhLWZpbHRlci12YWx1ZT0iYWxsIj5BbGwgVHlwZXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxzLWZpbHRlci1waWxsIiB0eXBlPSJidXR0b24iIGRhdGEtZmlsdGVyLWdyb3VwPSJ0eXBlIiBkYXRhLWZpbHRlci12YWx1ZT0iZnVsbCI+RnVsbCBHdWlkZXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxzLWZpbHRlci1waWxsIiB0eXBlPSJidXR0b24iIGRhdGEtZmlsdGVyLWdyb3VwPSJ0eXBlIiBkYXRhLWZpbHRlci12YWx1ZT0icXVpY2siPlF1aWNrIEhvdy1Ub3M8L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1yZXN1bHRzLWxhYmVsIiBpZD0ibHNSZXN1bHRzTGFiZWwiPlNob3dpbmcgMCBvZiAwIHJlc291cmNlczwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8bWFpbiBjbGFzcz0ibHMtbWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJscy13cmFwIj4KICAgICAgPGRpdiBjbGFzcz0ibHMtZW1wdHktc3RhdGUiIGlkPSJsc0VtcHR5U3RhdGUiPgogICAgICAgIDxkaXYgY2xhc3M9ImxzLWVtcHR5LWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4Ij48L2NpcmNsZT48bGluZSB4MT0iMjEiIHkxPSIyMSIgeDI9IjE2LjY1IiB5Mj0iMTYuNjUiPjwvbGluZT48L3N2Zz48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1lbXB0eS10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMiI+Tm8gbWF0Y2hpbmcgZ3VpZGVzIGZvdW5kPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImxzLWVtcHR5LXRleHQiPlRyeSBhIGJyb2FkZXIgc2VhcmNoIHRlcm0sIGNsZWFyIHRoZSBmaWx0ZXJzLCBvciBjb250YWN0IHN1cHBvcnQgaWYgeW91IGFyZSBsb29raW5nIGZvciBzb21ldGhpbmcgc3BlY2lmaWMuPC9wPgogICAgICAgIDxidXR0b24gY2xhc3M9ImxzLWVtcHR5LWJ0biBwcmltYXJ5IiB0eXBlPSJidXR0b24iIGlkPSJsc0NsZWFyRmlsdGVycyI+Q2xlYXIgc2VhcmNoIGFuZCBmaWx0ZXJzPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgPHNlY3Rpb24gY2xhc3M9ImxzLXNlY3Rpb24iIGRhdGEtc2VjdGlvbj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWN0aW9uLWhlYWRpbmctd3JhcCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tbGluZSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjIiPlN0YXJ0IEhlcmU8L2Rpdj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxzLWJhZGdlLXNvZnQiPkVzc2VudGlhbDwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibHMtc2VjdGlvbi1ub3RlIj5CZXN0IGZpcnN0IHJlYWRzIGlmIHlvdSBhcmUgbmV3IHRvIENBUkwuPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibHMtZmVhdHVyZWQtZ3JpZCI+CiAgPGJ1dHRvbiBjbGFzcz0ibHMtcmVzb3VyY2UtY2FyZCBscy1mZWF0dXJlZC1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtY2FyZCBkYXRhLWd1aWRlLWlkPSJ0b3VyIiBkYXRhLWNhdGVnb3J5PSJnZXR0aW5nLXN0YXJ0ZWQiIGRhdGEtdHlwZT0iZnVsbCIgZGF0YS1zZWFyY2g9ImNhcmwgaW4gNWlzaCBtaW51dGVzIGVzc2VudGlhbCB0b3VyIGdldHRpbmcgc3RhcnRlZCBlZGl0b3Igb3ZlcnZpZXcgY29tcG9uZW50cyB0ZWFjaGluZyByZXNvdXJjZXMgYmxvY2tzIGFzc2lzdCBwdWJsaXNoIj4KICAgIAogICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1hcnQgZGFyayBscy1jYXJkLWFydC10b3VyIj4KICAgICAgPGRpdiBjbGFzcz0ibHMtdG91ci1waWxsIj5TdGFydCBIZXJlPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJscy10b3VyLWdsb3ciPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJscy10b3VyLW9yYml0Ij48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibHMtdG91ci1vcmJpdC1kb3QiPjwvZGl2PgoKICAgICAgPHNwYW4gY2xhc3M9ImxzLXRvdXItc3Bhcmsgc3BhcmstMSI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ibHMtdG91ci1zcGFyayBzcGFyay0yIj48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJscy10b3VyLXNwYXJrIHNwYXJrLTMiPjwvc3Bhbj4KCiAgICAgIDxkaXYgY2xhc3M9ImxzLXRvdXItY2VudGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1hcnQtbnVtYmVyIj41PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibHMtYXJ0LWxhYmVsIj5JU0ggTUlOPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1ib2R5Ij4KICAgICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1iYWRnZXMiPgogICAgICAgIDxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIGNhdGVnb3J5Ij5HZXR0aW5nIFN0YXJ0ZWQ8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxzLWNhcmQtYmFkZ2UgdHlwZSI+RnVsbCBHdWlkZTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPkNBUkwgaW4gNShpc2gpIE1pbnV0ZXM6IFRoZSBFc3NlbnRpYWwgVG91cjwvZGl2PgogICAgICA8cCBjbGFzcz0ibHMtY2FyZC1kZXNjcmlwdGlvbiI+QSBxdWljayBtYXAgb2YgdGhlIGVkaXRvciwgd2hhdCBlYWNoIHRvb2wgaXMgZm9yLCBhbmQgd2hlcmUgdG8gZ28gd2hlbiB5b3UgbmVlZCBtb3JlIGRldGFpbC48L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWZvb3RlciI+CiAgICAgIDxzcGFuIGNsYXNzPSJscy1jYXJkLW1ldGEiPgogICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIj48L2NpcmNsZT4KICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjEyIDYgMTIgMTIgMTYgMTQiPjwvcG9seWxpbmU+CiAgICAgICAgPC9zdmc+CiAgICAgICAgNShpc2gpIG1pbiDCtyBGdWxsIEd1aWRlCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImxzLWNhcmQtcmVhZCI+CiAgICAgICAgUHJldmlldwogICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiPgogICAgICAgICAgPGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT4KICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9IjEyIDUgMTkgMTIgMTIgMTkiPjwvcG9seWxpbmU+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvc3Bhbj4KICAgIDwvZGl2PgoKICA8L2J1dHRvbj4KCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1yZXNvdXJjZS1jYXJkIGxzLWZlYXR1cmVkLWNhcmQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYXJkIGRhdGEtZ3VpZGUtaWQ9ImZpdmVTdGVwcyIgZGF0YS1jYXRlZ29yeT0iZ2V0dGluZy1zdGFydGVkIiBkYXRhLXR5cGU9ImZ1bGwiIGRhdGEtc2VhcmNoPSJidWlsZCB5b3VyIHBsYW4gaW4gNSBzdGVwcyB3b3JrZmxvdyBnZW5lcmF0ZSBlZGl0IGNvbXBvbmVudHMgdGVhY2hpbmcgcmVzb3VyY2VzIHB1Ymxpc2ggbGVzc29uIHVuaXQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCBkYXJrIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtYXJ0LXN0ZXBzIj48c3BhbiBjbGFzcz0ibHMtYXJ0LXN0ZXAiPjE8L3NwYW4+PHNwYW4gY2xhc3M9ImxzLWFydC1zdGVwIj4yPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1hcnQtc3RlcCI+Mzwvc3Bhbj48c3BhbiBjbGFzcz0ibHMtYXJ0LXN0ZXAiPjQ8L3NwYW4+PHNwYW4gY2xhc3M9ImxzLWFydC1zdGVwIj41PC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtYXJ0LWxhYmVsIj5Zb3VyIFdvcmtmbG93PC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWJvZHkiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtYmFkZ2VzIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1iYWRnZSBjYXRlZ29yeSI+R2V0dGluZyBTdGFydGVkPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIHR5cGUiPldvcmtmbG93IEd1aWRlPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPkJ1aWxkIFlvdXIgUGxhbiBpbiA1IFN0ZXBzPC9kaXY+CiAgICAgICAgICAgICAgPHAgY2xhc3M9ImxzLWNhcmQtZGVzY3JpcHRpb24iPlRoZSByZWNvbW1lbmRlZCBvcmRlciBmb3IgYnVpbGRpbmcgYSBjb21wbGV0ZSBDQVJMIGxlc3NvbiwgZnJvbSBmaXJzdCBnZW5lcmF0aW9uIHRvIHB1Ymxpc2hpbmcuPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1mb290ZXIiPjxzcGFuIGNsYXNzPSJscy1jYXJkLW1ldGEiPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz0iMTIgNiAxMiAxMiAxNiAxNCI+PC9wb2x5bGluZT48L3N2Zz41IG1pbiDCtyBXb3JrZmxvdyBHdWlkZTwvc3Bhbj48c3BhbiBjbGFzcz0ibHMtY2FyZC1yZWFkIj5WaWV3IEd1aWRlIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxsaW5lIHgxPSI1IiB5MT0iMTIiIHgyPSIxOSIgeTI9IjEyIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz0iMTIgNSAxOSAxMiAxMiAxOSI+PC9wb2x5bGluZT48L3N2Zz48L3NwYW4+PC9kaXY+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9zZWN0aW9uPgoKICAgICAgPHNlY3Rpb24gY2xhc3M9ImxzLXNlY3Rpb24iIGRhdGEtc2VjdGlvbj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWN0aW9uLWhlYWRpbmctd3JhcCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tbGluZSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjIiPkZ1bGwgR3VpZGVzPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tbm90ZSI+RGVlcGVyIHdhbGt0aHJvdWdocyBmb3IgdGhlIGN1cnJlbnQgQ0FSTCB3b3JrZmxvdy48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibHMtZ3VpZGVzLWdyaWQiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtcmVzb3VyY2UtY2FyZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhcmQgZGF0YS1ndWlkZS1pZD0iY29tcG9uZW50cyIgZGF0YS1jYXRlZ29yeT0ibGVzc29uLWJ1aWxkaW5nIiBkYXRhLXR5cGU9ImZ1bGwiIGRhdGEtc2VhcmNoPSJhZGRpbmcgY29tcG9uZW50cyBzdHVkZW50LWZhY2luZyB3b3Jrc2hlZXRzIGFjdGl2aXRpZXMgYXNzaWdubWVudHMgYXNzZXNzbWVudHMgcXVpenplcyBoYW5kb3V0cyBleGl0IHRpY2tldHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCB0ZWFsIj48ZGl2IGNsYXNzPSJscy1jYXJkLWljb24iPgogICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICA8cGF0aCBkPSJNMTQgMkg4YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWOHoiPjwvcGF0aD4KICAgICAgPHBvbHlsaW5lIHBvaW50cz0iMTQgMiAxNCA4IDIwIDgiPjwvcG9seWxpbmU+CiAgICAgIDxsaW5lIHgxPSIxMiIgeTE9IjEyLjUiIHgyPSIxMiIgeTI9IjE4LjUiPjwvbGluZT4KICAgICAgPGxpbmUgeDE9IjkiIHkxPSIxNS41IiB4Mj0iMTUiIHkyPSIxNS41Ij48L2xpbmU+CiAgICA8L3N2Zz4KICA8L2Rpdj4KPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtYm9keSI+PGRpdiBjbGFzcz0ibHMtY2FyZC1iYWRnZXMiPjxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIGNhdGVnb3J5Ij5MZXNzb24gQnVpbGRpbmc8L3NwYW4+PHNwYW4gY2xhc3M9ImxzLWNhcmQtYmFkZ2UgdHlwZSI+RnVsbCBHdWlkZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJscy1jYXJkLXRpdGxlIiByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIzIj5BZGRpbmcgQ29tcG9uZW50czwvZGl2PjxwIGNsYXNzPSJscy1jYXJkLWRlc2NyaXB0aW9uIj5BZGQgc3R1ZGVudC1mYWNpbmcgbWF0ZXJpYWxzIGxpa2UgYWN0aXZpdGllcywgYXNzaWdubWVudHMsIGFzc2Vzc21lbnRzLCBoYW5kb3V0cywgcXVpenplcywgd29ya3NoZWV0cywgYW5kIGV4aXQgdGlja2V0cy48L3A+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtZm9vdGVyIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1tZXRhIj41IG1pbiDCtyBGdWxsIEd1aWRlPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLXJlYWQiPlZpZXcgR3VpZGU8L3NwYW4+PC9kaXY+CiAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1yZXNvdXJjZS1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtY2FyZCBkYXRhLWd1aWRlLWlkPSJ0ZWFjaGluZ1Jlc291cmNlcyIgZGF0YS1jYXRlZ29yeT0ibGVzc29uLWJ1aWxkaW5nIiBkYXRhLXR5cGU9ImZ1bGwiIGRhdGEtc2VhcmNoPSJhZGRpbmcgdGVhY2hpbmcgcmVzb3VyY2VzIHRlYWNoZXItZmFjaW5nIGxlc3NvbiB1bml0IGVuaGFuY2VtZW50cyBlbGwgc3VwcG9ydHMgdWRsIGVxdWl0eSBpbmNsdXNpb24gc2VsIGluZGlnZW5vdXMgdm9pY2UiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCBibHVlIj48ZGl2IGNsYXNzPSJscy1jYXJkLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cGF0aCBkPSJNNCAxOS41QTIuNSAyLjUgMCAwIDEgNi41IDE3SDIwIj48L3BhdGg+PHBhdGggZD0iTTQgNC41QTIuNSAyLjUgMCAwIDEgNi41IDJIMjB2MjBINi41QTIuNSAyLjUgMCAwIDEgNCAxOS41eiI+PC9wYXRoPjxwYXRoIGQ9Ik04IDdoOCI+PC9wYXRoPjxwYXRoIGQ9Ik04IDExaDciPjwvcGF0aD48L3N2Zz48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1ib2R5Ij48ZGl2IGNsYXNzPSJscy1jYXJkLWJhZGdlcyI+PHNwYW4gY2xhc3M9ImxzLWNhcmQtYmFkZ2UgY2F0ZWdvcnkiPkxlc3NvbiBCdWlsZGluZzwvc3Bhbj48c3BhbiBjbGFzcz0ibHMtY2FyZC1iYWRnZSB0eXBlIj5GdWxsIEd1aWRlPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImxzLWNhcmQtdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPkFkZGluZyBUZWFjaGluZyBSZXNvdXJjZXM8L2Rpdj48cCBjbGFzcz0ibHMtY2FyZC1kZXNjcmlwdGlvbiI+R2VuZXJhdGUgdGVhY2hlci1mYWNpbmcgc3VwcG9ydHMgbGlrZSBMZXNzb24vVW5pdCBFbmhhbmNlbWVudHMgYW5kIEVMTCBTdXBwb3J0cyBhZnRlciB5b3VyIHBsYW4gaXMgbW9zdGx5IGZpbmlzaGVkLjwvcD48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1mb290ZXIiPjxzcGFuIGNsYXNzPSJscy1jYXJkLW1ldGEiPjYgbWluIMK3IEZ1bGwgR3VpZGU8L3NwYW4+PHNwYW4gY2xhc3M9ImxzLWNhcmQtcmVhZCI+VmlldyBHdWlkZTwvc3Bhbj48L2Rpdj4KICAgICAgICAgIDwvYnV0dG9uPgoKICAgICAgICAgIDxidXR0b24gY2xhc3M9ImxzLXJlc291cmNlLWNhcmQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYXJkIGRhdGEtZ3VpZGUtaWQ9ImJsb2NrcyIgZGF0YS1jYXRlZ29yeT0ibGVzc29uLWJ1aWxkaW5nIiBkYXRhLXR5cGU9ImZ1bGwiIGRhdGEtc2VhcmNoPSJibG9ja3MgYWRkIHNlY3Rpb24gbGF5b3V0IHRhYmxlIGNoYXJ0IGdyYXBoaWMgb3JnYW5pemVyIHZlbm4gZGlhZ3JhbSBtdWx0aXBsZSBjaG9pY2UgaW1hZ2Ugc3BhY2UiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCBwaW5rIj48ZGl2IGNsYXNzPSJscy1jYXJkLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cmVjdCB4PSIzIiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSI+PC9yZWN0PjxyZWN0IHg9IjE1IiB5PSI0IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSI+PC9yZWN0PjxyZWN0IHg9IjMiIHk9IjE1IiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSI+PC9yZWN0PjxsaW5lIHgxPSIxOCIgeTE9IjE0IiB4Mj0iMTgiIHkyPSIyMiI+PC9saW5lPjxsaW5lIHgxPSIxNCIgeTE9IjE4IiB4Mj0iMjIiIHkyPSIxOCI+PC9saW5lPjwvc3ZnPjwvZGl2PjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWJvZHkiPjxkaXYgY2xhc3M9ImxzLWNhcmQtYmFkZ2VzIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1iYWRnZSBjYXRlZ29yeSI+TGVzc29uIEJ1aWxkaW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIHR5cGUiPkZ1bGwgR3VpZGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibHMtY2FyZC10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyI+SG93IHRvIFVzZSBCbG9ja3M8L2Rpdj48cCBjbGFzcz0ibHMtY2FyZC1kZXNjcmlwdGlvbiI+QWRkIHNtYWxsZXIgcGllY2VzIGluc2lkZSBleGlzdGluZyB0ZW1wbGF0ZXMsIHBhZ2VzLCBjb21wb25lbnRzLCBvciByZXNvdXJjZXMuPC9wPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWZvb3RlciI+PHNwYW4gY2xhc3M9ImxzLWNhcmQtbWV0YSI+NCBtaW4gwrcgRnVsbCBHdWlkZTwvc3Bhbj48c3BhbiBjbGFzcz0ibHMtY2FyZC1yZWFkIj5WaWV3IEd1aWRlPC9zcGFuPjwvZGl2PgogICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtcmVzb3VyY2UtY2FyZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhcmQgZGF0YS1ndWlkZS1pZD0icHVibGlzaGluZyIgZGF0YS1jYXRlZ29yeT0icHVibGlzaGluZyIgZGF0YS10eXBlPSJmdWxsIiBkYXRhLXNlYXJjaD0icHVibGlzaGluZyB2aXNpYmlsaXR5IGRvd25sb2FkcyBwdWJsaXNoIGxlc3NvbiBkZXRhaWxzIHBhZ2UgZG93bmxvYWQgZG9jdW1lbnRzIHNwaW5uZXIgcHJpdmF0ZSBwdWJsaWMgc2hhcmluZyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtYXJ0IHRlYWwiPjxkaXYgY2xhc3M9ImxzLWNhcmQtaWNvbiI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ij48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz0iNyAxMCAxMiAxNSAxNyAxMCI+PC9wb2x5bGluZT48bGluZSB4MT0iMTIiIHkxPSIxNSIgeDI9IjEyIiB5Mj0iMyI+PC9saW5lPjwvc3ZnPjwvZGl2PjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWJvZHkiPjxkaXYgY2xhc3M9ImxzLWNhcmQtYmFkZ2VzIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1iYWRnZSBjYXRlZ29yeSI+UHVibGlzaGluZzwvc3Bhbj48c3BhbiBjbGFzcz0ibHMtY2FyZC1iYWRnZSB0eXBlIj5GdWxsIEd1aWRlPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImxzLWNhcmQtdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPlB1Ymxpc2hpbmcsIFZpc2liaWxpdHkgJiBEb3dubG9hZHM8L2Rpdj48cCBjbGFzcz0ibHMtY2FyZC1kZXNjcmlwdGlvbiI+UHVibGlzaCB5b3VyIGxlc3NvbiwgY2hvb3NlIHZpc2liaWxpdHksIHJldmlldyB0aGUgbGVzc29uIGRldGFpbHMgcGFnZSwgYW5kIGFjY2VzcyBkb3dubG9hZGVkIGRvY3VtZW50cy48L3A+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtZm9vdGVyIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1tZXRhIj41IG1pbiDCtyBGdWxsIEd1aWRlPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLXJlYWQiPlZpZXcgR3VpZGU8L3NwYW4+PC9kaXY+CiAgICAgICAgICA8L2J1dHRvbj4KCjxidXR0b24gY2xhc3M9ImxzLXJlc291cmNlLWNhcmQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYXJkIGRhdGEtZ3VpZGUtaWQ9ImxpYnJhcnlMZXNzb25zIiBkYXRhLWNhdGVnb3J5PSJsaWJyYXJ5LWNvbGxhYm9yYXRpb24iIGRhdGEtdHlwZT0iZnVsbCIgZGF0YS1zZWFyY2g9ImZpbmRpbmcgdXNpbmcgZXhpc3RpbmcgbGVzc29ucyBsaWJyYXJ5IHNlYXJjaCBmaWx0ZXIgbGVzc29uIGRldGFpbHMgc2F2ZSB0byBsaWJyYXJ5IHJlbWl4IGxlc3NvbiBkb3dubG9hZHMgZXhwb3J0IGV4aXN0aW5nIGxlc3NvbiBicm93c2UgbGVzc29ucyBjb2xsYWJvcmF0aW9uIGN1cnJpY3VsdW0gdHJhY2tpbmcgY29tcGFzcyI+CiAgPGRpdiBjbGFzcz0ibHMtY2FyZC1hcnQgc2FnZSI+PGRpdiBjbGFzcz0ibHMtY2FyZC1pY29uIj4KICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgIDxwYXRoIGQ9Ik00IDE5LjVBMi41IDIuNSAwIDAgMSA2LjUgMTdIMjAiPjwvcGF0aD4KICAgICAgICA8cGF0aCBkPSJNNCA0LjVBMi41IDIuNSAwIDAgMSA2LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV6Ij48L3BhdGg+CiAgICAgICAgPGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iMi41Ij48L2NpcmNsZT4KICAgICAgICA8cGF0aCBkPSJNMTIgMTJsMyAzIj48L3BhdGg+CiAgICAgIDwvc3ZnPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImxzLWNhcmQtYm9keSI+CiAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWJhZGdlcyI+CiAgICAgIDxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIGNhdGVnb3J5Ij5MaWJyYXJ5ICYgQ29sbGFib3JhdGlvbjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImxzLWNhcmQtYmFkZ2UgdHlwZSI+RnVsbCBHdWlkZTwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibHMtY2FyZC10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyI+RmluZGluZyAmIFVzaW5nIEV4aXN0aW5nIExlc3NvbnM8L2Rpdj4KICAgIDxwIGNsYXNzPSJscy1jYXJkLWRlc2NyaXB0aW9uIj5TZWFyY2ggQ0FSTOKAmXMgTGlicmFyeSwgb3BlbiBsZXNzb24gZGV0YWlscywgc2F2ZSBsZXNzb25zIGZvciBsYXRlciwgcmVtaXggbGVzc29ucyBmb3IgeW91ciBjbGFzc3Jvb20sIGFuZCBkb3dubG9hZCBhdmFpbGFibGUgbWF0ZXJpYWxzLjwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0ibHMtY2FyZC1mb290ZXIiPgogICAgPHNwYW4gY2xhc3M9ImxzLWNhcmQtbWV0YSI+NeKAkzYgbWluIMK3IEZ1bGwgR3VpZGU8L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ibHMtY2FyZC1yZWFkIj5WaWV3IEd1aWRlPC9zcGFuPgogIDwvZGl2Pgo8L2J1dHRvbj4KCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1yZXNvdXJjZS1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtY2FyZCBkYXRhLWd1aWRlLWlkPSJtZWRpYSIgZGF0YS1jYXRlZ29yeT0iYWktbWVkaWEiIGRhdGEtdHlwZT0iZnVsbCIgZGF0YS1zZWFyY2g9ImFkZGluZyBpbWFnZXMgbWVkaWEgYWkgaW1hZ2UgZ2VuZXJhdGlvbiB1cGxvYWQgd2ViIHNlYXJjaCBvcGVuIGxpY2Vuc2VkIGFuaW1hdGVkIGlsbHVzdHJhdGVkIHBob3RvcmVhbCBkaWFncmFtIG1hcCB0aW1lbGluZSBsYWIgdm9jYWIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCBibHVlIj48ZGl2IGNsYXNzPSJscy1jYXJkLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHJ4PSIyIj48L3JlY3Q+PGNpcmNsZSBjeD0iOC41IiBjeT0iOC41IiByPSIxLjUiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9IjIxIDE1IDE2IDEwIDUgMjEiPjwvcG9seWxpbmU+PC9zdmc+PC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtYm9keSI+PGRpdiBjbGFzcz0ibHMtY2FyZC1iYWRnZXMiPjxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIGNhdGVnb3J5Ij5BSSAmIE1lZGlhPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIHR5cGUiPkZ1bGwgR3VpZGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibHMtY2FyZC10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyI+QWRkaW5nIEltYWdlcyAmIE1lZGlhIHRvIFlvdXIgTGVzc29uPC9kaXY+PHAgY2xhc3M9ImxzLWNhcmQtZGVzY3JpcHRpb24iPlVwbG9hZCBpbWFnZXMsIHNlYXJjaCBvcGVuLWxpY2Vuc2VkIHZpc3VhbHMsIG9yIGdlbmVyYXRlIGNsYXNzcm9vbS1zYWZlIEFJIGltYWdlcyBmb3IgbGVzc29uIG1hdGVyaWFscy48L3A+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtZm9vdGVyIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1tZXRhIj43IG1pbiDCtyBGdWxsIEd1aWRlPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLXJlYWQiPlZpZXcgR3VpZGU8L3NwYW4+PC9kaXY+CiAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1yZXNvdXJjZS1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtY2FyZCBkYXRhLWd1aWRlLWlkPSJhc3Npc3QiIGRhdGEtY2F0ZWdvcnk9Imxlc3Nvbi1idWlsZGluZyIgZGF0YS10eXBlPSJmdWxsIiBkYXRhLXNlYXJjaD0idXNpbmcgY2FybCBhc3Npc3QgYXNrIGNhcmwgY2hhdCByZXZpZXcgcHJvbXB0cyBicmFpbnN0b3JtIGxlc3NvbiBxdWVzdGlvbnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCBjb3JhbCI+PGRpdiBjbGFzcz0ibHMtY2FyZC1pY29uIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PHBhdGggZD0iTTIxIDE1YTIgMiAwIDAgMS0yIDJIOGwtNSA0VjVhMiAyIDAgMCAxIDItMmgxNGEyIDIgMCAwIDEgMiAyeiI+PC9wYXRoPjxwYXRoIGQ9Ik04IDloOCI+PC9wYXRoPjxwYXRoIGQ9Ik04IDEzaDUiPjwvcGF0aD48L3N2Zz48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1ib2R5Ij48ZGl2IGNsYXNzPSJscy1jYXJkLWJhZGdlcyI+PHNwYW4gY2xhc3M9ImxzLWNhcmQtYmFkZ2UgY2F0ZWdvcnkiPkxlc3NvbiBCdWlsZGluZzwvc3Bhbj48c3BhbiBjbGFzcz0ibHMtY2FyZC1iYWRnZSB0eXBlIj5GdWxsIEd1aWRlPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImxzLWNhcmQtdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPlVzaW5nIENBUkwtQXNzaXN0PC9kaXY+PHAgY2xhc3M9ImxzLWNhcmQtZGVzY3JpcHRpb24iPlVzZSBBc2sgQ0FSTCB0byBicmFpbnN0b3JtLCBjbGFyaWZ5LCBhbmQgaW1wcm92ZSBwYXJ0cyBvZiB5b3VyIGxlc3NvbiB3aGlsZSBSZXZpZXcgd2l0aCBDQVJMIGNvbnRpbnVlcyBpbXByb3ZpbmcgaW4gYmV0YS48L3A+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtZm9vdGVyIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1tZXRhIj41IG1pbiDCtyBGdWxsIEd1aWRlPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLXJlYWQiPlZpZXcgR3VpZGU8L3NwYW4+PC9kaXY+CiAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1yZXNvdXJjZS1jYXJkIiB0eXBlPSJidXR0b24iIGRhdGEtY2FyZCBkYXRhLWd1aWRlLWlkPSJwcm9maWxlcyIgZGF0YS1jYXRlZ29yeT0ic2V0dXAiIGRhdGEtdHlwZT0iZnVsbCIgZGF0YS1zZWFyY2g9InNhdmVkIGNsYXNzIHByb2ZpbGVzIGN1cnJpY3VsdW0gc2V0dGluZ3MgcHJvZmlsZSBpbWFnZSB0b3AgcmlnaHQgc2V0dXAgZ3JhZGUgc3ViamVjdCBjbGFzcyBjb250ZXh0IGxlYXJuZXIgbmVlZHMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1jYXJkLWFydCBzYWdlIj48ZGl2IGNsYXNzPSJscy1jYXJkLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cGF0aCBkPSJNMTcgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MiI+PC9wYXRoPjxjaXJjbGUgY3g9IjkiIGN5PSI3IiByPSI0Ij48L2NpcmNsZT48cGF0aCBkPSJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44NyI+PC9wYXRoPjxwYXRoIGQ9Ik0xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzUiPjwvcGF0aD48L3N2Zz48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibHMtY2FyZC1ib2R5Ij48ZGl2IGNsYXNzPSJscy1jYXJkLWJhZGdlcyI+PHNwYW4gY2xhc3M9ImxzLWNhcmQtYmFkZ2UgY2F0ZWdvcnkiPlNldHVwPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLWJhZGdlIHR5cGUiPkZ1bGwgR3VpZGU8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibHMtY2FyZC10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyI+U2F2ZWQgQ2xhc3MgUHJvZmlsZXM8L2Rpdj48cCBjbGFzcz0ibHMtY2FyZC1kZXNjcmlwdGlvbiI+U2F2ZSByZXVzYWJsZSBjbGFzcyBjb250ZXh0IHNvIENBUkwgY2FuIGdlbmVyYXRlIGxlc3NvbnMgdGhhdCBiZXR0ZXIgZml0IHlvdXIgYWN0dWFsIGNsYXNzcm9vbS48L3A+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNhcmQtZm9vdGVyIj48c3BhbiBjbGFzcz0ibHMtY2FyZC1tZXRhIj40IG1pbiDCtyBGdWxsIEd1aWRlPC9zcGFuPjxzcGFuIGNsYXNzPSJscy1jYXJkLXJlYWQiPlZpZXcgR3VpZGU8L3NwYW4+PC9kaXY+CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9zZWN0aW9uPgoKICAgICAgPHNlY3Rpb24gY2xhc3M9ImxzLXNlY3Rpb24iIGRhdGEtc2VjdGlvbj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1zZWN0aW9uLWhlYWRpbmctd3JhcCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tbGluZSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXNlY3Rpb24tdGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjIiPlF1aWNrIEhvdy1Ub3M8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibHMtc2VjdGlvbi1ub3RlIj5TaG9ydCBhbnN3ZXJzIGZvciBzcGVjaWZpYyB0YXNrcy48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibHMtcXVpY2stZ3JpZCI+CiAgICAgICAgICA8YSBjbGFzcz0ibHMtcXVpY2stY2FyZCIgZGF0YS1jYXJkIGRhdGEtY2F0ZWdvcnk9ImdldHRpbmctc3RhcnRlZCIgZGF0YS10eXBlPSJxdWljayIgZGF0YS1zZWFyY2g9InF1aWNrIGhvdyB0b3MgYWxsIHF1aWNrIGhlbHAgc2VhcmNoIGNhcmRzIiBocmVmPSJodHRwczovL2hpY2FybC5haS9xdWljay1ob3ctdG9zLyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXF1aWNrLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48bGluZSB4MT0iOCIgeTE9IjYiIHgyPSIyMSIgeTI9IjYiPjwvbGluZT48bGluZSB4MT0iOCIgeTE9IjEyIiB4Mj0iMjEiIHkyPSIxMiI+PC9saW5lPjxsaW5lIHgxPSI4IiB5MT0iMTgiIHgyPSIyMSIgeTI9IjE4Ij48L2xpbmU+PGxpbmUgeDE9IjMiIHkxPSI2IiB4Mj0iMy4wMSIgeTI9IjYiPjwvbGluZT48bGluZSB4MT0iMyIgeTE9IjEyIiB4Mj0iMy4wMSIgeTI9IjEyIj48L2xpbmU+PGxpbmUgeDE9IjMiIHkxPSIxOCIgeDI9IjMuMDEiIHkyPSIxOCI+PC9saW5lPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICA8ZGl2PjxkaXYgY2xhc3M9ImxzLXF1aWNrLXRpdGxlIj5PcGVuIHRoZSBRdWljayBIb3ctVG9zIHBhZ2U8L2Rpdj48ZGl2IGNsYXNzPSJscy1xdWljay1tZXRhIj5TZWFyY2hhYmxlIHF1aWNrIGFuc3dlcnM8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibHMtcXVpY2stYXJyb3ciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cG9seWxpbmUgcG9pbnRzPSI5IDE4IDE1IDEyIDkgNiI+PC9wb2x5bGluZT48L3N2Zz4KICAgICAgICAgIDwvYT4KCiAgICAgICAgICA8YSBjbGFzcz0ibHMtcXVpY2stY2FyZCIgZGF0YS1jYXJkIGRhdGEtY2F0ZWdvcnk9InNldHVwIiBkYXRhLXR5cGU9InF1aWNrIiBkYXRhLXNlYXJjaD0ic2V0dGluZyB1cCBjdXJyaWN1bHVtIHNldHRpbmdzIHByb2ZpbGUgaW1hZ2UgdG9wIHJpZ2h0IGN1cnJpY3VsdW0gc2VsZWN0aW9uIiBocmVmPSJodHRwczovL2hpY2FybC5haS9xdWljay1ob3ctdG9zLyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXF1aWNrLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cGF0aCBkPSJNNCAxOS41QTIuNSAyLjUgMCAwIDEgNi41IDE3SDIwIj48L3BhdGg+PHBhdGggZD0iTTQgNC41QTIuNSAyLjUgMCAwIDEgNi41IDJIMjB2MjBINi41QTIuNSAyLjUgMCAwIDEgNCAxOS41eiI+PC9wYXRoPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICA8ZGl2PjxkaXYgY2xhc3M9ImxzLXF1aWNrLXRpdGxlIj5TZXQgdXAgeW91ciBjdXJyaWN1bHVtPC9kaXY+PGRpdiBjbGFzcz0ibHMtcXVpY2stbWV0YSI+U2V0dGluZ3MgwrcgQ3VycmljdWx1bTwvZGl2PjwvZGl2PgogICAgICAgICAgICA8c3ZnIGNsYXNzPSJscy1xdWljay1hcnJvdyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwb2x5bGluZSBwb2ludHM9IjkgMTggMTUgMTIgOSA2Ij48L3BvbHlsaW5lPjwvc3ZnPgogICAgICAgICAgPC9hPgoKICAgICAgICAgIDxhIGNsYXNzPSJscy1xdWljay1jYXJkIiBkYXRhLWNhcmQgZGF0YS1jYXRlZ29yeT0ibGVzc29uLWJ1aWxkaW5nIiBkYXRhLXR5cGU9InF1aWNrIiBkYXRhLXNlYXJjaD0iY29tcG9uZW50cyB0ZWFjaGluZyByZXNvdXJjZXMgYmxvY2tzIGRpZmZlcmVuY2Ugc3R1ZGVudCBmYWNpbmcgdGVhY2hlciBmYWNpbmcgc21hbGxlciBwaWVjZXMiIGhyZWY9Imh0dHBzOi8vaGljYXJsLmFpL3F1aWNrLWhvdy10b3MvI2NvbXBvbmVudHMtdGVhY2hpbmctcmVzb3VyY2VzLWJsb2NrcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLXF1aWNrLWljb24iPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIj48cmVjdCB4PSIzIiB5PSI0IiB3aWR0aD0iNyIgaGVpZ2h0PSI3IiByeD0iMS41Ij48L3JlY3Q+PHJlY3QgeD0iMTQiIHk9IjQiIHdpZHRoPSI3IiBoZWlnaHQ9IjciIHJ4PSIxLjUiPjwvcmVjdD48cmVjdCB4PSIzIiB5PSIxNSIgd2lkdGg9IjciIGhlaWdodD0iNyIgcng9IjEuNSI+PC9yZWN0PjxwYXRoIGQ9Ik0xNi41IDE4LjVoNCI+PC9wYXRoPjxwYXRoIGQ9Ik0xOC41IDE2LjV2NCI+PC9wYXRoPjwvc3ZnPjwvZGl2PgogICAgICAgICAgICA8ZGl2PjxkaXYgY2xhc3M9ImxzLXF1aWNrLXRpdGxlIj5Db21wb25lbnRzIHZzIFRlYWNoaW5nIFJlc291cmNlcyB2cyBCbG9ja3M8L2Rpdj48ZGl2IGNsYXNzPSJscy1xdWljay1tZXRhIj5RdWljayBjb21wYXJpc29uPC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDxzdmcgY2xhc3M9ImxzLXF1aWNrLWFycm93IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PHBvbHlsaW5lIHBvaW50cz0iOSAxOCAxNSAxMiA5IDYiPjwvcG9seWxpbmU+PC9zdmc+CiAgICAgICAgICA8L2E+CgogICAgICAgICAgPGEgY2xhc3M9ImxzLXF1aWNrLWNhcmQiIGRhdGEtY2FyZCBkYXRhLWNhdGVnb3J5PSJwdWJsaXNoaW5nIiBkYXRhLXR5cGU9InF1aWNrIiBkYXRhLXNlYXJjaD0iZG93bmxvYWRzIHB1Ymxpc2hpbmcgdmlzaWJpbGl0eSBsZXNzb24gZGV0YWlscyBzcGlubmVyIGRvY3VtZW50cyIgaHJlZj0iaHR0cHM6Ly9oaWNhcmwuYWkvcXVpY2staG93LXRvcy8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1xdWljay1pY29uIj48c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PHBhdGggZD0iTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPSI3IDEwIDEyIDE1IDE3IDEwIj48L3BvbHlsaW5lPjxsaW5lIHgxPSIxMiIgeTE9IjE1IiB4Mj0iMTIiIHkyPSIzIj48L2xpbmU+PC9zdmc+PC9kaXY+CiAgICAgICAgICAgIDxkaXY+PGRpdiBjbGFzcz0ibHMtcXVpY2stdGl0bGUiPkZpbmQgZG93bmxvYWRzIGFmdGVyIHB1Ymxpc2hpbmc8L2Rpdj48ZGl2IGNsYXNzPSJscy1xdWljay1tZXRhIj5QdWJsaXNoaW5nIMK3IERvd25sb2FkczwvZGl2PjwvZGl2PgogICAgICAgICAgICA8c3ZnIGNsYXNzPSJscy1xdWljay1hcnJvdyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwb2x5bGluZSBwb2ludHM9IjkgMTggMTUgMTIgOSA2Ij48L3BvbHlsaW5lPjwvc3ZnPgogICAgICAgICAgPC9hPgoKPGEgY2xhc3M9ImxzLXF1aWNrLWNhcmQiIGRhdGEtY2FyZCBkYXRhLWNhdGVnb3J5PSJsaWJyYXJ5LWNvbGxhYm9yYXRpb24iIGRhdGEtdHlwZT0icXVpY2siIGRhdGEtc2VhcmNoPSJjdXJyaWN1bHVtIHRyYWNraW5nIHBsYW5uZWQgdGF1Z2h0IGNvdmVyYWdlIGNvbXBhc3MgY3VycmljdWx1bSBjb3ZlcmFnZSBzdGFuZGFyZHMgcGxhbm5lZCBsZXNzb25zIHRhdWdodCBsZXNzb25zIHJlcG9ydHMiIGhyZWY9Imh0dHBzOi8vaGljYXJsLmFpL3F1aWNrLWhvdy10b3MvI2N1cnJpY3VsdW0tdHJhY2tpbmciPgogIDxkaXYgY2xhc3M9ImxzLXF1aWNrLWljb24iPgogICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+CiAgICAgIDxwYXRoIGQ9Ik05IDExbDMgM0wyMiA0Ij48L3BhdGg+CiAgICAgIDxwYXRoIGQ9Ik0yMSAxMnY3YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxMSI+PC9wYXRoPgogICAgPC9zdmc+CiAgPC9kaXY+CiAgPGRpdj4KICAgIDxkaXYgY2xhc3M9ImxzLXF1aWNrLXRpdGxlIj5UcmFjayBwbGFubmVkIG9yIHRhdWdodCBjdXJyaWN1bHVtPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJscy1xdWljay1tZXRhIj5Db21wYXNzIMK3IEN1cnJpY3VsdW0gY292ZXJhZ2U8L2Rpdj4KICA8L2Rpdj4KICA8c3ZnIGNsYXNzPSJscy1xdWljay1hcnJvdyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPHBvbHlsaW5lIHBvaW50cz0iOSAxOCAxNSAxMiA5IDYiPjwvcG9seWxpbmU+CiAgPC9zdmc+CjwvYT4KCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImxzLWNvbWluZy1zb29uIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLWNvbWluZy10aXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyI+TW9yZSBndWlkZXMgYXJlIG9uIHRoZSByb2FkbWFwLjwvZGl2PgogICAgICAgICAgPHAgY2xhc3M9ImxzLWNvbWluZy10ZXh0Ij5Nb3JlIGd1aWRlcyBhcmUgY29taW5nIHNvb24gYXMgQ0FSTOKAmXMgZWRpdG9yLCByZW1peGluZywgd2l6YXJkLCBhbmQgZmFjaWxpdGF0b3IgZ3VpZGUgd29ya2Zsb3dzIGFyZSBmaW5hbGl6ZWQuPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L3NlY3Rpb24+CgogICAgICA8c2VjdGlvbiBjbGFzcz0ibHMtYm90dG9tLWN0YSIgYXJpYS1sYWJlbD0iU3VwcG9ydCBjYWxsIHRvIGFjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0ibHMtY3RhLWNvcHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibHMtY3RhLXRpdGxlIiByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIyIj5TdGlsbCBub3QgZmluZGluZyB0aGUgcmlnaHQgYW5zd2VyPzwvZGl2PgogICAgICAgICAgPHAgY2xhc3M9ImxzLWN0YS10ZXh0Ij5TZW5kIHVzIGEgbm90ZSB3aXRoIHdoYXQgeW91IHdlcmUgdHJ5aW5nIHRvIGRvIGluIENBUkwuIEEgc2NyZWVuc2hvdCBvciBzaG9ydCBkZXNjcmlwdGlvbiBoZWxwcyB1cyBwb2ludCB5b3UgdG8gdGhlIHJpZ2h0IHJlc291cmNlIGZhc3Rlci48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibHMtY3RhLWFjdGlvbnMiPgogICAgICAgICAgPGEgY2xhc3M9ImxzLWhlcm8tYnRuIHNlY29uZGFyeSIgaHJlZj0iaHR0cHM6Ly9oaWNhcmwuYWkvcXVpY2staG93LXRvcy8iPkJyb3dzZSBRdWljayBIb3ctVG9zPC9hPgogICAgICAgICAgPGEgY2xhc3M9ImxzLWhlcm8tYnRuIHByaW1hcnkiIGhyZWY9Imh0dHBzOi8vaGljYXJsLmFpL3N1cHBvcnQvIj5Db250YWN0IFN1cHBvcnQ8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvc2VjdGlvbj4KICAgIDwvZGl2PgogIDwvbWFpbj4KCiAgPGRpdiBjbGFzcz0ibHMtbW9kYWwtYmFja2Ryb3AiIGlkPSJsc0d1aWRlTW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgIDxkaXYgY2xhc3M9ImxzLW1vZGFsIiByb2xlPSJkaWFsb2ciIGFyaWEtbW9kYWw9InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibHNNb2RhbFRpdGxlIj4KICAgICAgPGRpdiBjbGFzcz0ibHMtbW9kYWwtaGVhZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1tb2RhbC1iYWRnZXMiPjxzcGFuIGNsYXNzPSJscy1tb2RhbC1iYWRnZSBjYXRlZ29yeSIgaWQ9ImxzTW9kYWxDYXRlZ29yeSI+R3VpZGU8L3NwYW4+PHNwYW4gY2xhc3M9ImxzLW1vZGFsLWJhZGdlIHR5cGUiIGlkPSJsc01vZGFsVHlwZSI+RnVsbCBHdWlkZTwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1tb2RhbC10aXRsZS13cmFwIj48ZGl2IGNsYXNzPSJscy1tb2RhbC10aXRsZSIgaWQ9ImxzTW9kYWxUaXRsZSIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMiI+PC9kaXY+PGRpdiBjbGFzcz0ibHMtbW9kYWwtc3VidGl0bGUiIGlkPSJsc01vZGFsU3VidGl0bGUiPjwvZGl2PjwvZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9ImxzLW1vZGFsLWNsb3NlIiB0eXBlPSJidXR0b24iIGlkPSJsc01vZGFsQ2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIHByZXZpZXciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz48L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJscy1tb2RhbC1jb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJscy1tb2RhbC1tZWRpYS1wYW5lbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1tb2RhbC1tZWRpYS1zaGVsbCIgaWQ9ImxzTW9kYWxNZWRpYVNoZWxsIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBhcmlhLWxhYmVsPSJPcGVuIG1lZGlhIHByZXZpZXciPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJscy1tb2RhbC1tZWRpYS1uYXYgcHJldiIgdHlwZT0iYnV0dG9uIiBpZD0ibHNNb2RhbFByZXYiIGFyaWEtbGFiZWw9IlByZXZpb3VzIHByZXZpZXciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBvbHlsaW5lIHBvaW50cz0iMTUgMTggOSAxMiAxNSA2Ij48L3BvbHlsaW5lPjwvc3ZnPjwvYnV0dG9uPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1tb2RhbC1tZWRpYS1zdGFnZSIgaWQ9ImxzTW9kYWxNZWRpYVN0YWdlIj48L2Rpdj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibHMtbW9kYWwtbWVkaWEtbmF2IG5leHQiIHR5cGU9ImJ1dHRvbiIgaWQ9ImxzTW9kYWxOZXh0IiBhcmlhLWxhYmVsPSJOZXh0IHByZXZpZXciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBvbHlsaW5lIHBvaW50cz0iOSAxOCAxNSAxMiA5IDYiPjwvcG9seWxpbmU+PC9zdmc+PC9idXR0b24+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxzLW1vZGFsLXpvb20taGludCI+PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiI+PGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iOCI+PC9jaXJjbGU+PGxpbmUgeDE9IjIxIiB5MT0iMjEiIHgyPSIxNi42NSIgeTI9IjE2LjY1Ij48L2xpbmU+PGxpbmUgeDE9IjExIiB5MT0iOCIgeDI9IjExIiB5Mj0iMTQiPjwvbGluZT48bGluZSB4MT0iOCIgeTE9IjExIiB4Mj0iMTQiIHkyPSIxMSI+PC9saW5lPjwvc3ZnPkNsaWNrIHRvIHpvb208L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibHMtbW9kYWwtZG90cyIgaWQ9ImxzTW9kYWxEb3RzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibHMtbW9kYWwtaW5mby1wYW5lbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1pbmZvLWJsb2NrIj48ZGl2IGNsYXNzPSJscy1pbmZvLWhlYWRpbmciIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBvbHlsaW5lIHBvaW50cz0iMjAgNiA5IDE3IDQgMTIiPjwvcG9seWxpbmU+PC9zdmc+V2hhdCBZb3UnbGwgTGVhcm48L2Rpdj48dWwgY2xhc3M9ImxzLWxlYXJuLWxpc3QiIGlkPSJsc01vZGFsTGVhcm4iPjwvdWw+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJscy1pbmZvLWJsb2NrIj48ZGl2IGNsYXNzPSJscy1pbmZvLWhlYWRpbmciIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9IjEyIDYgMTIgMTIgMTYgMTQiPjwvcG9seWxpbmU+PC9zdmc+V2hhdCdzIENvdmVyZWQ8L2Rpdj48ZGl2IGNsYXNzPSJscy1jb3ZlcmVkLWxpc3QiIGlkPSJsc01vZGFsQ292ZXJlZCI+PC9kaXY+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ibHMtbW9kYWwtZm9vdGVyIj4KICAgICAgICA8c3BhbiBjbGFzcz0ibHMtbW9kYWwtZm9vdGVyLW5vdGUiIGlkPSJsc01vZGFsTm90ZSI+PC9zcGFuPgogICAgICAgIDxkaXYgY2xhc3M9ImxzLW1vZGFsLWFjdGlvbnMiPjxhIGNsYXNzPSJscy1tb2RhbC1idG4gc2Vjb25kYXJ5IiBocmVmPSJodHRwczovL2hpY2FybC5haS9zdXBwb3J0LyI+Q29udGFjdCBTdXBwb3J0PC9hPjxhIGNsYXNzPSJscy1tb2RhbC1idG4gcHJpbWFyeSIgaWQ9ImxzTW9kYWxHdWlkZUxpbmsiIGhyZWY9IiMiPk9wZW4gRnVsbCBHdWlkZSA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PGxpbmUgeDE9IjUiIHkxPSIxMiIgeDI9IjE5IiB5Mj0iMTIiPjwvbGluZT48cG9seWxpbmUgcG9pbnRzPSIxMiA1IDE5IDEyIDEyIDE5Ij48L3BvbHlsaW5lPjwvc3ZnPjwvYT48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0ibHMtbW9kYWwtbGlnaHRib3giIGlkPSJsc01lZGlhTGlnaHRib3giIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgogIChmdW5jdGlvbiAoKSB7CiAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsc1N1cHBvcnRQYWdlJyk7CiAgICBpZiAoIXJvb3QpIHJldHVybjsKCiAgICB2YXIgbW9iaWxlTGF5b3V0UXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogNzYwcHgpJyk7CgogICAgZnVuY3Rpb24gaXNNb2JpbGVMYXlvdXQoKSB7CiAgICAgIHJldHVybiBtb2JpbGVMYXlvdXRRdWVyeS5tYXRjaGVzOwogICAgfQoKICAgIC8qCiAgICAgIEF2YWRhIGNhbiBhZGQgbW9iaWxlIHBhZGRpbmcgdG8gdGhlIGNvbnRhaW5lcnMgYXJvdW5kIHRoZSBjb2RlIGJsb2NrLgogICAgICBUaGlzIHJlbW92ZXMgb25seSB0aGUgbGVmdC9yaWdodCBndXR0ZXIgb24gdGhlIExlYXJuICYgU3VwcG9ydCBwYWdlLAogICAgICBhbmQgb25seSBvbiBtb2JpbGUuIEl0IGF2b2lkcyAxMDB2dywgd2hpY2ggY2F1c2VkIHRoZSBwcmV2aW91cyBkb3VibGUtc2Nyb2xsIGlzc3VlLgogICAgKi8KICAgIHZhciBsc1BhcmVudFNlbGVjdG9ycyA9IFsKICAgICAgJy5mdXNpb24tY29sdW1uLXdyYXBwZXInLAogICAgICAnLmZ1c2lvbi1sYXlvdXQtY29sdW1uJywKICAgICAgJy5mdXNpb24tYnVpbGRlci1yb3cnLAogICAgICAnLmZ1c2lvbi1yb3cnLAogICAgICAnLmZ1c2lvbi1mdWxsd2lkdGgnLAogICAgICAnLnBvc3QtY29udGVudCcsCiAgICAgICcuZW50cnktY29udGVudCcsCiAgICAgICcjY29udGVudCcsCiAgICAgICcjbWFpbicKICAgIF07CiAgICB2YXIgbHNUb3VjaGVkUGFyZW50cyA9IFtdOwoKICAgIGZ1bmN0aW9uIGNvbGxlY3RQYXJlbnRHdXR0ZXJFbGVtZW50cygpIHsKICAgICAgbHNUb3VjaGVkUGFyZW50cyA9IFtdOwogICAgICBsc1BhcmVudFNlbGVjdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3RvcikgewogICAgICAgIHZhciBlbCA9IHJvb3QuY2xvc2VzdChzZWxlY3Rvcik7CiAgICAgICAgaWYgKGVsICYmIGxzVG91Y2hlZFBhcmVudHMuaW5kZXhPZihlbCkgPT09IC0xKSB7CiAgICAgICAgICBsc1RvdWNoZWRQYXJlbnRzLnB1c2goZWwpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gc2V0SW1wb3J0YW50U3R5bGUoZWwsIHByb3BlcnR5LCB2YWx1ZSkgewogICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUsICdpbXBvcnRhbnQnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhcHBseU1vYmlsZUd1dHRlckZpeCgpIHsKICAgICAgaWYgKCFsc1RvdWNoZWRQYXJlbnRzLmxlbmd0aCkgY29sbGVjdFBhcmVudEd1dHRlckVsZW1lbnRzKCk7CgogICAgICBsc1RvdWNoZWRQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgaWYgKCFlbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtbHMtb3JpZ2luYWwtc3R5bGUnKSkgewogICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLWxzLW9yaWdpbmFsLXN0eWxlJywgZWwuZ2V0QXR0cmlidXRlKCdzdHlsZScpIHx8ICcnKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc01vYmlsZUxheW91dCgpKSB7CiAgICAgICAgICBzZXRJbXBvcnRhbnRTdHlsZShlbCwgJ3BhZGRpbmctbGVmdCcsICcwJyk7CiAgICAgICAgICBzZXRJbXBvcnRhbnRTdHlsZShlbCwgJ3BhZGRpbmctcmlnaHQnLCAnMCcpOwogICAgICAgICAgc2V0SW1wb3J0YW50U3R5bGUoZWwsICdtYXJnaW4tbGVmdCcsICcwJyk7CiAgICAgICAgICBzZXRJbXBvcnRhbnRTdHlsZShlbCwgJ21hcmdpbi1yaWdodCcsICcwJyk7CiAgICAgICAgICBzZXRJbXBvcnRhbnRTdHlsZShlbCwgJ21heC13aWR0aCcsICdub25lJyk7CiAgICAgICAgICBzZXRJbXBvcnRhbnRTdHlsZShlbCwgJ3dpZHRoJywgJzEwMCUnKTsKICAgICAgICAgIHNldEltcG9ydGFudFN0eWxlKGVsLCAnYm94LXNpemluZycsICdib3JkZXItYm94Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciBvcmlnaW5hbCA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1scy1vcmlnaW5hbC1zdHlsZScpOwogICAgICAgICAgaWYgKG9yaWdpbmFsKSBlbC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgb3JpZ2luYWwpOwogICAgICAgICAgZWxzZSBlbC5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KCgogICAgdmFyIGd1aWRlRGF0YSA9IHsKICAgICAgdG91cjogewogICAgICAgIHRpdGxlOiAnQ0FSTCBpbiA1KGlzaCkgTWludXRlczogVGhlIEVzc2VudGlhbCBUb3VyJywKICAgICAgICBjYXRlZ29yeTogJ0dldHRpbmcgU3RhcnRlZCcsCiAgICAgICAgdHlwZTogJ0Z1bGwgR3VpZGUnLAogICAgICAgIHJlYWQ6ICc1KGlzaCkgbWluJywKICAgICAgICB1cmw6ICdodHRwczovL2hpY2FybC5haS9jYXJsLWluLTUtbWludXRlcy10aGUtZXNzZW50aWFsLXRvdXIvJywKICAgICAgICBkZXNjcmlwdGlvbjogJ0EgcXVpY2sgbWFwIG9mIHRoZSBlZGl0b3IsIHdoYXQgZWFjaCB0b29sIGlzIGZvciwgYW5kIHdoZXJlIHRvIGdvIHdoZW4geW91IG5lZWQgbW9yZSBkZXRhaWwuJywKICAgICAgICBsZWFybjogWydXaGVyZSB0aGUgbWFpbiBlZGl0b3IgdG9vbHMgbGl2ZScsICdXaGF0IENvbXBvbmVudHMsIFRlYWNoaW5nIFJlc291cmNlcywgYW5kIEJsb2NrcyBhcmUgZm9yJywgJ0hvdyBDQVJMLUFzc2lzdCBmaXRzIGludG8gdGhlIHBsYW5uaW5nIHdvcmtmbG93JywgJ1doZXJlIHRvIGdvIG5leHQgaWYgeW91IG5lZWQgYSBkZWVwZXIgZ3VpZGUnXSwKICAgICAgICBjb3ZlcmVkOiBbJ0VkaXRvciBhdCBhIGdsYW5jZScsICdDdXJyaWN1bHVtIGFuZCBTYXZlZCBDbGFzcyBQcm9maWxlcycsICdDb21wb25lbnRzLCBUZWFjaGluZyBSZXNvdXJjZXMsIGFuZCBCbG9ja3MnLCAnQ0FSTC1Bc3Npc3QnLCAnU2F2ZSwgcHVibGlzaCwgYW5kIGRvd25sb2FkJ10sCiAgICAgICAgbWVkaWE6IFt7IHR5cGU6ICdpbWFnZScsIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1LzVpc2gtcDEtZWRpdG9yLW92ZXJ2aWV3LnBuXy1zY2FsZWQucG5nJywgYWx0OiAnQ0FSTCBlZGl0b3Igb3ZlcnZpZXcgc2NyZWVuc2hvdCcgfV0KICAgICAgfSwKICAgICAgZml2ZVN0ZXBzOiB7CiAgICAgICAgdGl0bGU6ICdCdWlsZCBZb3VyIFBsYW4gaW4gNSBTdGVwcycsCiAgICAgICAgY2F0ZWdvcnk6ICdHZXR0aW5nIFN0YXJ0ZWQnLAogICAgICAgIHR5cGU6ICdXb3JrZmxvdyBHdWlkZScsCiAgICAgICAgcmVhZDogJzUgbWluJywKICAgICAgICB1cmw6ICdodHRwczovL2hpY2FybC5haS9idWlsZC15b3VyLXBsYW4taW4tNS1zdGVwcy8nLAogICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHJlY29tbWVuZGVkIG9yZGVyIGZvciBidWlsZGluZyBhIGNvbXBsZXRlIENBUkwgbGVzc29uLCBmcm9tIGZpcnN0IGdlbmVyYXRpb24gdG8gcHVibGlzaGluZy4nLAogICAgICAgIGxlYXJuOiBbJ1RoZSByZWNvbW1lbmRlZCBvcmRlciBmb3IgYnVpbGRpbmcgaW4gQ0FSTCcsICdXaGVuIHRvIGVkaXQgdGhlIGNvcmUgbGVzc29uJywgJ1doZW4gdG8gYWRkIENvbXBvbmVudHMgYW5kIFRlYWNoaW5nIFJlc291cmNlcycsICdXaGF0IHRvIGNoZWNrIGJlZm9yZSBwdWJsaXNoaW5nJ10sCiAgICAgICAgY292ZXJlZDogWydHZW5lcmF0ZSB0aGUgY29yZSBwbGFuJywgJ0VkaXQgdW50aWwgdGhlIGxlc3NvbiBmZWVscyByaWdodCcsICdBZGQgQ29tcG9uZW50cycsICdBZGQgVGVhY2hpbmcgUmVzb3VyY2VzJywgJ1B1Ymxpc2ggYW5kIGRvd25sb2FkJ10sCiAgICAgICAgbWVkaWE6IFtdCiAgICAgIH0sCiAgICAgIGNvbXBvbmVudHM6IHsKICAgICAgICB0aXRsZTogJ0FkZGluZyBDb21wb25lbnRzJywKICAgICAgICBjYXRlZ29yeTogJ0xlc3NvbiBCdWlsZGluZycsCiAgICAgICAgdHlwZTogJ0Z1bGwgR3VpZGUnLAogICAgICAgIHJlYWQ6ICc1IG1pbicsCiAgICAgICAgdXJsOiAnaHR0cHM6Ly9oaWNhcmwuYWkvYWRkaW5nLWNvbXBvbmVudHMtZmFjaWxpdGF0b3ItZ3VpZGVzLycsCiAgICAgICAgZGVzY3JpcHRpb246ICdBZGQgc3R1ZGVudC1mYWNpbmcgbWF0ZXJpYWxzIGxpa2UgYWN0aXZpdGllcywgYXNzaWdubWVudHMsIGFzc2Vzc21lbnRzLCBoYW5kb3V0cywgcXVpenplcywgd29ya3NoZWV0cywgYW5kIGV4aXQgdGlja2V0cy4nLAogICAgICAgIGxlYXJuOiBbJ1doYXQgQ29tcG9uZW50cyBhcmUgdXNlZCBmb3InLCAnSG93IHRvIGJyb3dzZSBhbmQgcHJldmlldyBhIGNvbXBvbmVudCcsICdXaGVuIHRvIHVzZSBhIGJsYW5rIHRlbXBsYXRlIHZzIEFJIGdlbmVyYXRpb24nLCAnSG93IENvbXBvbmVudHMgZGlmZmVyIGZyb20gVGVhY2hpbmcgUmVzb3VyY2VzIGFuZCBCbG9ja3MnXSwKICAgICAgICBjb3ZlcmVkOiBbJ1doYXQgYXJlIENvbXBvbmVudHM/JywgJ0ZpbmFsaXplIHlvdXIgcGxhbiBmaXJzdCcsICdCcm93c2UsIHByZXZpZXcsIGFuZCBhZGQnLCAnVXNlIFRlbXBsYXRlIHZzIEFJIEdlbmVyYXRpb24nLCAnTWlzc2luZyB0ZW1wbGF0ZXMnXSwKICAgICAgICBtZWRpYTogW3sgdHlwZTogJ2ltYWdlJywgc3JjOiAnaHR0cHM6Ly9oaWNhcmwuYWkvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvdWktY29tcG9uZW50cy1yZXNvdXJjZXMtcGFuZWxfY2FsbG91dHMucG5nJywgYWx0OiAnQ29tcG9uZW50cyBhbmQgUmVzb3VyY2VzIHBhbmVsIHNjcmVlbnNob3QnIH1dCiAgICAgIH0sCiAgICAgIHRlYWNoaW5nUmVzb3VyY2VzOiB7CiAgICAgICAgdGl0bGU6ICdBZGRpbmcgVGVhY2hpbmcgUmVzb3VyY2VzJywKICAgICAgICBjYXRlZ29yeTogJ0xlc3NvbiBCdWlsZGluZycsCiAgICAgICAgdHlwZTogJ0Z1bGwgR3VpZGUnLAogICAgICAgIHJlYWQ6ICc2IG1pbicsCiAgICAgICAgdXJsOiAnaHR0cHM6Ly9oaWNhcmwuYWkvYWRkaW5nLXRlYWNoaW5nLXJlc291cmNlcy8nLAogICAgICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGUgdGVhY2hlci1mYWNpbmcgc3VwcG9ydHMgbGlrZSBMZXNzb24vVW5pdCBFbmhhbmNlbWVudHMgYW5kIEVMTCBTdXBwb3J0cyBhZnRlciB5b3VyIHBsYW4gaXMgbW9zdGx5IGZpbmlzaGVkLicsCiAgICAgICAgbGVhcm46IFsnV2hhdCBUZWFjaGluZyBSZXNvdXJjZXMgYXJlIGZvcicsICdXaGVuIHRvIGdlbmVyYXRlIHRoZW0nLCAnSG93IExlc3Nvbi9Vbml0IEVuaGFuY2VtZW50cyB3b3JrJywgJ0hvdyBFTEwgU3VwcG9ydHMgZml0IGludG8gdGhlIHdvcmtmbG93J10sCiAgICAgICAgY292ZXJlZDogWydXaGF0IGFyZSBUZWFjaGluZyBSZXNvdXJjZXM/JywgJ0ZpbmFsaXplIHlvdXIgcGxhbiBmaXJzdCcsICdHZW5lcmF0ZSBhIHJlc291cmNlJywgJ1Jlc291cmNlIGRldGFpbHMnLCAnUmV2aWV3IGFuZCBlZGl0J10sCiAgICAgICAgbWVkaWE6IFt7IHR5cGU6ICdpbWFnZScsIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L3VpLXRlYWNoaW5ncmVzb3VyY2VzLXBhbmVsLW92ZXJ2aWV3X21hcmtlZC5wbmcnLCBhbHQ6ICdUZWFjaGluZyBSZXNvdXJjZXMgcGFuZWwgc2NyZWVuc2hvdCcgfV0KICAgICAgfSwKICAgICAgYmxvY2tzOiB7CiAgICAgICAgdGl0bGU6ICdIb3cgdG8gVXNlIEJsb2NrcycsCiAgICAgICAgY2F0ZWdvcnk6ICdMZXNzb24gQnVpbGRpbmcnLAogICAgICAgIHR5cGU6ICdGdWxsIEd1aWRlJywKICAgICAgICByZWFkOiAnNCBtaW4nLAogICAgICAgIHVybDogJ2h0dHBzOi8vaGljYXJsLmFpL2FkZGluZy1ibG9ja3MtdG8teW91ci1wbGFuLycsCiAgICAgICAgZGVzY3JpcHRpb246ICdBZGQgc21hbGxlciBwaWVjZXMgaW5zaWRlIGV4aXN0aW5nIHRlbXBsYXRlcywgcGFnZXMsIGNvbXBvbmVudHMsIG9yIHJlc291cmNlcy4nLAogICAgICAgIGxlYXJuOiBbJ1doYXQgQmxvY2tzIGFyZSBiZXN0IGZvcicsICdXaHkgeW91IG5lZWQgYSBzZWN0aW9uIGFuZCBsYXlvdXQgZmlyc3QnLCAnSG93IHRvIGFkZCBCbG9ja3MgaW5zaWRlIGFuIGV4aXN0aW5nIHBhZ2UnLCAnV2hhdCBCbG9ja3MgY2Fubm90IGRvIHlldCddLAogICAgICAgIGNvdmVyZWQ6IFsnV2hhdCBhcmUgQmxvY2tzPycsICdBZGQgYSBzZWN0aW9uIGZpcnN0JywgJ0Nob29zZSBhIGxheW91dCcsICdTZWxlY3QgYSBzbG90JywgJ0FkZCBhIGJsb2NrJ10sCiAgICAgICAgbWVkaWE6IFt7IHR5cGU6ICd2aWRlbycsIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1LzVpc2gtcDUtYWRkLWJsb2Nrcy1pbnNpZGUtc2VjdGlvbi5tcDQnLCBhbHQ6ICdBZGRpbmcgYmxvY2tzIHZpZGVvJyB9XQogICAgICB9LAogICAgICBhc3Npc3Q6IHsKICAgICAgICB0aXRsZTogJ1VzaW5nIENBUkwtQXNzaXN0JywKICAgICAgICBjYXRlZ29yeTogJ0xlc3NvbiBCdWlsZGluZycsCiAgICAgICAgdHlwZTogJ0Z1bGwgR3VpZGUnLAogICAgICAgIHJlYWQ6ICc1IG1pbicsCiAgICAgICAgdXJsOiAnaHR0cHM6Ly9oaWNhcmwuYWkvdXNpbmctY2FybC1hc3Npc3QvJywKICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZSBBc2sgQ0FSTCB0byBicmFpbnN0b3JtLCBjbGFyaWZ5LCBhbmQgaW1wcm92ZSBwYXJ0cyBvZiB5b3VyIGxlc3NvbiB3aGlsZSBSZXZpZXcgd2l0aCBDQVJMIGNvbnRpbnVlcyBpbXByb3ZpbmcgaW4gYmV0YS4nLAogICAgICAgIGxlYXJuOiBbJ1doZXJlIENBUkwtQXNzaXN0IGxpdmVzJywgJ1doYXQgQXNrIENBUkwgaXMgYmVzdCBmb3InLCAnRXhhbXBsZSBwcm9tcHRzIHRvIHRyeScsICdXaHkgUmV2aWV3IHdpdGggQ0FSTCBpcyBzdGlsbCBiZWluZyBpbXByb3ZlZCddLAogICAgICAgIGNvdmVyZWQ6IFsnT3BlbiBDQVJMLUFzc2lzdCcsICdVc2UgQXNrIENBUkwnLCAnVHJ5IHByb21wdCBleGFtcGxlcycsICdSZXZpZXcgc2FmZWx5IGR1cmluZyBiZXRhJ10sCiAgICAgICAgbWVkaWE6IFt7IHR5cGU6ICdpbWFnZScsIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L3VpLWNhcmwtYXNzaXN0LXBhbmVsX3Jldmlldy1jaGF0X21hcmtlZC5wbmcnLCBhbHQ6ICdDQVJMLUFzc2lzdCBwYW5lbCBzY3JlZW5zaG90JyB9XQogICAgICB9LAogICAgICBwdWJsaXNoaW5nOiB7CiAgICAgICAgdGl0bGU6ICdQdWJsaXNoaW5nLCBWaXNpYmlsaXR5ICYgRG93bmxvYWRzJywKICAgICAgICBjYXRlZ29yeTogJ1B1Ymxpc2hpbmcnLAogICAgICAgIHR5cGU6ICdGdWxsIEd1aWRlJywKICAgICAgICByZWFkOiAnNSBtaW4nLAogICAgICAgIHVybDogJ2h0dHBzOi8vaGljYXJsLmFpL3B1Ymxpc2hpbmctdmlzaWJpbGl0eS1kb3dubG9hZHMvJywKICAgICAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2ggeW91ciBsZXNzb24sIGNob29zZSB2aXNpYmlsaXR5LCByZXZpZXcgdGhlIGxlc3NvbiBkZXRhaWxzIHBhZ2UsIGFuZCBhY2Nlc3MgZG93bmxvYWRlZCBkb2N1bWVudHMuJywKICAgICAgICBsZWFybjogWydXaGF0IHB1Ymxpc2hpbmcgZG9lcycsICdXaGF0IHRvIGNoZWNrIGJlZm9yZSBwdWJsaXNoaW5nJywgJ0hvdyB2aXNpYmlsaXR5IHdvcmtzJywgJ1doZXJlIHRvIGZpbmQgZG93bmxvYWRzIGFmdGVyIHB1Ymxpc2hpbmcnXSwKICAgICAgICBjb3ZlcmVkOiBbJ0JlZm9yZSBwdWJsaXNoaW5nJywgJ1B1Ymxpc2ggcGFuZWwnLCAnVmlzaWJpbGl0eScsICdMZXNzb24gZGV0YWlscyBwYWdlJywgJ0Rvd25sb2FkcyddLAogICAgICAgIG1lZGlhOiBbeyB0eXBlOiAnaW1hZ2UnLCBzcmM6ICdodHRwczovL2hpY2FybC5haS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS91aS1wdWJsaXNoLXBhbmVsLW92ZXJ2aWV3X21hcmtlZC5wbmcnLCBhbHQ6ICdQdWJsaXNoIHBhbmVsIHNjcmVlbnNob3QnIH0sIHsgdHlwZTogJ2ltYWdlJywgc3JjOiAnaHR0cHM6Ly9oaWNhcmwuYWkvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvZG93bmxvYWQtZG9jcy5wbmcnLCBhbHQ6ICdEb3dubG9hZCBkb2N1bWVudHMgc2NyZWVuc2hvdCcgfV0KICAgICAgfSwKICAgICAgbGlicmFyeUxlc3NvbnM6IHsKICAgICAgICB0aXRsZTogJ0ZpbmRpbmcgJiBVc2luZyBFeGlzdGluZyBMZXNzb25zJywKICAgICAgICBjYXRlZ29yeTogJ0xpYnJhcnkgJiBDb2xsYWJvcmF0aW9uJywKICAgICAgICB0eXBlOiAnRnVsbCBHdWlkZScsCiAgICAgICAgcmVhZDogJzXigJM2IG1pbicsCiAgICAgICAgdXJsOiAnaHR0cHM6Ly9oaWNhcmwuYWkvZmluZGluZy11c2luZy1leGlzdGluZy1sZXNzb25zLycsCiAgICAgICAgZGVzY3JpcHRpb246ICdMZWFybiBob3cgdG8gc2VhcmNoIENBUkzigJlzIExpYnJhcnksIG9wZW4gbGVzc29uIGRldGFpbHMsIHNhdmUgbGVzc29ucyBmb3IgbGF0ZXIsIHJlbWl4IGxlc3NvbnMgZm9yIHlvdXIgb3duIGNsYXNzcm9vbSwgYW5kIGRvd25sb2FkIGF2YWlsYWJsZSBtYXRlcmlhbHMuJywKICAgICAgICBsZWFybjogWwogICAgICAgICAgJ0hvdyB0byBzZWFyY2ggYW5kIGZpbHRlciBleGlzdGluZyBsZXNzb25zIGluIHRoZSBMaWJyYXJ5JywKICAgICAgICAgICdXaGF0IHRvIGNoZWNrIG9uIGEgbGVzc29uIGRldGFpbHMgcGFnZScsCiAgICAgICAgICAnV2hlbiB0byBzYXZlIGEgbGVzc29uIHZlcnN1cyByZW1peCBpdCcsCiAgICAgICAgICAnV2hlcmUgdG8gZmluZCBhdmFpbGFibGUgZG93bmxvYWRzIGFuZCBleHBvcnRzJwogICAgICAgIF0sCiAgICAgICAgY292ZXJlZDogWwogICAgICAgICAgJ1doYXQgaXMgdGhlIExpYnJhcnk/JywKICAgICAgICAgICdTZWFyY2ggYW5kIGZpbHRlciBsZXNzb25zJywKICAgICAgICAgICdPcGVuIGEgbGVzc29uIGRldGFpbHMgcGFnZScsCiAgICAgICAgICAnU2F2ZSB0byBMaWJyYXJ5JywKICAgICAgICAgICdSZW1peCBhIGxlc3NvbicsCiAgICAgICAgICAnRG93bmxvYWQgb3IgZXhwb3J0IG1hdGVyaWFscycsCiAgICAgICAgICAnQ3VycmljdWx1bSB0cmFja2luZyB3aXRoIENvbXBhc3MnLAogICAgICAgICAgJ1F1aWNrIHJlZmVyZW5jZScKICAgICAgICBdLAogICAgICAgIG1lZGlhOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsCiAgICAgICAgICAgIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2V4cGxvcmUtbGlicmFyeS1wYWdlLWZpbHRlcnMucG5nJywKICAgICAgICAgICAgYWx0OiAnQ0FSTCBMaWJyYXJ5IHBhZ2Ugc2hvd2luZyBzZWFyY2gsIGZpbHRlcnMsIHNvcnQgb3B0aW9ucywgYW5kIGxlc3NvbiBjYXJkcycKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsCiAgICAgICAgICAgIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L3NhdmUtdG8tbGlicmFyeS5wbmcnLAogICAgICAgICAgICBhbHQ6ICdDQVJMIGxlc3NvbiBkZXRhaWxzIHBhZ2Ugc2hvd2luZyBTYXZlIHRvIExpYnJhcnksIFJlbWl4LCBsZXNzb24gdGFicywgYW5kIGRvd25sb2FkcyBhcmVhJwogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgbWVkaWE6IHsKICAgICAgICB0aXRsZTogJ0FkZGluZyBJbWFnZXMgJiBNZWRpYSB0byBZb3VyIExlc3NvbicsCiAgICAgICAgY2F0ZWdvcnk6ICdBSSAmIE1lZGlhJywKICAgICAgICB0eXBlOiAnRnVsbCBHdWlkZScsCiAgICAgICAgcmVhZDogJzcgbWluJywKICAgICAgICB1cmw6ICdodHRwczovL2hpY2FybC5haS9hZGRpbmctaW1hZ2VzLW1lZGlhLXRvLXlvdXItbGVzc29uLycsCiAgICAgICAgZGVzY3JpcHRpb246ICdVcGxvYWQgaW1hZ2VzLCBzZWFyY2ggb3Blbi1saWNlbnNlZCB2aXN1YWxzLCBvciBnZW5lcmF0ZSBjbGFzc3Jvb20tc2FmZSBBSSBpbWFnZXMgZm9yIGxlc3NvbiBtYXRlcmlhbHMuJywKICAgICAgICBsZWFybjogWydIb3cgdGhlIExpYnJhcnksIFdlYiwgYW5kIEFJIHRhYnMgd29yaycsICdIb3cgdG8gZ2VuZXJhdGUgQUkgaW1hZ2Ugb3B0aW9ucycsICdIb3cgdmlzdWFsIHR5cGUgYW5kIHN0eWxlIGNoYW5nZSB0aGUgcmVzdWx0JywgJ0hvdyB0byBzYXZlIGFuZCBpbnNlcnQgaW1hZ2VzIGludG8gYW4gaW1hZ2UgYmxvY2snXSwKICAgICAgICBjb3ZlcmVkOiBbJ1VwbG9hZCBhbmQgTGlicmFyeScsICdXZWIgc2VhcmNoJywgJ0FJIGltYWdlcycsICdWaXN1YWwgdHlwZXMnLCAnU3R5bGVzIGFuZCBvcHRpb25zJywgJ1NhdmUgYW5kIGluc2VydCddLAogICAgICAgIG1lZGlhOiBbeyB0eXBlOiAndmlkZW8nLCBzcmM6ICdodHRwczovL2hpY2FybC5haS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS9tZWRpYS1haS1pbWFnZS1mdWxsLXNlYXJjaC1pbnNlcnQtcHJvY2Vzcy5tcDQnLCBhbHQ6ICdBSSBpbWFnZSBnZW5lcmF0aW9uIHdvcmtmbG93IHZpZGVvJyB9LCB7IHR5cGU6ICdpbWFnZScsIHNyYzogJ2h0dHBzOi8vaGljYXJsLmFpL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2FuaW1hdGVkLWRpYWdyYW0tazIucG5nJywgYWx0OiAnQW5pbWF0ZWQgZGlhZ3JhbSBleGFtcGxlJyB9XQogICAgICB9LAogICAgICBwcm9maWxlczogewogICAgICAgIHRpdGxlOiAnU2F2ZWQgQ2xhc3MgUHJvZmlsZXMnLAogICAgICAgIGNhdGVnb3J5OiAnU2V0dXAnLAogICAgICAgIHR5cGU6ICdGdWxsIEd1aWRlJywKICAgICAgICByZWFkOiAnNCBtaW4nLAogICAgICAgIHVybDogJ2h0dHBzOi8vaGljYXJsLmFpL3NhdmVkLWNsYXNzLXByb2ZpbGVzLycsCiAgICAgICAgZGVzY3JpcHRpb246ICdTYXZlIHJldXNhYmxlIGNsYXNzIGNvbnRleHQgc28gQ0FSTCBjYW4gZ2VuZXJhdGUgbGVzc29ucyB0aGF0IGJldHRlciBmaXQgeW91ciBhY3R1YWwgY2xhc3Nyb29tLicsCiAgICAgICAgbGVhcm46IFsnV2hlcmUgcHJvZmlsZSBhbmQgY3VycmljdWx1bSBzZXR0aW5ncyBsaXZlJywgJ0hvdyBTYXZlZCBDbGFzcyBQcm9maWxlcyBoZWxwIENBUkwnLCAnV2hhdCBjbGFzcyBjb250ZXh0IHRvIHNhdmUnLCAnV2hlbiB0byBjaG9vc2UgYSBwcm9maWxlIGJlZm9yZSBwbGFubmluZyddLAogICAgICAgIGNvdmVyZWQ6IFsnT3BlbiBTZXR0aW5ncycsICdTZXQgY3VycmljdWx1bScsICdDcmVhdGUgYSBTYXZlZCBDbGFzcyBQcm9maWxlJywgJ1VzZSBhIHByb2ZpbGUgd2hpbGUgcGxhbm5pbmcnXSwKICAgICAgICBtZWRpYTogW3sgdHlwZTogJ2ltYWdlJywgc3JjOiAnaHR0cHM6Ly9oaWNhcmwuYWkvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvY3VycmljdWx1bS1zZWxlY3Rpb24tbWVudS5wbmcnLCBhbHQ6ICdDdXJyaWN1bHVtIHNldHRpbmdzIHNjcmVlbnNob3QnIH1dCiAgICAgIH0KICAgIH07CgogICAgdmFyIGNhcmRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1jYXJkXScpKTsKICAgIHZhciBzZWFyY2hJbnB1dCA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzU2VhcmNoSW5wdXQnKTsKICAgIHZhciBzZWFyY2hDb3VudCA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzU2VhcmNoQ291bnQnKTsKICAgIHZhciByZXN1bHRzTGFiZWwgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc1Jlc3VsdHNMYWJlbCcpOwogICAgdmFyIGVtcHR5U3RhdGUgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc0VtcHR5U3RhdGUnKTsKICAgIHZhciBjbGVhckZpbHRlcnMgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc0NsZWFyRmlsdGVycycpOwogICAgdmFyIGZpbHRlcnMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5scy1maWx0ZXItcGlsbCcpOwogICAgdmFyIGFjdGl2ZUZpbHRlcnMgPSB7IGNhdGVnb3J5OiAnYWxsJywgdHlwZTogJ2FsbCcgfTsKICAgIHZhciBtb2JpbGVDYXRlZ29yeUZpbHRlciA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzTW9iaWxlQ2F0ZWdvcnlGaWx0ZXInKTsKICAgIHZhciBtb2JpbGVUeXBlRmlsdGVyID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbHNNb2JpbGVUeXBlRmlsdGVyJyk7CgogICAgZnVuY3Rpb24gdXBkYXRlR3VpZGVBY3Rpb25MYWJlbHMoKSB7CiAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZ3VpZGUtaWRdIC5scy1jYXJkLXJlYWQnKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWFkTGFiZWwpIHsKICAgICAgICB2YXIgc3ZnID0gcmVhZExhYmVsLnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpOwogICAgICAgIHZhciBzdmdIdG1sID0gc3ZnID8gJyAnICsgc3ZnLm91dGVySFRNTCA6ICcnOwogICAgICAgIHJlYWRMYWJlbC5pbm5lckhUTUwgPSAoaXNNb2JpbGVMYXlvdXQoKSA/ICdWaWV3IEd1aWRlJyA6ICdWaWV3IEd1aWRlJykgKyBzdmdIdG1sOwogICAgICB9KTsKICAgIH0KCiAgICBhcHBseU1vYmlsZUd1dHRlckZpeCgpOwogICAgdXBkYXRlR3VpZGVBY3Rpb25MYWJlbHMoKTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgIGFwcGx5TW9iaWxlR3V0dGVyRml4KCk7CiAgICAgIHVwZGF0ZUd1aWRlQWN0aW9uTGFiZWxzKCk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBzeW5jTW9iaWxlRmlsdGVycygpIHsKICAgICAgaWYgKG1vYmlsZUNhdGVnb3J5RmlsdGVyKSBtb2JpbGVDYXRlZ29yeUZpbHRlci52YWx1ZSA9IGFjdGl2ZUZpbHRlcnMuY2F0ZWdvcnk7CiAgICAgIGlmIChtb2JpbGVUeXBlRmlsdGVyKSBtb2JpbGVUeXBlRmlsdGVyLnZhbHVlID0gYWN0aXZlRmlsdGVycy50eXBlOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldEZpbHRlcihncm91cCwgdmFsdWUpIHsKICAgICAgYWN0aXZlRmlsdGVyc1tncm91cF0gPSB2YWx1ZTsKICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcubHMtZmlsdGVyLXBpbGxbZGF0YS1maWx0ZXItZ3JvdXA9IicgKyBncm91cCArICciXScpLmZvckVhY2goZnVuY3Rpb24gKGJ1dHRvbikgewogICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKCdhY3RpdmUnLCBidXR0b24uZ2V0QXR0cmlidXRlKCdkYXRhLWZpbHRlci12YWx1ZScpID09PSB2YWx1ZSk7CiAgICAgIH0pOwogICAgICBzeW5jTW9iaWxlRmlsdGVycygpOwogICAgICBhcHBseUZpbHRlcnMoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBub3JtYWxpemUodmFsdWUpIHsKICAgICAgcmV0dXJuICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgICB9CgogICAgZnVuY3Rpb24gY2FyZE1hdGNoZXMoY2FyZCwgcXVlcnkpIHsKICAgICAgdmFyIGNhdGVnb3J5ID0gY2FyZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY2F0ZWdvcnknKSB8fCAnJzsKICAgICAgdmFyIHR5cGUgPSBjYXJkLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgfHwgJyc7CiAgICAgIHZhciBzZWFyY2hUZXh0ID0gbm9ybWFsaXplKAogICAgICAgIGNhcmQudGV4dENvbnRlbnQgKyAnICcgKwogICAgICAgIChjYXJkLmdldEF0dHJpYnV0ZSgnZGF0YS1zZWFyY2gnKSB8fCAnJykgKyAnICcgKwogICAgICAgIChjYXJkLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnKQogICAgICApOwoKICAgICAgdmFyIGNhdGVnb3J5TWF0Y2ggPSBhY3RpdmVGaWx0ZXJzLmNhdGVnb3J5ID09PSAnYWxsJyB8fCBjYXRlZ29yeSA9PT0gYWN0aXZlRmlsdGVycy5jYXRlZ29yeTsKICAgICAgdmFyIHR5cGVNYXRjaCA9IGFjdGl2ZUZpbHRlcnMudHlwZSA9PT0gJ2FsbCcgfHwgdHlwZSA9PT0gYWN0aXZlRmlsdGVycy50eXBlOwoKICAgICAgdmFyIGFsaWFzTWFwID0gewogICAgICAgIHBpY3R1cmU6IFsncGljdHVyZScsICdwaWN0dXJlcycsICdpbWFnZScsICdpbWFnZXMnLCAnbWVkaWEnLCAndmlzdWFsJywgJ3Zpc3VhbHMnXSwKICAgICAgICBwaWN0dXJlczogWydwaWN0dXJlJywgJ3BpY3R1cmVzJywgJ2ltYWdlJywgJ2ltYWdlcycsICdtZWRpYScsICd2aXN1YWwnLCAndmlzdWFscyddLAogICAgICAgIGltYWdlOiBbJ2ltYWdlJywgJ2ltYWdlcycsICdtZWRpYScsICd2aXN1YWwnLCAndmlzdWFscycsICdwaWN0dXJlJywgJ3BpY3R1cmVzJ10sCiAgICAgICAgaW1hZ2VzOiBbJ2ltYWdlJywgJ2ltYWdlcycsICdtZWRpYScsICd2aXN1YWwnLCAndmlzdWFscycsICdwaWN0dXJlJywgJ3BpY3R1cmVzJ10sCiAgICAgICAgcGhvdG86IFsncGhvdG8nLCAncGhvdG9zJywgJ2ltYWdlJywgJ2ltYWdlcycsICdtZWRpYScsICd2aXN1YWwnLCAndmlzdWFscyddLAogICAgICAgIHBob3RvczogWydwaG90bycsICdwaG90b3MnLCAnaW1hZ2UnLCAnaW1hZ2VzJywgJ21lZGlhJywgJ3Zpc3VhbCcsICd2aXN1YWxzJ10sCiAgICAgICAgd29ya3NoZWV0OiBbJ3dvcmtzaGVldCcsICd3b3Jrc2hlZXRzJywgJ2NvbXBvbmVudCcsICdjb21wb25lbnRzJywgJ2hhbmRvdXQnLCAnaGFuZG91dHMnXSwKICAgICAgICB3b3Jrc2hlZXRzOiBbJ3dvcmtzaGVldCcsICd3b3Jrc2hlZXRzJywgJ2NvbXBvbmVudCcsICdjb21wb25lbnRzJywgJ2hhbmRvdXQnLCAnaGFuZG91dHMnXSwKICAgICAgICBhY3Rpdml0eTogWydhY3Rpdml0eScsICdhY3Rpdml0aWVzJywgJ2NvbXBvbmVudCcsICdjb21wb25lbnRzJ10sCiAgICAgICAgYWN0aXZpdGllczogWydhY3Rpdml0eScsICdhY3Rpdml0aWVzJywgJ2NvbXBvbmVudCcsICdjb21wb25lbnRzJ10sCiAgICAgICAgYXNzZXNzbWVudDogWydhc3Nlc3NtZW50JywgJ2Fzc2Vzc21lbnRzJywgJ3F1aXonLCAncXVpenplcycsICdjb21wb25lbnQnLCAnY29tcG9uZW50cyddLAogICAgICAgIGFzc2Vzc21lbnRzOiBbJ2Fzc2Vzc21lbnQnLCAnYXNzZXNzbWVudHMnLCAncXVpeicsICdxdWl6emVzJywgJ2NvbXBvbmVudCcsICdjb21wb25lbnRzJ10sCiAgICAgICAgcmVzb3VyY2U6IFsncmVzb3VyY2UnLCAncmVzb3VyY2VzJywgJ3RlYWNoaW5nJywgJ2VsbCcsICdlbmhhbmNlbWVudHMnXSwKICAgICAgICByZXNvdXJjZXM6IFsncmVzb3VyY2UnLCAncmVzb3VyY2VzJywgJ3RlYWNoaW5nJywgJ2VsbCcsICdlbmhhbmNlbWVudHMnXSwKICAgICAgICBkb3dubG9hZDogWydkb3dubG9hZCcsICdkb3dubG9hZHMnLCAnZG9jdW1lbnQnLCAnZG9jdW1lbnRzJywgJ3B1Ymxpc2gnLCAncHVibGlzaGluZyddLAogICAgICAgIGRvd25sb2FkczogWydkb3dubG9hZCcsICdkb3dubG9hZHMnLCAnZG9jdW1lbnQnLCAnZG9jdW1lbnRzJywgJ3B1Ymxpc2gnLCAncHVibGlzaGluZyddLAogICAgICAgIHB1Ymxpc2g6IFsncHVibGlzaCcsICdwdWJsaXNoaW5nJywgJ3Zpc2liaWxpdHknLCAnZG93bmxvYWRzJywgJ3NoYXJlJywgJ3NoYXJpbmcnXSwKICAgICAgICBwdWJsaXNoaW5nOiBbJ3B1Ymxpc2gnLCAncHVibGlzaGluZycsICd2aXNpYmlsaXR5JywgJ2Rvd25sb2FkcycsICdzaGFyZScsICdzaGFyaW5nJ10sCiAgICAgICAgcHJvZmlsZTogWydwcm9maWxlJywgJ3Byb2ZpbGVzJywgJ3NhdmVkJywgJ2NsYXNzJywgJ3NldHVwJywgJ2N1cnJpY3VsdW0nXSwKICAgICAgICBwcm9maWxlczogWydwcm9maWxlJywgJ3Byb2ZpbGVzJywgJ3NhdmVkJywgJ2NsYXNzJywgJ3NldHVwJywgJ2N1cnJpY3VsdW0nXSwKICAgICAgICBhc3Npc3Q6IFsnYXNzaXN0JywgJ2NoYXQnLCAncmV2aWV3JywgJ2FzaycsICdjYXJsJ10sCiAgICAgICAgY2hhdDogWydjaGF0JywgJ2Fzc2lzdCcsICdhc2snLCAncmV2aWV3JywgJ2NhcmwnXSwKICAgICAgICBoZWxwOiBbJ2hlbHAnLCAnc3VwcG9ydCcsICdndWlkZScsICdob3ctdG8nLCAnaG93dG9zJ10sCiAgICAgICAgYWk6IFsnYWknLCAnbWVkaWEnLCAnaW1hZ2UnLCAnaW1hZ2VzJywgJ2Fzc2lzdCddLAogICAgICAgIGVsbDogWydlbGwnLCAnbGFuZ3VhZ2UnLCAnc3VwcG9ydHMnLCAndGVhY2hpbmcnLCAncmVzb3VyY2VzJ10sCiAgICAgICAgYmxvY2s6IFsnYmxvY2snLCAnYmxvY2tzJywgJ2xheW91dCcsICdzZWN0aW9uJywgJ3Nsb3QnXSwKICAgICAgICBibG9ja3M6IFsnYmxvY2snLCAnYmxvY2tzJywgJ2xheW91dCcsICdzZWN0aW9uJywgJ3Nsb3QnXQogICAgICB9OwoKICAgICAgdmFyIHRlcm1zID0gbm9ybWFsaXplKHF1ZXJ5KS5zcGxpdCgvXHMrLykuZmlsdGVyKEJvb2xlYW4pOwoKICAgICAgdmFyIHF1ZXJ5TWF0Y2ggPSAhdGVybXMubGVuZ3RoIHx8IHRlcm1zLmV2ZXJ5KGZ1bmN0aW9uICh0ZXJtKSB7CiAgICAgICAgdmFyIG9wdGlvbnMgPSBhbGlhc01hcFt0ZXJtXSB8fCBbdGVybV07CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc29tZShmdW5jdGlvbiAob3B0aW9uKSB7CiAgICAgICAgICByZXR1cm4gc2VhcmNoVGV4dC5pbmRleE9mKG9wdGlvbikgIT09IC0xOwogICAgICAgIH0pOwogICAgICB9KTsKCiAgICAgIHJldHVybiBjYXRlZ29yeU1hdGNoICYmIHR5cGVNYXRjaCAmJiBxdWVyeU1hdGNoOwogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZVNlY3Rpb25zKCkgewogICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNlY3Rpb25dJykuZm9yRWFjaChmdW5jdGlvbiAoc2VjdGlvbikgewogICAgICAgIHZhciB2aXNpYmxlQ2FyZHMgPSBzZWN0aW9uLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNhcmRdOm5vdChbaGlkZGVuXSknKTsKICAgICAgICBzZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlQ2FyZHMubGVuZ3RoID8gJycgOiAnbm9uZSc7CiAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGFwcGx5RmlsdGVycygpIHsKICAgICAgdmFyIHF1ZXJ5ID0gbm9ybWFsaXplKHNlYXJjaElucHV0ID8gc2VhcmNoSW5wdXQudmFsdWUgOiAnJyk7CiAgICAgIHZhciB2aXNpYmxlID0gMDsKICAgICAgY2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICAgIHZhciBtYXRjaCA9IGNhcmRNYXRjaGVzKGNhcmQsIHF1ZXJ5KTsKICAgICAgICBjYXJkLmhpZGRlbiA9ICFtYXRjaDsKICAgICAgICBpZiAobWF0Y2gpIHZpc2libGUgKz0gMTsKICAgICAgfSk7CiAgICAgIHVwZGF0ZVNlY3Rpb25zKCk7CiAgICAgIGlmIChzZWFyY2hDb3VudCkgc2VhcmNoQ291bnQuaW5uZXJIVE1MID0gJzxzdHJvbmc+JyArIGNhcmRzLmxlbmd0aCArICc8L3N0cm9uZz4gcmVzb3VyY2VzJzsKICAgICAgaWYgKHJlc3VsdHNMYWJlbCkgcmVzdWx0c0xhYmVsLnRleHRDb250ZW50ID0gJ1Nob3dpbmcgJyArIHZpc2libGUgKyAnIG9mICcgKyBjYXJkcy5sZW5ndGggKyAnIHJlc291cmNlcyc7CiAgICAgIGlmIChlbXB0eVN0YXRlKSBlbXB0eVN0YXRlLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ25vbmUnIDogJ2Jsb2NrJzsKICAgIH0KCiAgICBmaWx0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGJ1dHRvbikgewogICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgc2V0RmlsdGVyKGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmlsdGVyLWdyb3VwJyksIGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmlsdGVyLXZhbHVlJykpOwogICAgICB9KTsKICAgIH0pOwoKICAgIGlmIChtb2JpbGVDYXRlZ29yeUZpbHRlcikgewogICAgICBtb2JpbGVDYXRlZ29yeUZpbHRlci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgc2V0RmlsdGVyKCdjYXRlZ29yeScsIG1vYmlsZUNhdGVnb3J5RmlsdGVyLnZhbHVlKTsKICAgICAgfSk7CiAgICB9CgogICAgaWYgKG1vYmlsZVR5cGVGaWx0ZXIpIHsKICAgICAgbW9iaWxlVHlwZUZpbHRlci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgc2V0RmlsdGVyKCd0eXBlJywgbW9iaWxlVHlwZUZpbHRlci52YWx1ZSk7CiAgICAgIH0pOwogICAgfQoKICAgIGlmIChzZWFyY2hJbnB1dCkgc2VhcmNoSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBhcHBseUZpbHRlcnMpOwogICAgaWYgKGNsZWFyRmlsdGVycykgewogICAgICBjbGVhckZpbHRlcnMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHNlYXJjaElucHV0KSBzZWFyY2hJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgIGFjdGl2ZUZpbHRlcnMgPSB7IGNhdGVnb3J5OiAnYWxsJywgdHlwZTogJ2FsbCcgfTsKICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5scy1maWx0ZXItcGlsbCcpLmZvckVhY2goZnVuY3Rpb24gKGJ1dHRvbikgewogICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScsIGJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmlsdGVyLXZhbHVlJykgPT09ICdhbGwnKTsKICAgICAgICB9KTsKICAgICAgICBzeW5jTW9iaWxlRmlsdGVycygpOwogICAgICAgIGFwcGx5RmlsdGVycygpOwogICAgICB9KTsKICAgIH0KCiAgICB2YXIgbW9kYWwgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc0d1aWRlTW9kYWwnKTsKICAgIHZhciBtb2RhbFRpdGxlID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbHNNb2RhbFRpdGxlJyk7CiAgICB2YXIgbW9kYWxTdWJ0aXRsZSA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzTW9kYWxTdWJ0aXRsZScpOwogICAgdmFyIG1vZGFsQ2F0ZWdvcnkgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01vZGFsQ2F0ZWdvcnknKTsKICAgIHZhciBtb2RhbFR5cGUgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01vZGFsVHlwZScpOwogICAgdmFyIG1vZGFsTGVhcm4gPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01vZGFsTGVhcm4nKTsKICAgIHZhciBtb2RhbENvdmVyZWQgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01vZGFsQ292ZXJlZCcpOwogICAgdmFyIG1vZGFsTGluayA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzTW9kYWxHdWlkZUxpbmsnKTsKICAgIHZhciBtb2RhbE5vdGUgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01vZGFsTm90ZScpOwogICAgdmFyIG1vZGFsTWVkaWFTdGFnZSA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzTW9kYWxNZWRpYVN0YWdlJyk7CiAgICB2YXIgbW9kYWxEb3RzID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbHNNb2RhbERvdHMnKTsKICAgIHZhciBtb2RhbFByZXYgPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01vZGFsUHJldicpOwogICAgdmFyIG1vZGFsTmV4dCA9IHJvb3QucXVlcnlTZWxlY3RvcignI2xzTW9kYWxOZXh0Jyk7CiAgICB2YXIgbW9kYWxNZWRpYVNoZWxsID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbHNNb2RhbE1lZGlhU2hlbGwnKTsKICAgIHZhciBtb2RhbENsb3NlID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcjbHNNb2RhbENsb3NlJyk7CiAgICB2YXIgbGlnaHRib3ggPSByb290LnF1ZXJ5U2VsZWN0b3IoJyNsc01lZGlhTGlnaHRib3gnKTsKICAgIHZhciBhY3RpdmVHdWlkZSA9IG51bGw7CiAgICB2YXIgYWN0aXZlTWVkaWFJbmRleCA9IDA7CgogICAgZnVuY3Rpb24gY2xlYXJWaWRlb3MoY29udGFpbmVyKSB7CiAgICAgIGlmICghY29udGFpbmVyKSByZXR1cm47CiAgICAgIGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCd2aWRlbycpLmZvckVhY2goZnVuY3Rpb24gKHZpZGVvKSB7CiAgICAgICAgdmlkZW8ucGF1c2UoKTsKICAgICAgICB2aWRlby5yZW1vdmVBdHRyaWJ1dGUoJ3NyYycpOwogICAgICAgIHZpZGVvLmxvYWQoKTsKICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoKSB7CiAgICAgIGlmICghYWN0aXZlR3VpZGUgfHwgIW1vZGFsTWVkaWFTdGFnZSkgcmV0dXJuOwogICAgICB2YXIgbWVkaWEgPSBhY3RpdmVHdWlkZS5tZWRpYSB8fCBbXTsKICAgICAgdmFyIGl0ZW0gPSBtZWRpYVthY3RpdmVNZWRpYUluZGV4XTsKICAgICAgY2xlYXJWaWRlb3MobW9kYWxNZWRpYVN0YWdlKTsKICAgICAgbW9kYWxNZWRpYVN0YWdlLmlubmVySFRNTCA9ICcnOwoKICAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgbW9kYWxNZWRpYVN0YWdlLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJscy1tb2RhbC1wbGFjZWhvbGRlciI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiI+PHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMiI+PC9yZWN0PjxjaXJjbGUgY3g9IjguNSIgY3k9IjguNSIgcj0iMS41Ij48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPSIyMSAxNSAxNiAxMCA1IDIxIj48L3BvbHlsaW5lPjwvc3ZnPjxzcGFuPkd1aWRlIHByZXZpZXc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMXB4O29wYWNpdHk6Ljc1OyI+T3BlbiB0aGUgZnVsbCBndWlkZSBmb3Igc2NyZWVuc2hvdHMgYW5kIHdhbGt0aHJvdWdoIGRldGFpbHMuPC9zcGFuPjwvZGl2Pic7CiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAndmlkZW8nKSB7CiAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKICAgICAgICB2aWRlby5jb250cm9scyA9IHRydWU7CiAgICAgICAgdmlkZW8ubXV0ZWQgPSB0cnVlOwogICAgICAgIHZpZGVvLmxvb3AgPSB0cnVlOwogICAgICAgIHZpZGVvLnBsYXlzSW5saW5lID0gdHJ1ZTsKICAgICAgICB2aWRlby5wcmVsb2FkID0gJ21ldGFkYXRhJzsKICAgICAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBpdGVtLmFsdCB8fCAnR3VpZGUgcHJldmlldyB2aWRlbycpOwogICAgICAgIHZhciBzb3VyY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzb3VyY2UnKTsKICAgICAgICBzb3VyY2Uuc3JjID0gaXRlbS5zcmM7CiAgICAgICAgc291cmNlLnR5cGUgPSAndmlkZW8vbXA0JzsKICAgICAgICB2aWRlby5hcHBlbmRDaGlsZChzb3VyY2UpOwogICAgICAgIG1vZGFsTWVkaWFTdGFnZS5hcHBlbmRDaGlsZCh2aWRlbyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAgIGltZy5zcmMgPSBpdGVtLnNyYzsKICAgICAgICBpbWcuYWx0ID0gaXRlbS5hbHQgfHwgJyc7CiAgICAgICAgbW9kYWxNZWRpYVN0YWdlLmFwcGVuZENoaWxkKGltZyk7CiAgICAgIH0KCiAgICAgIHZhciBoYXNNdWx0aXBsZSA9IG1lZGlhLmxlbmd0aCA+IDE7CiAgICAgIG1vZGFsUHJldi5jbGFzc0xpc3QudG9nZ2xlKCd2aXNpYmxlJywgaGFzTXVsdGlwbGUpOwogICAgICBtb2RhbE5leHQuY2xhc3NMaXN0LnRvZ2dsZSgndmlzaWJsZScsIGhhc011bHRpcGxlKTsKICAgICAgbW9kYWxEb3RzLmlubmVySFRNTCA9ICcnOwogICAgICBtZWRpYS5mb3JFYWNoKGZ1bmN0aW9uIChfLCBpbmRleCkgewogICAgICAgIHZhciBkb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgICAgICBkb3QudHlwZSA9ICdidXR0b24nOwogICAgICAgIGRvdC5jbGFzc05hbWUgPSAnbHMtbW9kYWwtZG90JyArIChpbmRleCA9PT0gYWN0aXZlTWVkaWFJbmRleCA/ICcgYWN0aXZlJyA6ICcnKTsKICAgICAgICBkb3Quc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1ByZXZpZXcgJyArIChpbmRleCArIDEpKTsKICAgICAgICBkb3QuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBhY3RpdmVNZWRpYUluZGV4ID0gaW5kZXg7CiAgICAgICAgICByZW5kZXJNZWRpYSgpOwogICAgICAgIH0pOwogICAgICAgIG1vZGFsRG90cy5hcHBlbmRDaGlsZChkb3QpOwogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBvcGVuR3VpZGVNb2RhbChpZCkgewogICAgICB2YXIgZ3VpZGUgPSBndWlkZURhdGFbaWRdOwogICAgICBpZiAoIWd1aWRlIHx8ICFtb2RhbCkgcmV0dXJuOwogICAgICBhY3RpdmVHdWlkZSA9IGd1aWRlOwogICAgICBhY3RpdmVNZWRpYUluZGV4ID0gMDsKICAgICAgbW9kYWxUaXRsZS50ZXh0Q29udGVudCA9IGd1aWRlLnRpdGxlOwogICAgICBtb2RhbFN1YnRpdGxlLnRleHRDb250ZW50ID0gZ3VpZGUuZGVzY3JpcHRpb247CiAgICAgIG1vZGFsQ2F0ZWdvcnkudGV4dENvbnRlbnQgPSBndWlkZS5jYXRlZ29yeTsKICAgICAgbW9kYWxUeXBlLnRleHRDb250ZW50ID0gZ3VpZGUucmVhZCArICcgwrcgJyArIGd1aWRlLnR5cGU7CiAgICAgIG1vZGFsTGluay5ocmVmID0gZ3VpZGUudXJsOwogICAgICBtb2RhbE5vdGUudGV4dENvbnRlbnQgPSAnVmlldyBndWlkZSBkZXRhaWxzLic7CgogICAgICBtb2RhbExlYXJuLmlubmVySFRNTCA9ICcnOwogICAgICBndWlkZS5sZWFybi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKICAgICAgICBsaS50ZXh0Q29udGVudCA9IGl0ZW07CiAgICAgICAgbW9kYWxMZWFybi5hcHBlbmRDaGlsZChsaSk7CiAgICAgIH0pOwoKICAgICAgbW9kYWxDb3ZlcmVkLmlubmVySFRNTCA9ICcnOwogICAgICBndWlkZS5jb3ZlcmVkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7CiAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHJvdy5jbGFzc05hbWUgPSAnbHMtY292ZXJlZC1pdGVtJzsKICAgICAgICB2YXIgbnVtYmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgIG51bWJlci5jbGFzc05hbWUgPSAnbHMtY292ZXJlZC1udW1iZXInOwogICAgICAgIG51bWJlci50ZXh0Q29udGVudCA9IGluZGV4ICsgMTsKICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICB0ZXh0LmNsYXNzTmFtZSA9ICdscy1jb3ZlcmVkLXRleHQnOwogICAgICAgIHRleHQudGV4dENvbnRlbnQgPSBpdGVtOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChudW1iZXIpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZXh0KTsKICAgICAgICBtb2RhbENvdmVyZWQuYXBwZW5kQ2hpbGQocm93KTsKICAgICAgfSk7CgogICAgICByZW5kZXJNZWRpYSgpOwogICAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgbW9kYWwuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2xzLW1vZGFsLW9wZW4nKTsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2xzLW1vZGFsLW9wZW4nKTsKICAgICAgbW9kYWxDbG9zZS5mb2N1cygpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsb3NlR3VpZGVNb2RhbCgpIHsKICAgICAgaWYgKCFtb2RhbCkgcmV0dXJuOwogICAgICBjbGVhclZpZGVvcyhtb2RhbE1lZGlhU3RhZ2UpOwogICAgICBtb2RhbC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgbW9kYWwuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbHMtbW9kYWwtb3BlbicpOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbHMtbW9kYWwtb3BlbicpOwogICAgICBpZiAobW9kYWxNZWRpYVN0YWdlKSBtb2RhbE1lZGlhU3RhZ2UuaW5uZXJIVE1MID0gJyc7CiAgICAgIGFjdGl2ZUd1aWRlID0gbnVsbDsKICAgIH0KCiAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWd1aWRlLWlkXScpLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgZ3VpZGVJZCA9IGNhcmQuZ2V0QXR0cmlidXRlKCdkYXRhLWd1aWRlLWlkJyk7CiAgICAgICAgdmFyIGd1aWRlID0gZ3VpZGVEYXRhW2d1aWRlSWRdOwoKICAgICAgICBpZiAoZ3VpZGUgJiYgZ3VpZGUudXJsKSB7IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZ3VpZGUudXJsOyByZXR1cm47IH0KCiAgICAgICAgb3Blbkd1aWRlTW9kYWwoZ3VpZGVJZCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgbW9kYWxDbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlR3VpZGVNb2RhbCk7CiAgICBtb2RhbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBtb2RhbCkgY2xvc2VHdWlkZU1vZGFsKCk7CiAgICB9KTsKCiAgICBtb2RhbFByZXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGlmICghYWN0aXZlR3VpZGUgfHwgIWFjdGl2ZUd1aWRlLm1lZGlhLmxlbmd0aCkgcmV0dXJuOwogICAgICBhY3RpdmVNZWRpYUluZGV4ID0gKGFjdGl2ZU1lZGlhSW5kZXggLSAxICsgYWN0aXZlR3VpZGUubWVkaWEubGVuZ3RoKSAlIGFjdGl2ZUd1aWRlLm1lZGlhLmxlbmd0aDsKICAgICAgcmVuZGVyTWVkaWEoKTsKICAgIH0pOwoKICAgIG1vZGFsTmV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgaWYgKCFhY3RpdmVHdWlkZSB8fCAhYWN0aXZlR3VpZGUubWVkaWEubGVuZ3RoKSByZXR1cm47CiAgICAgIGFjdGl2ZU1lZGlhSW5kZXggPSAoYWN0aXZlTWVkaWFJbmRleCArIDEpICUgYWN0aXZlR3VpZGUubWVkaWEubGVuZ3RoOwogICAgICByZW5kZXJNZWRpYSgpOwogICAgfSk7CgogICAgZnVuY3Rpb24gb3BlbkxpZ2h0Ym94KCkgewogICAgICBpZiAoIWFjdGl2ZUd1aWRlIHx8ICFsaWdodGJveCkgcmV0dXJuOwogICAgICB2YXIgaXRlbSA9IChhY3RpdmVHdWlkZS5tZWRpYSB8fCBbXSlbYWN0aXZlTWVkaWFJbmRleF07CiAgICAgIGlmICghaXRlbSkgcmV0dXJuOwogICAgICBsaWdodGJveC5pbm5lckhUTUwgPSAnJzsKICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3ZpZGVvJykgewogICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CiAgICAgICAgdmlkZW8uY29udHJvbHMgPSB0cnVlOwogICAgICAgIHZpZGVvLmF1dG9wbGF5ID0gdHJ1ZTsKICAgICAgICB2aWRlby5wbGF5c0lubGluZSA9IHRydWU7CiAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgaXRlbS5hbHQgfHwgJ1ByZXZpZXcgdmlkZW8nKTsKICAgICAgICB2YXIgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc291cmNlJyk7CiAgICAgICAgc291cmNlLnNyYyA9IGl0ZW0uc3JjOwogICAgICAgIHNvdXJjZS50eXBlID0gJ3ZpZGVvL21wNCc7CiAgICAgICAgdmlkZW8uYXBwZW5kQ2hpbGQoc291cmNlKTsKICAgICAgICBsaWdodGJveC5hcHBlbmRDaGlsZCh2aWRlbyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAgIGltZy5zcmMgPSBpdGVtLnNyYzsKICAgICAgICBpbWcuYWx0ID0gaXRlbS5hbHQgfHwgJyc7CiAgICAgICAgbGlnaHRib3guYXBwZW5kQ2hpbGQoaW1nKTsKICAgICAgfQogICAgICBsaWdodGJveC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgbGlnaHRib3guc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsb3NlTGlnaHRib3goKSB7CiAgICAgIGlmICghbGlnaHRib3gpIHJldHVybjsKICAgICAgY2xlYXJWaWRlb3MobGlnaHRib3gpOwogICAgICBsaWdodGJveC5pbm5lckhUTUwgPSAnJzsKICAgICAgbGlnaHRib3guY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICAgIGxpZ2h0Ym94LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwogICAgfQoKICAgIG1vZGFsTWVkaWFTaGVsbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5scy1tb2RhbC1tZWRpYS1uYXYnKSkgcmV0dXJuOwogICAgICBvcGVuTGlnaHRib3goKTsKICAgIH0pOwoKICAgIG1vZGFsTWVkaWFTaGVsbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIG9wZW5MaWdodGJveCgpOwogICAgICB9CiAgICB9KTsKCiAgICBsaWdodGJveC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlTGlnaHRib3gpOwoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHsKICAgICAgICBpZiAobGlnaHRib3ggJiYgbGlnaHRib3guY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSkgY2xvc2VMaWdodGJveCgpOwogICAgICAgIGVsc2UgaWYgKG1vZGFsICYmIG1vZGFsLmNsYXNzTGlzdC5jb250YWlucygnYWN0aXZlJykpIGNsb3NlR3VpZGVNb2RhbCgpOwogICAgICB9CiAgICB9KTsKCiAgICBzeW5jTW9iaWxlRmlsdGVycygpOwogICAgYXBwbHlGaWx0ZXJzKCk7CiAgfSkoKTsKPC9zY3JpcHQ+[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]