[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=”” spacing_medium=”” margin_top_medium=”” margin_bottom_medium=”” spacing_small=”” margin_top_small=”” margin_bottom_small=”” margin_top=”” margin_bottom=”” padding_dimensions_medium=”” padding_top_medium=”” padding_right_medium=”” padding_bottom_medium=”” padding_left_medium=”” padding_dimensions_small=”” padding_top_small=”” padding_right_small=”” padding_bottom_small=”” padding_left_small=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” link_hover_color=”” link_color=”” border_sizes=”” 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_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” 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” 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=”” type_medium=”” type_small=”” 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=”none” 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_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]PGRpdiBpZD0icGNsLWZvcm0td3JhcCI+CgogIDxkaXYgY2xhc3M9InBjbC1oZXJvIj4KICAgIDxoMj5IYXJkIE1vbmV5IExvYW4gRXN0aW1hdG9yICZhbXA7IFByZS1BcHByb3ZhbDwvaDI+CiAgICA8cD5Nb2RlbCB5b3VyIGRlYWwgaW5zdGFudGx5IOKAlCB0aGVuIGdldCBjb25kaXRpb25hbGx5IGFwcHJvdmVkIGluIHVuZGVyIDMgbWludXRlcy48L3A+CiAgPC9kaXY+CgogIDwhLS0g4pWQ4pWQIFNURVAgMDogREVBTCBDQUxDVUxBVE9SIOKVkOKVkCAtLT4KICA8ZGl2IGNsYXNzPSJwY2wtY2FsYy13cmFwIiBpZD0icGNsLWNhbGMtc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJwY2wtY2FsYy1oZWFkZXIiPgogICAgICA8ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLWJhZGdlIj5EZWFsIEVzdGltYXRvcjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLXRpdGxlIj5Nb2RlbCBZb3VyIENoaWNhZ28gRGVhbDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLXN1YiI+RW50ZXIgeW91ciBudW1iZXJzIGJlbG93IOKAlCBzZWUgeW91ciBlc3RpbWF0ZWQgbG9hbiwgbW9udGhseSBwYXltZW50ICZhbXA7IHByb2ZpdCBpbnN0YW50bHk8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9InBjbC1jYWxjLXNraXAiIG9uY2xpY2s9InBjbFNraXBDYWxjKCkiPlNraXAgdG8gcHJlLWFwcHJvdmFsIOKGkjwvYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0icGNsLWNhbGMtZ3JpZCI+CiAgICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLWZpZWxkIj4KICAgICAgICA8bGFiZWw+UHVyY2hhc2UgUHJpY2U8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9ImNpLXdyYXAiPjxzcGFuIGNsYXNzPSJjaS1wcmUiPiQ8L3NwYW4+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNjLXByaWNlIiBwbGFjZWhvbGRlcj0iMTg1LDAwMCIgb25pbnB1dD0icGNsQ2NGbXQodGhpcyk7cGNsQ2NDYWxjKCkiPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGNsLWNhbGMtZmllbGQiPgogICAgICAgIDxsYWJlbD5BZnRlci1SZXBhaXIgVmFsdWUgKEFSVik8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9ImNpLXdyYXAiPjxzcGFuIGNsYXNzPSJjaS1wcmUiPiQ8L3NwYW4+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNjLWFydiIgcGxhY2Vob2xkZXI9IjMyMCwwMDAiIG9uaW5wdXQ9InBjbENjRm10KHRoaXMpO3BjbENjQ2FsYygpIj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLWZpZWxkIj4KICAgICAgICA8bGFiZWw+UmVwYWlyIEJ1ZGdldDwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iY2ktd3JhcCI+PHNwYW4gY2xhc3M9ImNpLXByZSI+JDwvc3Bhbj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY2MtcmVwYWlycyIgcGxhY2Vob2xkZXI9IjcyLDAwMCIgb25pbnB1dD0icGNsQ2NGbXQodGhpcyk7cGNsQ2NDYWxjKCkiPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLXJvdzIiPgogICAgICA8ZGl2IGNsYXNzPSJwY2wtY2FsYy1maWVsZCI+CiAgICAgICAgPGxhYmVsPkNyZWRpdCBTY29yZTwvbGFiZWw+CiAgICAgICAgPHNlbGVjdCBpZD0iY2MtZmljbyIgb25jaGFuZ2U9InBjbENjQ2FsYygpIj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImdvbGQiPjY4MCsgKEludmVzdG9yIEdvbGQg4oCUIDfigJM4JSk8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNpbHZlciIgc2VsZWN0ZWQ+NjQw4oCTNjc5IChJbnZlc3RvciBTaWx2ZXIg4oCUIDEw4oCTMTIlKTwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYnJvbnplIj41ODDigJM2MzkgKEludmVzdG9yIEJyb256ZSDigJQgMTPigJMxNiUpPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjYXNlIj5CZWxvdyA1ODAgKENhc2UgYnkgY2FzZSk8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBjbC1jYWxjLWZpZWxkIj4KICAgICAgICA8bGFiZWw+TG9hbiBUZXJtPC9sYWJlbD4KICAgICAgICA8c2VsZWN0IGlkPSJjYy10ZXJtIiBvbmNoYW5nZT0icGNsQ2NDYWxjKCkiPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNiI+NiBtb250aHM8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjkiPjkgbW9udGhzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMiIgc2VsZWN0ZWQ+MTIgbW9udGhzPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxOCI+MTggbW9udGhzPC9vcHRpb24+CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBSZXN1bHRzIC0tPgogICAgPGRpdiBjbGFzcz0icGNsLWNhbGMtcmVzdWx0cyIgaWQ9InBjbC1jYWxjLXJlc3VsdHMiPgogICAgICA8ZGl2IGNsYXNzPSJwY2wtcmVzLWdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1ybWV0IGFjY2VudCI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0icGNsLXJtZXQtdmFsIiBpZD0iY2Mtci1sb2FuIj7igJQ8L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0icGNsLXJtZXQtbGJsIj5Fc3QuIExvYW4gQW1vdW50PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1ybWV0Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwY2wtcm1ldC12YWwiIGlkPSJjYy1yLXJhdGUiPuKAlDwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwY2wtcm1ldC1sYmwiPkludGVyZXN0IFJhdGU8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXJtZXQiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBjbC1ybWV0LXZhbCIgaWQ9ImNjLXItbW9udGhseSI+4oCUPC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBjbC1ybWV0LWxibCI+TW9udGhseSBQYXltZW50PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1ybWV0Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJwY2wtcm1ldC12YWwiIGlkPSJjYy1yLXByb2ZpdCI+4oCUPC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InBjbC1ybWV0LWxibCI+RXN0LiBOZXQgUHJvZml0PC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGNsLXNjb3JlLXJvdyI+CiAgICAgICAgPHNwYW4gY2xhc3M9InBjbC1zY29yZS1sYWJlbCI+RGVhbCBzY29yZTwvc3Bhbj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtc2NvcmUtYmFyIj48ZGl2IGNsYXNzPSJwY2wtc2NvcmUtZmlsbCIgaWQ9ImNjLXNjb3JlLWZpbGwiIHN0eWxlPSJ3aWR0aDowJSI+PC9kaXY+PC9kaXY+CiAgICAgICAgPHNwYW4gY2xhc3M9InBjbC1zY29yZS12YWwiIGlkPSJjYy1zY29yZS12YWwiPuKAlDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImNjLWRlYWwtdGFnIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGNsLWNhbGMtYnJlYWtkb3duIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtYmstcm93Ij48c3BhbiBjbGFzcz0icGNsLWJrLWxibCI+QVJWIChzYWxlIHByaWNlKTwvc3Bhbj48c3BhbiBjbGFzcz0icGNsLWJrLXZhbCIgaWQ9ImNjLWItYXJ2Ij7igJQ8L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLWJrLXJvdyI+PHNwYW4gY2xhc3M9InBjbC1iay1sYmwiPkxUViBvbiBwdXJjaGFzZTwvc3Bhbj48c3BhbiBjbGFzcz0icGNsLWJrLXZhbCIgaWQ9ImNjLWItbHR2Ij7igJQ8L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLWJrLXJvdyI+PHNwYW4gY2xhc3M9InBjbC1iay1sYmwiPlB1cmNoYXNlIHByaWNlPC9zcGFuPjxzcGFuIGNsYXNzPSJwY2wtYmstdmFsIiBpZD0iY2MtYi1wcmljZSI+4oCUPC9zcGFuPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1iay1yb3ciPjxzcGFuIGNsYXNzPSJwY2wtYmstbGJsIj5SZXBhaXIgYnVkZ2V0PC9zcGFuPjxzcGFuIGNsYXNzPSJwY2wtYmstdmFsIiBpZD0iY2MtYi1yZXBhaXJzIj7igJQ8L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLWJrLXJvdyI+PHNwYW4gY2xhc3M9InBjbC1iay1sYmwiPlRvdGFsIGludGVyZXN0IChlc3QuKTwvc3Bhbj48c3BhbiBjbGFzcz0icGNsLWJrLXZhbCIgaWQ9ImNjLWItaW50ZXJlc3QiPuKAlDwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtYmstcm93Ij48c3BhbiBjbGFzcz0icGNsLWJrLWxibCI+UHJvZ3JhbTwvc3Bhbj48c3BhbiBjbGFzcz0icGNsLWJrLXZhbCIgaWQ9ImNjLWItcHJvZyI+4oCUPC9zcGFuPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1iay1yb3ciIHN0eWxlPSJncmlkLWNvbHVtbjoxLy0xIj48c3BhbiBjbGFzcz0icGNsLWJrLWxibCIgc3R5bGU9ImZvbnQtd2VpZ2h0OjYwMDtjb2xvcjpyZ2JhKDIzMiwyMjgsMjIwLC44NSkiPkVzdC4gbmV0IHByb2ZpdDwvc3Bhbj48c3BhbiBjbGFzcz0icGNsLWJrLXZhbCIgaWQ9ImNjLWItcHJvZml0IiBzdHlsZT0iZm9udC1zaXplOjE1cHgiPuKAlDwvc3Bhbj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJwY2wtY2FsYy1jdGEiPgogICAgICA8ZGl2PgogICAgICAgIDxidXR0b24gY2xhc3M9InBjbC1idG4tY2FsYyIgb25jbGljaz0icGNsQ2NDYWxjKCkiPkNhbGN1bGF0ZSBNeSBEZWFsPC9idXR0b24+CiAgICAgICAgPHNwYW4gY2xhc3M9InBjbC1jYWxjLW5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij5ObyBjcmVkaXQgcHVsbCDCtyBFc3RpbWF0ZXMgb25seTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9InBjbC1idG4tcHJlZmlsbCIgaWQ9InBjbC1idG4tcHJlZmlsbCIgb25jbGljaz0icGNsUHJlZmlsbEFuZEdvKCkiPgogICAgICAgIOKckyBVc2UgdGhlc2UgbnVtYmVycyDigJQgU3RhcnQgUHJlLUFwcHJvdmFsIOKGkgogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogIDwvZGl2PgogIDwhLS0g4pWQ4pWQIEVORCBDQUxDVUxBVE9SIOKVkOKVkCAtLT4KCiAgPGRpdiBjbGFzcz0icGNsLXN0ZXBwZXIiPgogICAgPGRpdiBjbGFzcz0icGNsLXN0ZXAgYWN0aXZlIiBpZD0icGNsLXMxIj48ZGl2IGNsYXNzPSJwY2wtc2MiIGlkPSJwY2wtc2MxIj4xPC9kaXY+UHJvcGVydHk8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBjbC1zbCIgaWQ9InBjbC1zbDEiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icGNsLXN0ZXAiIGlkPSJwY2wtczIiPjxkaXYgY2xhc3M9InBjbC1zYyIgaWQ9InBjbC1zYzIiPjI8L2Rpdj5Mb2FuIERldGFpbHM8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBjbC1zbCIgaWQ9InBjbC1zbDIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icGNsLXN0ZXAiIGlkPSJwY2wtczMiPjxkaXYgY2xhc3M9InBjbC1zYyIgaWQ9InBjbC1zYzMiPjM8L2Rpdj5Db250YWN0PC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBjbC1sYXlvdXQiPgogICAgPGRpdj4KICAgICAgPGRpdiBjbGFzcz0icGNsLWNhcmQiPgoKICAgICAgICA8IS0tIFNURVAgMSAtLT4KICAgICAgICA8ZGl2IGlkPSJwY2wtc3RlcDEiPgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWNhcmQtdGl0bGUiPiYjMTI3OTY4OyBQcm9wZXJ0eSBJbmZvcm1hdGlvbjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWZpZWxkIiBpZD0icGNsLWYtbHQiPgogICAgICAgICAgICA8bGFiZWw+TG9hbiBUeXBlIDxzcGFuIGNsYXNzPSJwY2wtcmVxIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgIDxzZWxlY3QgaWQ9InBjbC1sb2FuLXR5cGUiIG9uY2hhbmdlPSJwY2xDYWxjKCkiPgogICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IGxvYW4gdHlwZTwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+UHVyY2hhc2UgLyBGaXggJmFtcDsgRmxpcDwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+Q2FzaC1PdXQgUmVmaTwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+RFNDUiBSZW50YWw8L29wdGlvbj4KICAgICAgICAgICAgICA8b3B0aW9uPkNvbnN0cnVjdGlvbjwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+Q29tbWVyY2lhbDwvb3B0aW9uPgogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWVycm1zZyI+UGxlYXNlIHNlbGVjdCBhIGxvYW4gdHlwZTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZmllbGQiIGlkPSJwY2wtZi1wdCI+CiAgICAgICAgICAgIDxsYWJlbD5Qcm9wZXJ0eSBUeXBlIDxzcGFuIGNsYXNzPSJwY2wtcmVxIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgIDxzZWxlY3QgaWQ9InBjbC1wcm9wLXR5cGUiPgogICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IHByb3BlcnR5IHR5cGU8L29wdGlvbj4KICAgICAgICAgICAgICA8b3B0aW9uPlNpbmdsZSBmYW1pbHk8L29wdGlvbj4KICAgICAgICAgICAgICA8b3B0aW9uPjImIzgyMTE7NCB1bml0PC9vcHRpb24+CiAgICAgICAgICAgICAgPG9wdGlvbj5NdWx0aS1mYW1pbHkgKDUrIHVuaXRzKTwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+Q29tbWVyY2lhbDwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+TWl4ZWQgdXNlPC9vcHRpb24+CiAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZXJybXNnIj5SZXF1aXJlZDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtc2VjbGFiZWwiPlByb3BlcnR5IEFkZHJlc3MgPHNwYW4gY2xhc3M9InBjbC1vcHQiPihvcHRpb25hbCAmIzgyMTI7IGhlbHBzIHVzIG1vdmUgZmFzdGVyKTwvc3Bhbj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCI+CiAgICAgICAgICAgIDxsYWJlbD5TdHJlZXQgQWRkcmVzcyA8c3BhbiBjbGFzcz0icGNsLW9wdCI+b3B0aW9uYWw8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGlkPSJwY2wtc3RyZWV0IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iZS5nLiAxMjMgVyBNYWRpc29uIFN0IiAvPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcm93MyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCIgaWQ9InBjbC1mLWNpdHkiPgogICAgICAgICAgICAgIDxsYWJlbD5DaXR5IDxzcGFuIGNsYXNzPSJwY2wtcmVxIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgPGlucHV0IGlkPSJwY2wtY2l0eSIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkNoaWNhZ28iIC8+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWVycm1zZyI+UmVxdWlyZWQ8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCI+CiAgICAgICAgICAgICAgPGxhYmVsPlN0YXRlPC9sYWJlbD4KICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJwY2wtc3RhdGUiPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSUwiIHNlbGVjdGVkPklMPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uPklOPC9vcHRpb24+PG9wdGlvbj5XSTwvb3B0aW9uPjxvcHRpb24+VFg8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24+Rkw8L29wdGlvbj48b3B0aW9uPkdBPC9vcHRpb24+PG9wdGlvbj5UTjwvb3B0aW9uPjxvcHRpb24+T3RoZXI8L29wdGlvbj4KICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCIgaWQ9InBjbC1mLXppcCI+CiAgICAgICAgICAgICAgPGxhYmVsPlpJUCA8c3BhbiBjbGFzcz0icGNsLXJlcSI+Kjwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0icGNsLXppcCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IjYwNjAxIiBtYXhsZW5ndGg9IjUiIC8+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWVycm1zZyI+UmVxdWlyZWQ8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCIgaWQ9InBjbC1mLWV4cCI+CiAgICAgICAgICAgIDxsYWJlbD5JbnZlc3RpbmcgRXhwZXJpZW5jZSA8c3BhbiBjbGFzcz0icGNsLXJlcSI+Kjwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0IGlkPSJwY2wtZXhwZXJpZW5jZSIgb25jaGFuZ2U9InBjbENhbGMoKSI+CiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgZXhwZXJpZW5jZSBsZXZlbDwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiPkZpcnN0LXRpbWUgaW52ZXN0b3IgKDAgZGVhbHMpPC9vcHRpb24+CiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+MSYjODIxMTsyIGRlYWxzIGNvbXBsZXRlZDwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjMiPjMmIzgyMTE7OSBkZWFscyBjb21wbGV0ZWQ8L29wdGlvbj4KICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMCI+MTArIGRlYWxzIGNvbXBsZXRlZDwvb3B0aW9uPgogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWVycm1zZyI+UmVxdWlyZWQ8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWJ0bi1yb3ciPgogICAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InBjbC1idG4tbmV4dCIgb25jbGljaz0icGNsR28oMSkiPk5leHQgJiM4NTk0OzwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gU1RFUCAyIC0tPgogICAgICAgIDxkaXYgaWQ9InBjbC1zdGVwMiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtY2FyZC10aXRsZSI+JiMxMjk1MTg7IExvYW4gRGV0YWlsczwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLXNlY2xhYmVsIj5Qcm9wZXJ0eSBWYWx1ZXM8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1yb3cyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWZpZWxkIiBpZD0icGNsLWYtcHAiPgogICAgICAgICAgICAgIDxsYWJlbD5QdXJjaGFzZSBQcmljZSAvIEFzLUlzIFZhbHVlIDxzcGFuIGNsYXNzPSJwY2wtcmVxIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgPGlucHV0IGlkPSJwY2wtcHJpY2UiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSIkMTAwLDAwMCIgb25pbnB1dD0icGNsRmModGhpcyk7cGNsQ2FsYygpIiAvPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1lcnJtc2ciPlJlcXVpcmVkPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZmllbGQiIGlkPSJwY2wtZi1hcnYiPgogICAgICAgICAgICAgIDxsYWJlbD5BZnRlciBSZXBhaXIgVmFsdWUgKEFSVikgPHNwYW4gY2xhc3M9InBjbC1yZXEiPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9InBjbC1hcnYiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSIkMjMwLDAwMCIgb25pbnB1dD0icGNsRmModGhpcyk7cGNsQ2FsYygpIiAvPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1lcnJtc2ciPlJlcXVpcmVkPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcm93MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCI+CiAgICAgICAgICAgICAgPGxhYmVsPlJlaGFiIEJ1ZGdldCA8c3BhbiBjbGFzcz0icGNsLW9wdCI+b3B0aW9uYWw8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9InBjbC1yZWhhYiIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IiQ1MCwwMDAiIG9uaW5wdXQ9InBjbEZjKHRoaXMpO3BjbENhbGMoKSIgLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCI+CiAgICAgICAgICAgICAgPGxhYmVsPkRvd24gUGF5bWVudCBBdmFpbGFibGUgPHNwYW4gY2xhc3M9InBjbC1vcHQiPm9wdGlvbmFsPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgPGlucHV0IGlkPSJwY2wtZG93biIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IiQyMCwwMDAiIG9uaW5wdXQ9InBjbEZjKHRoaXMpIiAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLXNlY2xhYmVsIj5Cb3Jyb3dlciBQcm9maWxlPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcm93MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCIgaWQ9InBjbC1mLWNyIj4KICAgICAgICAgICAgICA8bGFiZWw+Q3JlZGl0IFNjb3JlIFJhbmdlIDxzcGFuIGNsYXNzPSJwY2wtcmVxIj4qPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgPHNlbGVjdCBpZD0icGNsLWNyZWRpdCIgb25jaGFuZ2U9InBjbENhbGMoKSI+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCByYW5nZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNzIwIj43MjArIChFeGNlbGxlbnQpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2ODAiPjY4MCYjODIxMTs3MTkgKEdvb2QpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2NDAiPjY0MCYjODIxMTs2NzkgKEZhaXIpPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI2MDAiPjYwMCYjODIxMTs2MzkgKEJlbG93IGF2Zyk8L29wdGlvbj4KICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjU2MCI+QmVsb3cgNjAwPC9vcHRpb24+CiAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWVycm1zZyI+UmVxdWlyZWQ8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCI+CiAgICAgICAgICAgICAgPGxhYmVsPkxvYW4gQW1vdW50IFJlcXVlc3RlZCA8c3BhbiBjbGFzcz0icGNsLW9wdCI+b3B0aW9uYWw8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9InBjbC1sb2FucmVxIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iJDEzMCwwMDAiIG9uaW5wdXQ9InBjbEZjKHRoaXMpIiAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWJ0bi1yb3ciPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwY2wtYnRuLWJhY2siIG9uY2xpY2s9InBjbFNldFN0ZXAoMSkiPiYjODU5MjsgQmFjazwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwY2wtYnRuLW5leHQiIG9uY2xpY2s9InBjbEdvKDIpIj5OZXh0ICYjODU5NDs8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFNURVAgMyAtLT4KICAgICAgICA8ZGl2IGlkPSJwY2wtc3RlcDMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWNhcmQtdGl0bGUiPiYjMTI4MTAwOyBDb250YWN0IEluZm9ybWF0aW9uPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcm93MiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1maWVsZCIgaWQ9InBjbC1mLWZuIj4KICAgICAgICAgICAgICA8bGFiZWw+Rmlyc3QgTmFtZSA8c3BhbiBjbGFzcz0icGNsLXJlcSI+Kjwvc3Bhbj48L2xhYmVsPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0icGNsLWZuYW1lIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRmlyc3QgbmFtZSIgLz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZXJybXNnIj5SZXF1aXJlZDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWZpZWxkIiBpZD0icGNsLWYtbG4iPgogICAgICAgICAgICAgIDxsYWJlbD5MYXN0IE5hbWUgPHNwYW4gY2xhc3M9InBjbC1yZXEiPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9InBjbC1sbmFtZSIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ikxhc3QgbmFtZSIgLz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZXJybXNnIj5SZXF1aXJlZDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWZpZWxkIiBpZD0icGNsLWYtZW0iPgogICAgICAgICAgICA8bGFiZWw+RW1haWwgPHNwYW4gY2xhc3M9InBjbC1yZXEiPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGlkPSJwY2wtZW1haWwiIHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0ieW91QGVtYWlsLmNvbSIgLz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWVycm1zZyI+VmFsaWQgZW1haWwgcmVxdWlyZWQ8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWZpZWxkIiBpZD0icGNsLWYtcGgiPgogICAgICAgICAgICA8bGFiZWw+UGhvbmUgPHNwYW4gY2xhc3M9InBjbC1yZXEiPio8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IGlkPSJwY2wtcGhvbmUiIHR5cGU9InRlbCIgcGxhY2Vob2xkZXI9IjMxMi0wMDAtMDAwMCIgb25pbnB1dD0icGNsRnBoKHRoaXMpIiAvPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZXJybXNnIj5SZXF1aXJlZDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtZmllbGQiPgogICAgICAgICAgICA8bGFiZWw+SG93IGRpZCB5b3UgaGVhciBhYm91dCB1cz88L2xhYmVsPgogICAgICAgICAgICA8c2VsZWN0IGlkPSJwY2wtc291cmNlIj4KICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdDwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+R29vZ2xlIHNlYXJjaDwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+UmVmZXJyYWw8L29wdGlvbj4KICAgICAgICAgICAgICA8b3B0aW9uPlNvY2lhbCBtZWRpYTwvb3B0aW9uPgogICAgICAgICAgICAgIDxvcHRpb24+WW91VHViZSAvIEBCZXR0ZXJXYXlOZXR3b3JrPC9vcHRpb24+CiAgICAgICAgICAgICAgPG9wdGlvbj5SZXR1cm5pbmcgY2xpZW50PC9vcHRpb24+CiAgICAgICAgICAgICAgPG9wdGlvbj5PdGhlcjwvb3B0aW9uPgogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWRpc2MiPgogICAgICAgICAgICA8cD48c3Ryb25nPiYjMTI4Mjc0OyBQcmUtQXBwcm92YWwgRGlzY2xvc3VyZTwvc3Ryb25nPjwvcD4KICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6NnB4Ij5UaGlzIHByZS1hcHByb3ZhbCBpcyA8c3Ryb25nPmNvbmRpdGlvbmFsIGFuZCBzdWJqZWN0IHRvIHZlcmlmaWNhdGlvbjwvc3Ryb25nPi4gQWxsIGluZm9ybWF0aW9uIHN1Ym1pdHRlZCAmIzgyMTI7IGluY2x1ZGluZyBwcm9wZXJ0eSBkZXRhaWxzLCBsb2FuIGFtb3VudHMsIGNyZWRpdCBzY29yZSwgYW5kIGJvcnJvd2VyIGlkZW50aXR5ICYjODIxMjsgd2lsbCBiZSBpbmRlcGVuZGVudGx5IHZlcmlmaWVkIGJ5IFByaXZhdGUgQ2FwaXRhbCwgTExDIHByaW9yIHRvIGlzc3VpbmcgYSBmb3JtYWwgbG9hbiBjb21taXRtZW50LiBTdWJtaXNzaW9uIGRvZXMgbm90IGNvbnN0aXR1dGUgYSBiaW5kaW5nIGxvYW4gb2ZmZXIgb3IgZ3VhcmFudGVlIG9mIGZpbmFuY2luZy4gRmluYWwgYXBwcm92YWwgaXMgY29udGluZ2VudCB1cG9uIHNhdGlzZmFjdG9yeSBkb2N1bWVudGF0aW9uLCB0aXRsZSwgYXBwcmFpc2FsIG9yIENNQSwgYW5kIHVuZGVyd3JpdGluZyBndWlkZWxpbmVzIGF0IHRpbWUgb2YgY2xvc2luZy48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1jaGstcm93Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icGNsLWFncmVlIiAvPgogICAgICAgICAgICA8bGFiZWwgZm9yPSJwY2wtYWdyZWUiPkkgdW5kZXJzdGFuZCB0aGlzIHByZS1hcHByb3ZhbCBpcyBjb25kaXRpb25hbCBhbmQgdGhhdCBhbGwgaW5mb3JtYXRpb24gSSBoYXZlIHByb3ZpZGVkIHdpbGwgYmUgdmVyaWZpZWQgYmVmb3JlIGEgZm9ybWFsIGxvYW4gY29tbWl0bWVudCBpcyBpc3N1ZWQgYnkgUHJpdmF0ZSBDYXBpdGFsLCBMTEMuPC9sYWJlbD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWNoa2VyciIgaWQ9InBjbC1jaGtlcnIiPiYjOTg4ODsgWW91IG11c3QgYWNrbm93bGVkZ2UgdGhlIGRpc2Nsb3N1cmUgdG8gY29udGludWU8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1idG4tcm93Ij4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icGNsLWJ0bi1iYWNrIiBvbmNsaWNrPSJwY2xTZXRTdGVwKDIpIj4mIzg1OTI7IEJhY2s8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icGNsLWJ0bi1uZXh0IiBvbmNsaWNrPSJwY2xTdWJtaXQoKSI+JiMxMDAwMzsgR2V0IEluc3RhbnQgRGVjaXNpb248L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFNURVAgNCDigJQgUkVTVUxUIC0tPgogICAgICAgIDxkaXYgaWQ9InBjbC1zdGVwNCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcmVzLXdyYXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcmVzLWljb24iIGlkPSJwY2wtcmVzLWljb24iPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcmVzLXRpdGxlIiBpZD0icGNsLXJlcy10aXRsZSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1yZXMtc3ViIiBpZD0icGNsLXJlcy1zdWIiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcmVzLXByb2ciIGlkPSJwY2wtcmVzLXByb2ciPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBjbC1ycC1sYmwiIGlkPSJwY2wtcnAtbGJsIj48L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcnAtbmFtZSIgaWQ9InBjbC1ycC1ubSI+PC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBpZD0icGNsLXJwLXJvd3MiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGNsLWFwcHItbm90ZSI+CiAgICAgICAgICAgICAgPHA+PHN0cm9uZz4mIzg1MDU7IEltcG9ydGFudDwvc3Ryb25nPiAmIzgyMTI7IFRoaXMgaXMgYSA8c3Ryb25nPmNvbmRpdGlvbmFsIHByZS1hcHByb3ZhbCBvbmx5PC9zdHJvbmc+LiBBbGwgc3VibWl0dGVkIGluZm9ybWF0aW9uIG11c3QgYmUgdmVyaWZpZWQgYnkgUHJpdmF0ZSBDYXBpdGFsLCBMTEMgYmVmb3JlIGEgZm9ybWFsIGxvYW4gY29tbWl0bWVudCBpcyBpc3N1ZWQuIFRoaXMgZG9lcyBub3QgY29uc3RpdHV0ZSBhIGJpbmRpbmcgb2ZmZXIgb3IgZ3VhcmFudGVlIG9mIGZpbmFuY2luZy4gRmluYWwgYXBwcm92YWwgZGVwZW5kcyBvbiBkb2N1bWVudGF0aW9uLCBhcHByYWlzYWwgb3IgQ01BLCB0aXRsZSByZXZpZXcsIGFuZCB1bmRlcndyaXRpbmcgZ3VpZGVsaW5lcyBhdCB0aW1lIG9mIGNsb3NpbmcuPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2NjY7bWFyZ2luLWJvdHRvbToxcmVtOyI+T3VyIHRlYW0gd2lsbCBjb250YWN0IHlvdSB3aXRoaW4gPHN0cm9uZyBzdHlsZT0iY29sb3I6IzExMSI+MSBidXNpbmVzcyBkYXk8L3N0cm9uZz4uPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtYnRuLWdyb3VwIj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJwY2wtYnRuLXBkZiIgb25jbGljaz0icGNsRG93bmxvYWRQREYoKSI+JiMxMTAxNTsgRG93bmxvYWQgUHJlLUFwcHJvdmFsIExldHRlciAoUERGKTwvYnV0dG9uPgogICAgICAgICAgICAgIDxhIGNsYXNzPSJwY2wtYnRuLWNhbGwiIGhyZWY9InRlbDorMzEyNTY0NTExMCI+JiMxMjgyMjI7IENhbGwgTm93OiAzMTItNTY0LTUxMTA8L2E+CiAgICAgICAgICAgICAgPGEgY2xhc3M9InBjbC1idG4td2ViIiBocmVmPSJodHRwczovL2NoaWNhZ29yZWhhYmxvYW5zLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPiYjMTI3NzYwOyBjaGljYWdvcmVoYWJsb2Fucy5jb208L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gU0lERUJBUiAtLT4KICAgIDxkaXYgY2xhc3M9InBjbC1zaWRlYmFyIj4KICAgICAgPGRpdiBjbGFzcz0icGNsLXByb2ciIGlkPSJwY2wtcGMxIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcGxibCBjMSI+UHJvZ3JhbSAxICYjODIxMjsgQXNzZXQtQmFzZWQ8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcG5hbWUiPjU1JSBBcy1JcyBWYWx1ZSBMb2FuPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPk1heCBMVFY8L3NwYW4+PHN0cm9uZz41NSUgb2YgYXMtaXMgdmFsdWU8L3N0cm9uZz48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcHJvdyI+PHNwYW4+Q3JlZGl0IHNjb3JlPC9zcGFuPjxzdHJvbmc+QWxsIHNjb3JlcyBhY2NlcHRlZDwvc3Ryb25nPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1wcm93Ij48c3Bhbj5FeHBlcmllbmNlPC9zcGFuPjxzdHJvbmc+Tm9uZSByZXF1aXJlZDwvc3Ryb25nPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1wcm93Ij48c3Bhbj5SZWhhYiBmdW5kczwvc3Bhbj48c3Ryb25nPkNhc2UgYnkgY2FzZTwvc3Ryb25nPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1wcm93Ij48c3Bhbj5NYXggbG9hbjwvc3Bhbj48c3Ryb25nIGlkPSJwY2wtcDFtbCI+JiM4MjEyOzwvc3Ryb25nPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1wcm93Ij48c3Bhbj5SZXF1aXJlZCBkb3duPC9zcGFuPjxzdHJvbmcgaWQ9InBjbC1wMWR3Ij4mIzgyMTI7PC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXBiYWRnZSBicCIgaWQ9InBjbC1wMWIiPiYjODUwNTsgRW50ZXIgZGV0YWlscyB0byBjaGVjazwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGNsLXByb2ciIGlkPSJwY2wtcGMyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcGxibCBjMiI+UHJvZ3JhbSAyICYjODIxMjsgRXhwZXJpZW5jZWQgSW52ZXN0b3I8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcG5hbWUiPjgwJSBMVFYgKyAxMDAlIFJlaGFiIEVzY3JvdzwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InBjbC1wcm93Ij48c3Bhbj5NYXggTFRWPC9zcGFuPjxzdHJvbmc+ODAlIG9mIHB1cmNoYXNlIHByaWNlPC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPkNyZWRpdCBzY29yZTwvc3Bhbj48c3Ryb25nIGNsYXNzPSJnciI+NjgwKyBGSUNPIHJlcXVpcmVkPC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPkV4cGVyaWVuY2U8L3NwYW4+PHN0cm9uZyBjbGFzcz0iZ3IiPjMrIGRlYWxzIHJlcXVpcmVkPC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPlJlaGFiIGZ1bmRzPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImdyIj4xMDAlIGVzY3Jvd2VkPC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPkRvd24gcGF5bWVudDwvc3Bhbj48c3Ryb25nIGNsYXNzPSJyZCI+MjAlIHJlcXVpcmVkPC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPlB1cmNoYXNlIGxvYW48L3NwYW4+PHN0cm9uZyBpZD0icGNsLXAycGwiPiYjODIxMjs8L3N0cm9uZz48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcHJvdyI+PHNwYW4+UmVoYWIgZXNjcm93ZWQ8L3NwYW4+PHN0cm9uZyBpZD0icGNsLXAycmgiPiYjODIxMjs8L3N0cm9uZz48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcHJvdyI+PHNwYW4+VG90YWwgbG9hbjwvc3Bhbj48c3Ryb25nIGlkPSJwY2wtcDJ0dCIgY2xhc3M9ImJsIj4mIzgyMTI7PC9zdHJvbmc+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGNsLXByb3ciPjxzcGFuPllvdXIgZG93biBwYXltZW50PC9zcGFuPjxzdHJvbmcgaWQ9InBjbC1wMmR3IiBjbGFzcz0icmQiPiYjODIxMjs8L3N0cm9uZz48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwY2wtcGJhZGdlIGJwIiBpZD0icGNsLXAyYiI+JiM4NTA1OyBFbnRlciBkZXRhaWxzIHRvIGNoZWNrPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwY2wtaGludCIgaWQ9InBjbC1oaW50Ij5GaWxsIGluIHlvdXIgcHJvcGVydHkgYW5kIGxvYW4gZGV0YWlscyB0byBzZWUgd2hpY2ggcHJvZ3JhbSB5b3UgcXVhbGlmeSBmb3IgYW5kIGdldCB5b3VyIGV4YWN0IG51bWJlcnMuPC9kaXY+CiAgICA8L2Rpdj4KCiAgPC9kaXY+CjwvZGl2PgoKPHNjcmlwdD4KLyog4pWQ4pWQIERFQUwgQ0FMQ1VMQVRPUiDilZDilZAgKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIENDX1JBVEVTID0gewogICAgZ29sZDogICB7IG1pZDogMC4wNzUsIGxhYmVsOiAnN+KAkzglJywgICAgICAgbmFtZTogJ0ludmVzdG9yIEdvbGQnLCAgIGx0djogMC43NSB9LAogICAgc2lsdmVyOiB7IG1pZDogMC4xMSwgIGxhYmVsOiAnMTDigJMxMiUnLCAgICAgbmFtZTogJ0ludmVzdG9yIFNpbHZlcicsIGx0djogMC43MCB9LAogICAgYnJvbnplOiB7IG1pZDogMC4xNDUsIGxhYmVsOiAnMTPigJMxNiUnLCAgICAgbmFtZTogJ0ludmVzdG9yIEJyb256ZScsIGx0djogMC42NSB9LAogICAgY2FzZTogICB7IG1pZDogMC4xNiwgIGxhYmVsOiAnQ2FzZSBieSBjYXNlJywgbmFtZTogJ0JlbG93IDU4MCcsICAgICAgbHR2OiAwLjYwIH0KICB9OwoKICBmdW5jdGlvbiBjY1BhcnNlKHMpeyByZXR1cm4gcGFyc2VGbG9hdCgoc3x8JycpLnJlcGxhY2UoL1teMC05Ll0vZywnJykpfHwwOyB9CiAgZnVuY3Rpb24gY2NGbXQobil7IHJldHVybiBuPjA/JyQnK01hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoKTon4oCUJzsgfQoKICB3aW5kb3cucGNsQ2NGbXQgPSBmdW5jdGlvbihlbCl7CiAgICB2YXIgdiA9IGVsLnZhbHVlLnJlcGxhY2UoL1teMC05XS9nLCcnKTsKICAgIGVsLnZhbHVlID0gdiA/IHBhcnNlSW50KHYpLnRvTG9jYWxlU3RyaW5nKCkgOiAnJzsKICB9OwoKICB3aW5kb3cucGNsU2tpcENhbGMgPSBmdW5jdGlvbigpewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1jYWxjLXNlY3Rpb24nKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogIH07CgogIHdpbmRvdy5wY2xDY0NhbGMgPSBmdW5jdGlvbigpewogICAgdmFyIHByaWNlICAgPSBjY1BhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1wcmljZScpLnZhbHVlKTsKICAgIHZhciBhcnYgICAgID0gY2NQYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtYXJ2JykudmFsdWUpOwogICAgdmFyIHJlcGFpcnMgPSBjY1BhcnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1yZXBhaXJzJykudmFsdWUpOwogICAgdmFyIGZpY28gICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtZmljbycpLnZhbHVlOwogICAgdmFyIHRlcm1NbyAgPSBwYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtdGVybScpLnZhbHVlKXx8MTI7CiAgICB2YXIgcHJvZyAgICA9IENDX1JBVEVTW2ZpY29dOwoKICAgIGlmKCFwcmljZSB8fCAhYXJ2IHx8ICFyZXBhaXJzKSB7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtY2FsYy1yZXN1bHRzJykuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWJ0bi1wcmVmaWxsJykuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHB1cmNoYXNlTG9hbiAgPSBwcmljZSAqIHByb2cubHR2OwogICAgdmFyIHRvdGFsTG9hbiAgICAgPSBwdXJjaGFzZUxvYW4gKyByZXBhaXJzOwogICAgdmFyIG1vbnRobHlJbnQgICAgPSAodG90YWxMb2FuICogcHJvZy5taWQpIC8gMTI7CiAgICB2YXIgdG90YWxJbnRlcmVzdCA9IG1vbnRobHlJbnQgKiB0ZXJtTW87CiAgICB2YXIgbmV0UHJvZml0ICAgICA9IGFydiAtIHByaWNlIC0gcmVwYWlycyAtIHRvdGFsSW50ZXJlc3Q7CiAgICB2YXIgbHR2UGN0ICAgICAgICA9IE1hdGgucm91bmQoKHB1cmNoYXNlTG9hbiAvIHByaWNlKSAqIDEwMCk7CgogICAgLyogU2NvcmUgKi8KICAgIHZhciBzcHJlYWRQY3QgPSAoKGFydiAtIHByaWNlIC0gcmVwYWlycykgLyBhcnYpICogMTAwOwogICAgdmFyIHNjb3JlID0gMDsKICAgIGlmKG5ldFByb2ZpdCA+IDQwMDAwKSBzY29yZSArPSAzMDsgZWxzZSBpZihuZXRQcm9maXQgPiAyMDAwMCkgc2NvcmUgKz0gMTg7IGVsc2UgaWYobmV0UHJvZml0ID4gMCkgc2NvcmUgKz0gODsKICAgIGlmKHNwcmVhZFBjdCA+IDMwKSBzY29yZSArPSAyNTsgZWxzZSBpZihzcHJlYWRQY3QgPiAyMCkgc2NvcmUgKz0gMTU7IGVsc2UgaWYoc3ByZWFkUGN0ID4gMTApIHNjb3JlICs9IDY7CiAgICBpZihsdHZQY3QgPD0gcHJvZy5sdHYgKiAxMDApIHNjb3JlICs9IDI1OyBlbHNlIHNjb3JlIC09IDEwOwogICAgaWYocmVwYWlycyA8IGFydiAqIDAuMzUpIHNjb3JlICs9IDEyOwogICAgaWYocHJpY2UgPiAwKSBzY29yZSArPSA4OwogICAgc2NvcmUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHNjb3JlKSk7CgogICAgdmFyIHNjb3JlQ29sb3IsIHRhZ0NscywgdGFnVHh0OwogICAgaWYoc2NvcmUgPj0gNzUpeyBzY29yZUNvbG9yPScjMUQ5RTc1JzsgdGFnQ2xzPSdwY2wtZGVhbC10YWcgcGNsLWRlYWwtc3Ryb25nJzsgdGFnVHh0PSfinJMgU3Ryb25nIGRlYWwg4oCUIGdvb2QgbWFyZ2lucyc7IH0KICAgIGVsc2UgaWYoc2NvcmUgPj0gNTUpeyBzY29yZUNvbG9yPScjQjg4NjBCJzsgdGFnQ2xzPSdwY2wtZGVhbC10YWcgcGNsLWRlYWwtb2snOyB0YWdUeHQ9J+KXkSBEZWNlbnQgZGVhbCDigJQgZnVuZGFibGUnOyB9CiAgICBlbHNlIGlmKHNjb3JlID49IDM1KXsgc2NvcmVDb2xvcj0nI0VGOUYyNyc7IHRhZ0Nscz0ncGNsLWRlYWwtdGFnIHBjbC1kZWFsLXRoaW4nOyB0YWdUeHQ9J+KaoCBUaGluIG1hcmdpbnMg4oCUIHJldmlldyBudW1iZXJzJzsgfQogICAgZWxzZXsgc2NvcmVDb2xvcj0nI0UyNEI0QSc7IHRhZ0Nscz0ncGNsLWRlYWwtdGFnIHBjbC1kZWFsLXdlYWsnOyB0YWdUeHQ9J+KclyBXZWFrIGRlYWwg4oCUIHJlbmVnb3RpYXRlIHByaWNlJzsgfQoKICAgIC8qIFVwZGF0ZSBET00gKi8KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1yLWxvYW4nKS50ZXh0Q29udGVudCAgICA9IGNjRm10KE1hdGgucm91bmQodG90YWxMb2FuKSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Mtci1yYXRlJykudGV4dENvbnRlbnQgICAgPSBwcm9nLmxhYmVsOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLXItbW9udGhseScpLnRleHRDb250ZW50ID0gY2NGbXQoTWF0aC5yb3VuZChtb250aGx5SW50KSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Mtci1wcm9maXQnKS50ZXh0Q29udGVudCAgPSBuZXRQcm9maXQgPiAwID8gY2NGbXQoTWF0aC5yb3VuZChuZXRQcm9maXQpKSA6ICcoJyArIGNjRm10KE1hdGgucm91bmQoTWF0aC5hYnMobmV0UHJvZml0KSkpICsgJyknOwoKICAgIHZhciBmaWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLXNjb3JlLWZpbGwnKTsKICAgIGZpbGwuc3R5bGUud2lkdGggPSBzY29yZSArICclJzsKICAgIGZpbGwuc3R5bGUuYmFja2dyb3VuZCA9IHNjb3JlQ29sb3I7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2Mtc2NvcmUtdmFsJykudGV4dENvbnRlbnQgPSBzY29yZSArICcvMTAwJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1zY29yZS12YWwnKS5zdHlsZS5jb2xvciA9IHNjb3JlQ29sb3I7CgogICAgdmFyIHRhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1kZWFsLXRhZycpOwogICAgdGFnLmlubmVySFRNTCA9ICc8c3BhbiBjbGFzcz0iJyArIHRhZ0NscyArICciPicgKyB0YWdUeHQgKyAnPC9zcGFuPic7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLWItYXJ2JykudGV4dENvbnRlbnQgICAgICA9IGNjRm10KGFydik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtYi1sdHYnKS50ZXh0Q29udGVudCAgICAgID0gbHR2UGN0ICsgJyUgb2YgcHVyY2hhc2UnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLWItcHJpY2UnKS50ZXh0Q29udGVudCAgICA9ICcoJyArIGNjRm10KHByaWNlKSArICcpJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1iLXJlcGFpcnMnKS50ZXh0Q29udGVudCAgPSAnKCcgKyBjY0ZtdChyZXBhaXJzKSArICcpJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1iLWludGVyZXN0JykudGV4dENvbnRlbnQgPSAnKCcgKyBjY0ZtdChNYXRoLnJvdW5kKHRvdGFsSW50ZXJlc3QpKSArICcpJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1iLXByb2cnKS50ZXh0Q29udGVudCAgICAgPSBwcm9nLm5hbWU7CgogICAgdmFyIHByb2ZFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1iLXByb2ZpdCcpOwogICAgaWYobmV0UHJvZml0ID49IDApewogICAgICBwcm9mRWwudGV4dENvbnRlbnQgPSBjY0ZtdChNYXRoLnJvdW5kKG5ldFByb2ZpdCkpOwogICAgICBwcm9mRWwuY2xhc3NOYW1lID0gJ3BjbC1iay12YWwgcGNsLWJrLXByb2ZpdCc7CiAgICB9IGVsc2UgewogICAgICBwcm9mRWwudGV4dENvbnRlbnQgPSAnKCcgKyBjY0ZtdChNYXRoLnJvdW5kKE1hdGguYWJzKG5ldFByb2ZpdCkpKSArICcpJzsKICAgICAgcHJvZkVsLmNsYXNzTmFtZSA9ICdwY2wtYmstdmFsIHBjbC1iay1sb3NzJzsKICAgIH0KCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNhbGMtcmVzdWx0cycpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtYnRuLXByZWZpbGwnKS5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgfTsKCiAgLyogUHJlLWZpbGwgdGhlIGZvcm0gZmllbGRzIGZyb20gY2FsY3VsYXRvciB2YWx1ZXMgdGhlbiBzY3JvbGwgdG8gZm9ybSAqLwogIHdpbmRvdy5wY2xQcmVmaWxsQW5kR28gPSBmdW5jdGlvbigpewogICAgdmFyIHByaWNlICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtcHJpY2UnKS52YWx1ZTsKICAgIHZhciBhcnYgICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLWFydicpLnZhbHVlOwogICAgdmFyIHJlcGFpcnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtcmVwYWlycycpLnZhbHVlOwogICAgdmFyIGZpY28gICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2MtZmljbycpLnZhbHVlOwoKICAgIC8qIE1hcCBmaWNvIHRvIGNyZWRpdCBzZWxlY3QgdmFsdWUgKi8KICAgIHZhciBjcmVkaXRNYXAgPSB7IGdvbGQ6ICc2ODAnLCBzaWx2ZXI6ICc2NDAnLCBicm9uemU6ICc2MDAnLCBjYXNlOiAnNTYwJyB9OwogICAgdmFyIGNyZWRpdFZhbCA9IGNyZWRpdE1hcFtmaWNvXSB8fCAnJzsKCiAgICAvKiBQcmUtZmlsbCBTdGVwIDIgZmllbGRzICovCiAgICB2YXIgcHJpY2VFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcHJpY2UnKTsKICAgIHZhciBhcnZFbCAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1hcnYnKTsKICAgIHZhciByZWhhYkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1yZWhhYicpOwogICAgdmFyIGNyZWRpdEVsPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNyZWRpdCcpOwoKICAgIGlmKHByaWNlRWwgJiYgcHJpY2UpeyBwcmljZUVsLnZhbHVlID0gJyQnICsgcHJpY2U7IHBjbENhbGMoKTsgfQogICAgaWYoYXJ2RWwgICAmJiBhcnYgICl7IGFydkVsLnZhbHVlICAgPSAnJCcgKyBhcnY7ICAgfQogICAgaWYocmVoYWJFbCAmJiByZXBhaXJzKXsgcmVoYWJFbC52YWx1ZSA9ICckJyArIHJlcGFpcnM7IHBjbENhbGMoKTsgfQogICAgaWYoY3JlZGl0RWwgJiYgY3JlZGl0VmFsKXsgY3JlZGl0RWwudmFsdWUgPSBjcmVkaXRWYWw7IHBjbENhbGMoKTsgfQoKICAgIC8qIFNldCBsb2FuIHR5cGUgdG8gZml4ICYgZmxpcCAqLwogICAgdmFyIGx0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWxvYW4tdHlwZScpOwogICAgaWYobHRFbCAmJiAhbHRFbC52YWx1ZSkgbHRFbC52YWx1ZSA9ICdQdXJjaGFzZSAvIEZpeCAmIEZsaXAnOwoKICAgIC8qIFNjcm9sbCBzbW9vdGhseSB0byB0aGUgZm9ybSBhbmQgaGlnaGxpZ2h0IGl0ICovCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNhbGMtc2VjdGlvbicpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJywgYmxvY2s6J2VuZCd9KTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1mb3JtLXdyYXAnKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsIGJsb2NrOidzdGFydCd9KTsKICAgIH0sIDMwMCk7CgogICAgLyogVmlzdWFsIGNvbmZpcm1hdGlvbiAqLwogICAgdmFyIGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtYnRuLXByZWZpbGwnKTsKICAgIGJ0bi50ZXh0Q29udGVudCA9ICfinJMgTnVtYmVycyBsb2FkZWQg4oCUIGZpbGwgaW4gcHJvcGVydHkgJiBjb250YWN0IGRldGFpbHMgYmVsb3cnOwogICAgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAnIzFEOUU3NSc7CiAgICBidG4uc3R5bGUuY29sb3IgPSAnI2ZmZic7CiAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogIH07Cn0pKCk7Cjwvc2NyaXB0PgoKPHNjcmlwdD4KKGZ1bmN0aW9uKCl7CiAgdmFyIEcgPSB7fTsKCiAgZnVuY3Rpb24gZmMoZWwpeyB2YXIgcj1lbC52YWx1ZS5yZXBsYWNlKC9bXjAtOV0vZywnJyk7IGVsLnZhbHVlPXI/JyQnK3BhcnNlSW50KHIpLnRvTG9jYWxlU3RyaW5nKCk6Jyc7IH0KICBmdW5jdGlvbiBmcGgoZWwpeyB2YXIgcj1lbC52YWx1ZS5yZXBsYWNlKC9cRC9nLCcnKTsgaWYoci5sZW5ndGg+PTEwKSBlbC52YWx1ZT1yLnJlcGxhY2UoLyhcZHszfSkoXGR7M30pKFxkezR9KS8sJyQxLSQyLSQzJyk7IH0KICBmdW5jdGlvbiBwZChzKXsgcmV0dXJuIHBhcnNlRmxvYXQoKHN8fCcnKS5yZXBsYWNlKC9bXjAtOS5dL2csJycpKXx8MDsgfQogIGZ1bmN0aW9uIGZtKG4peyByZXR1cm4gbj8nJCcrTWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygpOidOL0EnOyB9CiAgZnVuY3Rpb24gdG9kYXkoKXsgcmV0dXJuIG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycse3llYXI6J251bWVyaWMnLG1vbnRoOidsb25nJyxkYXk6J251bWVyaWMnfSk7IH0KICBmdW5jdGlvbiByZWZOdW0oKXsgcmV0dXJuICdQQ0wtJytEYXRlLm5vdygpLnRvU3RyaW5nKCkuc2xpY2UoLTcpOyB9CgogIHdpbmRvdy5wY2xGYyA9IGZjOwogIHdpbmRvdy5wY2xGcGggPSBmcGg7CgogIHdpbmRvdy5wY2xDYWxjID0gZnVuY3Rpb24oKXsKICAgIHZhciBwcmljZT1wZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXByaWNlJyk/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1wcmljZScpLnZhbHVlOicnKTsKICAgIHZhciByZWhhYj1wZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXJlaGFiJyk/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1yZWhhYicpLnZhbHVlOicnKTsKICAgIHZhciBjdj1wYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNyZWRpdCcpP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtY3JlZGl0JykudmFsdWU6JycpfHwwOwogICAgdmFyIGV4cEVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtZXhwZXJpZW5jZScpOwogICAgdmFyIGV2PWV4cEVsJiZleHBFbC52YWx1ZSE9PScnP3BhcnNlSW50KGV4cEVsLnZhbHVlKTotMTsKICAgIHZhciBlc2VsPWV4cEVsJiZleHBFbC52YWx1ZSE9PScnOwogICAgdmFyIHAxbT1wcmljZT4wP01hdGgucm91bmQocHJpY2UqLjU1KTowLCBwMWQ9cHJpY2U+MD9NYXRoLnJvdW5kKHByaWNlKi40NSk6MDsKICAgIHZhciBwMnA9cHJpY2U+MD9NYXRoLnJvdW5kKHByaWNlKi44MCk6MCwgcDJkPXByaWNlPjA/TWF0aC5yb3VuZChwcmljZSouMjApOjA7CiAgICB2YXIgcDJ0PXAycCsocmVoYWJ8fDApOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1wMW1sJykudGV4dENvbnRlbnQ9cDFtP2ZtKHAxbSk6J+KAlCc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXAxZHcnKS50ZXh0Q29udGVudD1wMWQ/Zm0ocDFkKTon4oCUJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcDJwbCcpLnRleHRDb250ZW50PXAycD9mbShwMnApOifigJQnOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1wMnJoJykudGV4dENvbnRlbnQ9cmVoYWI/Zm0ocmVoYWIpKycgKGVzY3Jvd2VkKSc6J+KAlCc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXAydHQnKS50ZXh0Q29udGVudD1wMnQ/Zm0ocDJ0KTon4oCUJzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcDJkdycpLnRleHRDb250ZW50PXAyZD9mbShwMmQpOifigJQnOwogICAgdmFyIG9rNjgwPWN2Pj02ODAsIGV4cE9rPWVzZWwmJmV2Pj0zLCBoYXNQPXByaWNlPjA7CiAgICB2YXIgcDFiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcDFiJyksIHBjMT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXBjMScpOwogICAgaWYoIWhhc1Ape3AxYi5jbGFzc05hbWU9J3BjbC1wYmFkZ2UgYnAnO3AxYi50ZXh0Q29udGVudD0n4oS5IEVudGVyIGRldGFpbHMgdG8gY2hlY2snO3BjMS5jbGFzc05hbWU9J3BjbC1wcm9nJzt9CiAgICBlbHNle3AxYi5jbGFzc05hbWU9J3BjbC1wYmFkZ2UgYnEnO3AxYi50ZXh0Q29udGVudD0n4pyTIFlvdSBxdWFsaWZ5IOKAlCBhbGwgY3JlZGl0IHNjb3JlcyBhY2NlcHRlZCc7cGMxLmNsYXNzTmFtZT0ncGNsLXByb2cgYXAxJzt9CiAgICB2YXIgcDJiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcDJiJyksIHBjMj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXBjMicpOwogICAgaWYoIWhhc1AmJiFlc2VsJiYhY3Ype3AyYi5jbGFzc05hbWU9J3BjbC1wYmFkZ2UgYnAnO3AyYi50ZXh0Q29udGVudD0n4oS5IEVudGVyIGRldGFpbHMgdG8gY2hlY2snO3BjMi5jbGFzc05hbWU9J3BjbC1wcm9nJzt9CiAgICBlbHNlIGlmKG9rNjgwJiZleHBPayl7cDJiLmNsYXNzTmFtZT0ncGNsLXBiYWRnZSBicSc7cDJiLnRleHRDb250ZW50PSfinJMgWW91IHF1YWxpZnkgZm9yIHRoaXMgcHJvZ3JhbSc7cGMyLmNsYXNzTmFtZT0ncGNsLXByb2cgYXAyJzt9CiAgICBlbHNlewogICAgICB2YXIgcj1bXTsKICAgICAgaWYoIW9rNjgwKXIucHVzaCgnNjgwKyBjcmVkaXQgcmVxdWlyZWQnKTsKICAgICAgaWYoZXNlbCYmZXY8MylyLnB1c2goJzMrIGRlYWxzIHJlcXVpcmVkJyk7CiAgICAgIGlmKCFlc2VsKXIucHVzaCgnc2VsZWN0IGV4cGVyaWVuY2UgbGV2ZWwnKTsKICAgICAgcDJiLmNsYXNzTmFtZT0ncGNsLXBiYWRnZSBibic7cDJiLnRleHRDb250ZW50PSfinJcgJytyLmpvaW4oJyDCtyAnKTtwYzIuY2xhc3NOYW1lPSdwY2wtcHJvZyc7CiAgICB9CiAgICB2YXIgaGludD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWhpbnQnKTsKICAgIGlmKGhhc1AmJmV4cE9rJiZvazY4MCkgaGludC5pbm5lckhUTUw9JzxzdHJvbmc+WW91IHF1YWxpZnkgZm9yIGJvdGggcHJvZ3JhbXMuPC9zdHJvbmc+IFByb2dyYW0gMiBnaXZlcyB5b3UgbW9yZSBsZXZlcmFnZSDigJQgODAlIHB1cmNoYXNlIGZpbmFuY2luZyBwbHVzIDEwMCUgb2YgeW91ciByZWhhYiBlc2Nyb3dlZC4nOwogICAgZWxzZSBpZihoYXNQJiYoIW9rNjgwfHwhZXhwT2spKXsKICAgICAgdmFyIG09W107aWYoIW9rNjgwKW0ucHVzaCgnNjgwKyBGSUNPJyk7aWYoIWV4cE9rKW0ucHVzaCgnMysgY29tcGxldGVkIGRlYWxzJyk7CiAgICAgIGhpbnQuaW5uZXJIVE1MPSc8c3Ryb25nPlByb2dyYW0gMSBpcyBhdmFpbGFibGUgdG8geW91Ljwvc3Ryb25nPiBUbyB1bmxvY2sgUHJvZ3JhbSAyIHlvdSBuZWVkOiAnK20uam9pbignIGFuZCAnKSsnLic7CiAgICB9IGVsc2UgaGludC5pbm5lckhUTUw9J0ZpbGwgaW4geW91ciBwcm9wZXJ0eSBhbmQgbG9hbiBkZXRhaWxzIHRvIHNlZSB3aGljaCBwcm9ncmFtIHlvdSBxdWFsaWZ5IGZvci4nOwogIH07CgogIGZ1bmN0aW9uIHJmKGlkLHdpZCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCksdz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh3aWQpOyBpZighZWx8fCFlbC52YWx1ZS50cmltKCkpe2lmKHcpdy5jbGFzc0xpc3QuYWRkKCdlcnInKTtyZXR1cm4gZmFsc2U7fSBpZih3KXcuY2xhc3NMaXN0LnJlbW92ZSgnZXJyJyk7cmV0dXJuIHRydWU7IH0KCiAgd2luZG93LnBjbFNldFN0ZXAgPSBmdW5jdGlvbihuKXsKICAgIGZvcih2YXIgaT0xO2k8PTQ7aSsrKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXN0ZXAnK2kpLnN0eWxlLmRpc3BsYXk9aT09PW4/Jyc6J25vbmUnOwogICAgZm9yKHZhciBpPTE7aTw9MztpKyspewogICAgICB2YXIgcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXMnK2kpLHNjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtc2MnK2kpOwogICAgICBzLmNsYXNzTmFtZT0ncGNsLXN0ZXAnOwogICAgICBpZihpPG4pe3MuY2xhc3NMaXN0LmFkZCgnZG9uZScpO3NjLnRleHRDb250ZW50PSfinJMnO30KICAgICAgZWxzZSBpZihpPT09bil7cy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtzYy50ZXh0Q29udGVudD1pO30KICAgICAgZWxzZSBzYy50ZXh0Q29udGVudD1pOwogICAgfQogICAgZm9yKHZhciBpPTE7aTw9MjtpKyspIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtc2wnK2kpLmNsYXNzTmFtZT0ncGNsLXNsJysoaTxuPycgZG9uZSc6JycpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1mb3JtLXdyYXAnKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOwogIH07CgogIHdpbmRvdy5wY2xHbyA9IGZ1bmN0aW9uKGZyb20pewogICAgaWYoZnJvbT09PTEpewogICAgICB2YXIgb2s9cmYoJ3BjbC1sb2FuLXR5cGUnLCdwY2wtZi1sdCcpJnJmKCdwY2wtcHJvcC10eXBlJywncGNsLWYtcHQnKSZyZigncGNsLWNpdHknLCdwY2wtZi1jaXR5JykmcmYoJ3BjbC16aXAnLCdwY2wtZi16aXAnKSZyZigncGNsLWV4cGVyaWVuY2UnLCdwY2wtZi1leHAnKTsKICAgICAgaWYoIW9rKXJldHVybjsgcGNsU2V0U3RlcCgyKTsKICAgIH0gZWxzZSBpZihmcm9tPT09Mil7CiAgICAgIHZhciBvaz1yZigncGNsLXByaWNlJywncGNsLWYtcHAnKSZyZigncGNsLWFydicsJ3BjbC1mLWFydicpJnJmKCdwY2wtY3JlZGl0JywncGNsLWYtY3InKTsKICAgICAgaWYoIW9rKXJldHVybjsgcGNsU2V0U3RlcCgzKTsKICAgIH0KICB9OwoKICB3aW5kb3cucGNsU3VibWl0ID0gZnVuY3Rpb24oKXsKICAgIHZhciBvaz1yZigncGNsLWZuYW1lJywncGNsLWYtZm4nKSZyZigncGNsLWxuYW1lJywncGNsLWYtbG4nKSZyZigncGNsLXBob25lJywncGNsLWYtcGgnKTsKICAgIHZhciBlZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWVtYWlsJyksZXc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1mLWVtJyk7CiAgICBpZighZWUudmFsdWUubWF0Y2goL15bXkBdK0BbXkBdK1wuW15AXSskLykpe2V3LmNsYXNzTGlzdC5hZGQoJ2VycicpO29rPWZhbHNlO31lbHNlIGV3LmNsYXNzTGlzdC5yZW1vdmUoJ2VycicpOwogICAgdmFyIGFncmVlZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWFncmVlJykuY2hlY2tlZCxjZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNoa2VycicpOwogICAgaWYoIWFncmVlZCl7Y2Uuc3R5bGUuZGlzcGxheT0nYmxvY2snO29rPWZhbHNlO31lbHNlIGNlLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgaWYoIW9rKXJldHVybjsKCiAgICB2YXIgcHJpY2U9cGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1wcmljZScpLnZhbHVlKTsKICAgIHZhciBhcnY9cGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1hcnYnKS52YWx1ZSk7CiAgICB2YXIgcmVoYWI9cGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1yZWhhYicpLnZhbHVlKTsKICAgIHZhciBjdj1wYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNyZWRpdCcpLnZhbHVlKXx8MDsKICAgIHZhciBldj1wYXJzZUludChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWV4cGVyaWVuY2UnKS52YWx1ZSl8fC0xOwogICAgdmFyIGVzZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1leHBlcmllbmNlJykudmFsdWUhPT0nJzsKICAgIHZhciBvazY4MD1jdj49NjgwLCBleHBPaz1lc2VsJiZldj49MzsKICAgIHZhciBmbmFtZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWZuYW1lJykudmFsdWUsIGxuYW1lPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtbG5hbWUnKS52YWx1ZTsKICAgIHZhciBmdWxsTmFtZT1mbmFtZSsnICcrbG5hbWU7CiAgICB2YXIgZW1haWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1lbWFpbCcpLnZhbHVlLCBwaG9uZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXBob25lJykudmFsdWU7CiAgICB2YXIgbG9hblR5cGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1sb2FuLXR5cGUnKS52YWx1ZTsKICAgIHZhciBwcm9wVHlwZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXByb3AtdHlwZScpLnZhbHVlOwogICAgdmFyIHN0cmVldD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXN0cmVldCcpLnZhbHVlOwogICAgdmFyIGNpdHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1jaXR5JykudmFsdWUsIHN0YXRlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtc3RhdGUnKS52YWx1ZSwgemlwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtemlwJykudmFsdWU7CiAgICB2YXIgYWRkcj1zdHJlZXQ/KHN0cmVldCsnLCAnK2NpdHkrJywgJytzdGF0ZSsnICcremlwKTooY2l0eSsnLCAnK3N0YXRlKycgJyt6aXApOwogICAgdmFyIGNsYmxzPXsnNzIwJzonNzIwKyBFeGNlbGxlbnQnLCc2ODAnOic2ODDigJM3MTkgR29vZCcsJzY0MCc6JzY0MOKAkzY3OSBGYWlyJywnNjAwJzonNjAw4oCTNjM5IEJlbG93IGF2ZycsJzU2MCc6J0JlbG93IDYwMCd9OwogICAgdmFyIGNyZWRpdFN0cj1jbGJsc1tkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLWNyZWRpdCcpLnZhbHVlXXx8J+KAlCc7CiAgICB2YXIgZWxibHM9eycwJzonRmlyc3QtdGltZSBpbnZlc3RvcicsJzEnOicx4oCTMiBkZWFscycsJzMnOicz4oCTOSBkZWFscycsJzEwJzonMTArIGRlYWxzJ307CiAgICB2YXIgZXhwU3RyPWVsYmxzW2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtZXhwZXJpZW5jZScpLnZhbHVlXXx8J+KAlCc7CgogICAgdmFyIHByb2csIHJvd3MsIGljb25UeHQsIGljb25CZywgaWNvbkNvbG9yLCB0aXRsZSwgc3ViLCBycENscywgcnBMYmwsIHJwTm07CgogICAgaWYob2s2ODAmJmV4cE9rJiZwcmljZT4wKXsKICAgICAgcHJvZz0nMic7CiAgICAgIHZhciBwMnA9TWF0aC5yb3VuZChwcmljZSouODApLCBwMmQ9TWF0aC5yb3VuZChwcmljZSouMjApLCBwMnQ9cDJwKyhyZWhhYnx8MCk7CiAgICAgIGljb25UeHQ9J+Kckyc7aWNvbkJnPScjRUFGM0RFJztpY29uQ29sb3I9JyMzQjZEMTEnOwogICAgICB0aXRsZT0nQ29uZGl0aW9uYWxseSBBcHByb3ZlZCDigJQgUHJvZ3JhbSAyJzsKICAgICAgc3ViPSdZb3UgcXVhbGlmeSBmb3Igb3VyIGJlc3QgcHJvZ3JhbS4gSGVyZSBhcmUgeW91ciBlc3RpbWF0ZWQgbG9hbiB0ZXJtcy4nOwogICAgICBycENscz0ncGNsLXJlcy1wcm9nIHJwMic7cnBMYmw9J1Byb2dyYW0gMiDigJQgRXhwZXJpZW5jZWQgSW52ZXN0b3InO3JwTm09JzgwJSBMVFYgKyAxMDAlIFJlaGFiIEVzY3Jvdyc7CiAgICAgIHJvd3M9W1snQXBwbGljYW50JyxmdWxsTmFtZV0sWydMb2FuIHR5cGUnLGxvYW5UeXBlXSxbJ1Byb3BlcnR5IHR5cGUnLHByb3BUeXBlXSxbJ1Byb3BlcnR5JyxhZGRyXSwKICAgICAgICBbJ1B1cmNoYXNlIHByaWNlJyxmbShwcmljZSldLFsnQWZ0ZXIgcmVwYWlyIHZhbHVlIChBUlYpJyxmbShhcnYpXSwKICAgICAgICBbJ1JlaGFiIGJ1ZGdldCAoMTAwJSBlc2Nyb3dlZCknLHJlaGFiP2ZtKHJlaGFiKTonTm90IHByb3ZpZGVkJ10sCiAgICAgICAgWydZb3VyIGRvd24gcGF5bWVudCAoMjAlKScsZm0ocDJkKV0sWydQdXJjaGFzZSBsb2FuICg4MCUpJyxmbShwMnApXSwKICAgICAgICBbJ1RvdGFsIGxvYW4gYW1vdW50JyxmbShwMnQpXSxbJ0NyZWRpdCByYW5nZScsY3JlZGl0U3RyXSxbJ0V4cGVyaWVuY2UnLGV4cFN0cl0sCiAgICAgICAgWydOZXh0IHN0ZXAnLCdUZWFtIGNvbnRhY3RzIHlvdSB3aXRoaW4gMSBidXNpbmVzcyBkYXknXV07CiAgICAgIEc9e3Byb2cscHJvZ3JhbU5hbWU6J1Byb2dyYW0gMiDigJQgRXhwZXJpZW5jZWQgSW52ZXN0b3InLHByb2dyYW1EZXNjOic4MCUgTFRWICsgMTAwJSBSZWhhYiBFc2Nyb3cnLGZ1bGxOYW1lLGVtYWlsLHBob25lLGxvYW5UeXBlLHByb3BUeXBlLGFkZHIscHJpY2UsYXJ2LHJlaGFiLHAycCxwMmQscDJ0LGNyZWRpdFN0cixleHBTdHIscm93c307CiAgICB9IGVsc2UgaWYocHJpY2U+MCl7CiAgICAgIHByb2c9JzEnOwogICAgICB2YXIgcDFtPU1hdGgucm91bmQocHJpY2UqLjU1KSwgcDFkPU1hdGgucm91bmQocHJpY2UqLjQ1KTsKICAgICAgaWNvblR4dD0n4pyTJztpY29uQmc9JyNFNkYxRkInO2ljb25Db2xvcj0nIzE4NUZBNSc7CiAgICAgIHRpdGxlPSdDb25kaXRpb25hbGx5IEFwcHJvdmVkIOKAlCBQcm9ncmFtIDEnOwogICAgICBzdWI9J1lvdSBxdWFsaWZ5IGZvciBvdXIgYXNzZXQtYmFzZWQgbG9hbiBwcm9ncmFtLiBIZXJlIGFyZSB5b3VyIGVzdGltYXRlZCBudW1iZXJzLic7CiAgICAgIHJwQ2xzPSdwY2wtcmVzLXByb2cgcnAxJztycExibD0nUHJvZ3JhbSAxIOKAlCBBc3NldC1CYXNlZCc7cnBObT0nNTUlIEFzLUlzIFZhbHVlIExvYW4nOwogICAgICByb3dzPVtbJ0FwcGxpY2FudCcsZnVsbE5hbWVdLFsnTG9hbiB0eXBlJyxsb2FuVHlwZV0sWydQcm9wZXJ0eSB0eXBlJyxwcm9wVHlwZV0sWydQcm9wZXJ0eScsYWRkcl0sCiAgICAgICAgWydBcy1pcyB2YWx1ZScsZm0ocHJpY2UpXSxbJ0FmdGVyIHJlcGFpciB2YWx1ZSAoQVJWKScsZm0oYXJ2KV0sCiAgICAgICAgWydSZWhhYiBidWRnZXQnLHJlaGFiP2ZtKHJlaGFiKTonTm90IHByb3ZpZGVkJ10sCiAgICAgICAgWydNYXggbG9hbiAoNTUlIG9mIGFzLWlzKScsZm0ocDFtKV0sWydSZXF1aXJlZCBkb3duIHBheW1lbnQnLGZtKHAxZCldLAogICAgICAgIFsnQ3JlZGl0IHJhbmdlJyxjcmVkaXRTdHJdLFsnRXhwZXJpZW5jZScsZXhwU3RyXSwKICAgICAgICBbJ1JlaGFiIGZ1bmRpbmcnLCdDYXNlIGJ5IGNhc2Ug4oCUIGRpc2N1c3Mgd2l0aCB0ZWFtJ10sCiAgICAgICAgWydOZXh0IHN0ZXAnLCdUZWFtIGNvbnRhY3RzIHlvdSB3aXRoaW4gMSBidXNpbmVzcyBkYXknXV07CiAgICAgIEc9e3Byb2cscHJvZ3JhbU5hbWU6J1Byb2dyYW0gMSDigJQgQXNzZXQtQmFzZWQnLHByb2dyYW1EZXNjOic1NSUgQXMtSXMgVmFsdWUgTG9hbicsZnVsbE5hbWUsZW1haWwscGhvbmUsbG9hblR5cGUscHJvcFR5cGUsYWRkcixwcmljZSxhcnYscmVoYWIscDFtLHAxZCxjcmVkaXRTdHIsZXhwU3RyLHJvd3N9OwogICAgfSBlbHNlIHsKICAgICAgcHJvZz0nbm9uZSc7aWNvblR4dD0nPyc7aWNvbkJnPScjRkVGM0YyJztpY29uQ29sb3I9JyNiOTFjMWMnOwogICAgICB0aXRsZT0iTGV0J3MgRmluZCBhIFNvbHV0aW9uIjtzdWI9IkNhbGwgdXMgZGlyZWN0bHkg4oCUIGV2ZXJ5IGRlYWwgaXMgZGlmZmVyZW50LiI7CiAgICAgIHJwQ2xzPSdwY2wtcmVzLXByb2cgcnBuJztycExibD0nRnVydGhlciBSZXZpZXcgTmVlZGVkJztycE5tPSJXZSBmdW5kIHdoYXQgYmFua3Mgd29uJ3QiOwogICAgICByb3dzPVtbJ05leHQgc3RlcCcsJ0NhbGwgMzEyLTU2NC01MTEwIHRvIGRpc2N1c3MgeW91ciBvcHRpb25zJ11dOwogICAgICBHPXtwcm9nLHJvd3MsZnVsbE5hbWV9OwogICAgfQoKICAgIHZhciByaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXJlcy1pY29uJyk7CiAgICByaS50ZXh0Q29udGVudD1pY29uVHh0O3JpLnN0eWxlLmJhY2tncm91bmQ9aWNvbkJnO3JpLnN0eWxlLmNvbG9yPWljb25Db2xvcjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcmVzLXRpdGxlJykudGV4dENvbnRlbnQ9dGl0bGU7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXJlcy1zdWInKS50ZXh0Q29udGVudD1zdWI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGNsLXJlcy1wcm9nJykuY2xhc3NOYW1lPXJwQ2xzOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1ycC1sYmwnKS50ZXh0Q29udGVudD1ycExibDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcnAtbm0nKS50ZXh0Q29udGVudD1ycE5tOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BjbC1ycC1yb3dzJykuaW5uZXJIVE1MPXJvd3MubWFwKGZ1bmN0aW9uKHIpe3JldHVybiAnPGRpdiBjbGFzcz0icGNsLXJyb3ciPjxzcGFuPicrclswXSsnPC9zcGFuPjxzdHJvbmc+JytyWzFdKyc8L3N0cm9uZz48L2Rpdj4nO30pLmpvaW4oJycpOwogICAgRy5yb3dzPXJvd3M7IEcudG9kYXk9dG9kYXkoKTsgRy5yZWY9cmVmTnVtKCk7CiAgICBwY2xTZXRTdGVwKDQpOwogICAgZm9yKHZhciBpPTE7aTw9MztpKyspe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtc2MnK2kpLnRleHRDb250ZW50PSfinJMnO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwY2wtcycraSkuY2xhc3NOYW1lPSdwY2wtc3RlcCBkb25lJzt9CiAgfTsKCiAgd2luZG93LnBjbERvd25sb2FkUERGID0gZnVuY3Rpb24oKXsKICAgIHZhciBkPUc7CiAgICB2YXIgY29sb3I9ZC5wcm9nPT09JzInPycjM0I2RDExJzonIzE4NUZBNSc7CiAgICB2YXIgY29sb3JMaWdodD1kLnByb2c9PT0nMic/JyNFQUYzREUnOicjRTZGMUZCJzsKICAgIHZhciBjb2xvckJvcmRlcj1kLnByb2c9PT0nMic/JyNDMEREOTcnOicjQjVENEY0JzsKICAgIHZhciByb3dzSFRNTD0oZC5yb3dzfHxbXSkubWFwKGZ1bmN0aW9uKHIsaSl7CiAgICAgIHJldHVybiAnPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOicrKGklMj09PTA/JyNmOWZhZmInOicjZmZmZmZmJykrJyI+PHRkIHN0eWxlPSJwYWRkaW5nOjhweCAxMnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM1NTU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTt3aWR0aDo0NSUiPicrclswXSsnPC90ZD48dGQgc3R5bGU9InBhZGRpbmc6OHB4IDEycHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzExMTtmb250LXdlaWdodDo2MDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZSI+JytyWzFdKyc8L3RkPjwvdHI+JzsKICAgIH0pLmpvaW4oJycpOwogICAgdmFyIGh0bWw9JzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIGNoYXJzZXQ9IlVURi04Ij48dGl0bGU+UHJlLUFwcHJvdmFsIExldHRlciDigJQgUHJpdmF0ZSBDYXBpdGFsIExMQzwvdGl0bGU+PHN0eWxlPip7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MDt9Ym9keXtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcJ1NlZ29lIFVJXCcsc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzExMTstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtwcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7fS5wYWdle21heC13aWR0aDo3NjBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6NDBweDt9LmhlYWRlcntiYWNrZ3JvdW5kOicrY29sb3IrJztib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoyOHB4IDMycHg7bWFyZ2luLWJvdHRvbToyNHB4O2NvbG9yOiNmZmY7fS5jby1uYW1le2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotMC4zcHg7fS5jby1zdWJ7Zm9udC1zaXplOjEycHg7b3BhY2l0eTowLjg7bWFyZ2luLXRvcDo0cHg7fS5kb2MtdGl0bGV7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzoxcHg7b3BhY2l0eTowLjk7bWFyZ2luLXRvcDoxNHB4O30ubWV0YS1iYXJ7YmFja2dyb3VuZDojZjRmNmY5O2JvcmRlcjoxcHggc29saWQgI2UwZTBlMDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE0cHggMThweDttYXJnaW4tYm90dG9tOjIwcHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDt9Lm1ldGEtaXRlbXtmb250LXNpemU6MTJweDtjb2xvcjojNjY2O30ubWV0YS1pdGVtIHN0cm9uZ3tjb2xvcjojMTExO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEzcHg7fS5zdGF0dXMtYmFkZ2V7YmFja2dyb3VuZDonK2NvbG9yKyc7Y29sb3I6I2ZmZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuNXB4O30ucHJvZy1iYW5uZXJ7YmFja2dyb3VuZDonK2NvbG9yTGlnaHQrJztib3JkZXI6MXB4IHNvbGlkICcrY29sb3JCb3JkZXIrJztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjE2cHggMThweDttYXJnaW4tYm90dG9tOjIwcHg7fS5wcm9nLXRhZ3tmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuNnB4O2NvbG9yOicrY29sb3IrJzttYXJnaW4tYm90dG9tOjRweDt9LnByb2ctdHRse2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMTExO30uc2VjdGlvbnttYXJnaW4tYm90dG9tOjIwcHg7fS5zZWMtaGRye2JhY2tncm91bmQ6Jytjb2xvcisnO2NvbG9yOiNmZmY7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzowLjhweDtwYWRkaW5nOjhweCAxNHB4O2JvcmRlci1yYWRpdXM6NnB4IDZweCAwIDA7fS5zZWMtYm9keXtib3JkZXI6MXB4IHNvbGlkICNlMGUwZTA7Ym9yZGVyLXRvcDpub25lO2JvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7b3ZlcmZsb3c6aGlkZGVuO30uaW5mby1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjt9LmluZm8tY2VsbHtwYWRkaW5nOjEwcHggMTRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlO30uaW5mby1jZWxsOm50aC1jaGlsZChvZGQpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2VlZTt9LmluZm8tbGFiZWx7Zm9udC1zaXplOjExcHg7Y29sb3I6Izg4ODtmb250LXdlaWdodDo1MDA7bWFyZ2luLWJvdHRvbToycHg7fS5pbmZvLXZhbHtmb250LXNpemU6MTNweDtjb2xvcjojMTExO2ZvbnQtd2VpZ2h0OjYwMDt9dGFibGV7d2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7fS5kaXNje2JhY2tncm91bmQ6I0VGRjZGRjtib3JkZXI6MXB4IHNvbGlkICNCRkRCRkU7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4IDE4cHg7bWFyZ2luLWJvdHRvbToyMHB4O30uZGlzYy10dGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxZTQwYWY7bWFyZ2luLWJvdHRvbTo2cHg7fS5kaXNjLXR4dHtmb250LXNpemU6MTJweDtjb2xvcjojMWUzYThhO2xpbmUtaGVpZ2h0OjEuNjU7fS5uZXh0e2JhY2tncm91bmQ6Jytjb2xvckxpZ2h0Kyc7Ym9yZGVyOjFweCBzb2xpZCAnK2NvbG9yQm9yZGVyKyc7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxNnB4IDE4cHg7bWFyZ2luLWJvdHRvbToyNHB4O30ubmV4dC10dGx7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOicrY29sb3IrJzttYXJnaW4tYm90dG9tOjZweDt9Lm5leHQtdHh0e2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiMzMzM7bGluZS1oZWlnaHQ6MS41NTt9LmZvb3Rlcntib3JkZXItdG9wOjFweCBzb2xpZCAjZTBlMGUwO3BhZGRpbmctdG9wOjE2cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O30uZm9vdGVyLWxlZnR7Zm9udC1zaXplOjExcHg7Y29sb3I6Izk5OTtsaW5lLWhlaWdodDoxLjY7fS5mb290ZXItcmlnaHR7Zm9udC1zaXplOjExcHg7Y29sb3I6Izk5OTt0ZXh0LWFsaWduOnJpZ2h0O2xpbmUtaGVpZ2h0OjEuNjt9LnByaW50LWJ0bntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDtiYWNrZ3JvdW5kOicrY29sb3IrJztjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjEycHggMjhweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjttYXJnaW46MCBhdXRvIDI0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDt9QG1lZGlhIHByaW50ey5wcmludC1idG57ZGlzcGxheTpub25lIWltcG9ydGFudDt9fTwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgY2xhc3M9InBhZ2UiPjxidXR0b24gY2xhc3M9InByaW50LWJ0biIgb25jbGljaz0id2luZG93LnByaW50KCkiPiYjMTI4NDI0OyBQcmludCAvIFNhdmUgYXMgUERGPC9idXR0b24+PGRpdiBjbGFzcz0iaGVhZGVyIj48ZGl2IGNsYXNzPSJjby1uYW1lIj5Qcml2YXRlIENhcGl0YWwsIExMQzwvZGl2PjxkaXYgY2xhc3M9ImNvLXN1YiI+Q2hpY2FnbyBSZWhhYiBMb2FucyAmbmJzcDt8Jm5ic3A7IDMxMi01NjQtNTExMCAmbmJzcDt8Jm5ic3A7IGNoaWNhZ29yZWhhYmxvYW5zLmNvbTwvZGl2PjxkaXYgY2xhc3M9ImRvYy10aXRsZSI+Q29uZGl0aW9uYWwgUHJlLUFwcHJvdmFsIExldHRlcjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Im1ldGEtYmFyIj48ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxzcGFuPlJlZmVyZW5jZSAjPC9zcGFuPjxzdHJvbmc+JytkLnJlZisnPC9zdHJvbmc+PC9kaXY+PGRpdiBjbGFzcz0ibWV0YS1pdGVtIj48c3Bhbj5Jc3N1ZSBEYXRlPC9zcGFuPjxzdHJvbmc+JytkLnRvZGF5Kyc8L3N0cm9uZz48L2Rpdj48ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxzcGFuPlByZXBhcmVkIGZvcjwvc3Bhbj48c3Ryb25nPicrKGQuZnVsbE5hbWV8fCfigJQnKSsnPC9zdHJvbmc+PC9kaXY+PGRpdiBjbGFzcz0ic3RhdHVzLWJhZGdlIj4mIzEwMDAzOyBDb25kaXRpb25hbGx5IEFwcHJvdmVkPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0icHJvZy1iYW5uZXIiPjxkaXYgY2xhc3M9InByb2ctdGFnIj4nKyhkLnByb2dyYW1OYW1lfHwnTG9hbiBQcm9ncmFtJykrJzwvZGl2PjxkaXYgY2xhc3M9InByb2ctdHRsIj4nKyhkLnByb2dyYW1EZXNjfHwnJykrJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxkaXYgY2xhc3M9InNlYy1oZHIiPkFwcGxpY2FudCBJbmZvcm1hdGlvbjwvZGl2PjxkaXYgY2xhc3M9InNlYy1ib2R5Ij48ZGl2IGNsYXNzPSJpbmZvLWdyaWQiPjxkaXYgY2xhc3M9ImluZm8tY2VsbCI+PGRpdiBjbGFzcz0iaW5mby1sYWJlbCI+RnVsbCBOYW1lPC9kaXY+PGRpdiBjbGFzcz0iaW5mby12YWwiPicrKGQuZnVsbE5hbWV8fCfigJQnKSsnPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaW5mby1jZWxsIj48ZGl2IGNsYXNzPSJpbmZvLWxhYmVsIj5QaG9uZTwvZGl2PjxkaXYgY2xhc3M9ImluZm8tdmFsIj4nKyhkLnBob25lfHwn4oCUJykrJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImluZm8tY2VsbCI+PGRpdiBjbGFzcz0iaW5mby1sYWJlbCI+RW1haWw8L2Rpdj48ZGl2IGNsYXNzPSJpbmZvLXZhbCI+JysoZC5lbWFpbHx8J+KAlCcpKyc8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpbmZvLWNlbGwiPjxkaXYgY2xhc3M9ImluZm8tbGFiZWwiPkxvYW4gVHlwZTwvZGl2PjxkaXYgY2xhc3M9ImluZm8tdmFsIj4nKyhkLmxvYW5UeXBlfHwn4oCUJykrJzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxkaXYgY2xhc3M9InNlYy1oZHIiPkxvYW4gRGV0YWlsczwvZGl2PjxkaXYgY2xhc3M9InNlYy1ib2R5Ij48dGFibGU+Jytyb3dzSFRNTCsnPC90YWJsZT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJkaXNjIj48ZGl2IGNsYXNzPSJkaXNjLXR0bCI+JiM4NTA1OyBDb25kaXRpb25hbCBQcmUtQXBwcm92YWwgRGlzY2xvc3VyZTwvZGl2PjxkaXYgY2xhc3M9ImRpc2MtdHh0Ij5UaGlzIHByZS1hcHByb3ZhbCBpcyA8c3Ryb25nPmNvbmRpdGlvbmFsIGFuZCBzdWJqZWN0IHRvIHZlcmlmaWNhdGlvbjwvc3Ryb25nPi4gQWxsIGluZm9ybWF0aW9uIHN1Ym1pdHRlZCDigJQgaW5jbHVkaW5nIHByb3BlcnR5IGRldGFpbHMsIGxvYW4gYW1vdW50cywgY3JlZGl0IHNjb3JlLCBhbmQgYm9ycm93ZXIgaWRlbnRpdHkg4oCUIHdpbGwgYmUgaW5kZXBlbmRlbnRseSB2ZXJpZmllZCBieSBQcml2YXRlIENhcGl0YWwsIExMQyBwcmlvciB0byBpc3N1aW5nIGEgZm9ybWFsIGxvYW4gY29tbWl0bWVudC4gU3VibWlzc2lvbiBvZiB0aGlzIGRvY3VtZW50IGRvZXMgbm90IGNvbnN0aXR1dGUgYSBiaW5kaW5nIGxvYW4gb2ZmZXIgb3IgZ3VhcmFudGVlIG9mIGZpbmFuY2luZy4gRmluYWwgYXBwcm92YWwgaXMgY29udGluZ2VudCB1cG9uIHNhdGlzZmFjdG9yeSByZXZpZXcgb2Ygc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCB0aXRsZSwgYXBwcmFpc2FsIG9yIENNQSwgYW5kIHVuZGVyd3JpdGluZyBndWlkZWxpbmVzIGluIGVmZmVjdCBhdCB0aW1lIG9mIGNsb3NpbmcuPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibmV4dCI+PGRpdiBjbGFzcz0ibmV4dC10dGwiPk5leHQgU3RlcHM8L2Rpdj48ZGl2IGNsYXNzPSJuZXh0LXR4dCI+T3VyIHRlYW0gd2lsbCBjb250YWN0IHlvdSB3aXRoaW4gPHN0cm9uZz4xIGJ1c2luZXNzIGRheTwvc3Ryb25nPiB0byBkaXNjdXNzIGZpbmFsIHRlcm1zIGFuZCByZXF1aXJlZCBkb2N1bWVudGF0aW9uLiBUbyBtb3ZlIGZhc3RlciwgY2FsbCB1cyBhdCA8c3Ryb25nPjMxMi01NjQtNTExMDwvc3Ryb25nPiBvciB2aXNpdCA8c3Ryb25nPmNoaWNhZ29yZWhhYmxvYW5zLmNvbTwvc3Ryb25nPi48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmb290ZXIiPjxkaXYgY2xhc3M9ImZvb3Rlci1sZWZ0Ij5Qcml2YXRlIENhcGl0YWwsIExMQyAmbmJzcDt8Jm5ic3A7IENoaWNhZ28gUmVoYWIgTG9hbnM8YnI+MzEyLTU2NC01MTEwICZuYnNwO3wmbmJzcDsgY2hpY2Fnb3JlaGFibG9hbnMuY29tPC9kaXY+PGRpdiBjbGFzcz0iZm9vdGVyLXJpZ2h0Ij5SZWY6ICcrZC5yZWYrJzxicj5Db25maWRlbnRpYWwg4oCUIGZvciBuYW1lZCBhcHBsaWNhbnQgb25seTwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+JzsKICAgIHZhciBibG9iPW5ldyBCbG9iKFtodG1sXSx7dHlwZTondGV4dC9odG1sJ30pOwogICAgdmFyIHVybD1VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwogICAgdmFyIHdpbj13aW5kb3cub3Blbih1cmwsJ19ibGFuaycpOwogICAgaWYoIXdpbil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO2EuaHJlZj11cmw7YS5kb3dubG9hZD0nUHJlQXBwcm92YWxfUHJpdmF0ZUNhcGl0YWwuaHRtbCc7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTthLmNsaWNrKCk7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTt9CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO30sMTUwMDApOwogIH07Cn0pKCk7Cjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]