trAvis - MANAGER
Edit File: wpbc_shortcode_popup.js
"use strict"; /** * Shortcode Config - Main Loop */ function wpbc_set_shortcode() { var wpbc_shortcode = '['; var shortcode_id = jQuery('#wpbc_shortcode_type').val().trim(); // ----------------------------------------------------------------------------------------------------------------- // [booking] | [bookingcalendar] | ... // ----------------------------------------------------------------------------------------------------- if ('booking' === shortcode_id || 'bookingcalendar' === shortcode_id || 'bookingselect' === shortcode_id || 'bookingtimeline' === shortcode_id || 'bookingform' === shortcode_id || 'bookingsearch' === shortcode_id || 'bookingother' === shortcode_id || 'booking_import_ics' === shortcode_id || 'booking_listing_ics' === shortcode_id) { wpbc_shortcode += shortcode_id; var wpbc_options_arr = []; // ------------------------------------------------------------------------------------------------------------- // [bookingselect] | [bookingtimeline] - Options relative only to this shortcode. // ------------------------------------------------------------------------------------------------------------- if ('bookingselect' === shortcode_id || 'bookingtimeline' === shortcode_id) { // [bookingselect type='1,2,3'] - Multiple Resources if (jQuery('#' + shortcode_id + '_wpbc_multiple_resources').length > 0) { var multiple_resources = jQuery('#' + shortcode_id + '_wpbc_multiple_resources').val(); if (multiple_resources != null && multiple_resources.length > 0) { // Remove empty spaces from array : '' | "" | 0 multiple_resources = multiple_resources.filter(function (n) { return parseInt(n); }); multiple_resources = multiple_resources.join(',').trim(); if (multiple_resources != 0) { wpbc_shortcode += ' type=\'' + multiple_resources + '\''; } } } // [bookingselect selected_type=1] - Selected Resource if (jQuery('#' + shortcode_id + '_wpbc_selected_resource').length > 0) { if (jQuery('#' + shortcode_id + '_wpbc_selected_resource').val() !== null //FixIn: 8.2.1.12 && parseInt(jQuery('#' + shortcode_id + '_wpbc_selected_resource').val()) > 0) { wpbc_shortcode += ' selected_type=' + jQuery('#' + shortcode_id + '_wpbc_selected_resource').val().trim(); } } // [bookingselect label='Tada'] - Label if (jQuery('#' + shortcode_id + '_wpbc_text_label').length > 0) { if ('' !== jQuery('#' + shortcode_id + '_wpbc_text_label').val().trim()) { wpbc_shortcode += ' label=\'' + jQuery('#' + shortcode_id + '_wpbc_text_label').val().trim().replace(/'/gi, '') + '\''; } } // [bookingselect first_option_title='Tada'] - First Option if (jQuery('#' + shortcode_id + '_wpbc_first_option_title').length > 0) { if ('' !== jQuery('#' + shortcode_id + '_wpbc_first_option_title').val().trim()) { wpbc_shortcode += ' first_option_title=\'' + jQuery('#' + shortcode_id + '_wpbc_first_option_title').val().trim().replace(/'/gi, '') + '\''; } } } // ------------------------------------------------------------------------------------------------------------- // [bookingtimeline] - Options relative only to this shortcode. // ------------------------------------------------------------------------------------------------------------- if ('bookingtimeline' === shortcode_id) { // Visually update var wpbc_is_matrix__view_days_num_temp = wpbc_shortcode_config__update_elements_in_timeline(); var wpbc_is_matrix = wpbc_is_matrix__view_days_num_temp[0]; var view_days_num_temp = wpbc_is_matrix__view_days_num_temp[1]; // : view_days_num if (view_days_num_temp != 30) { wpbc_shortcode += ' view_days_num=' + view_days_num_temp; } // : header_title if (jQuery('#' + shortcode_id + '_wpbc_text_label_timeline').length > 0) { var header_title_temp = jQuery('#' + shortcode_id + '_wpbc_text_label_timeline').val().trim(); header_title_temp = header_title_temp.replace(/'/gi, ''); if (header_title_temp != '') { wpbc_shortcode += ' header_title=\'' + header_title_temp + '\''; } } // : scroll_month if (jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_month').is(':visible') && jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_month').length > 0 && parseInt(jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_month').val().trim()) !== 0) { wpbc_shortcode += ' scroll_month=' + parseInt(jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_month').val().trim()); } // : scroll_day if (jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_days').is(':visible') && jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_days').length > 0 && parseInt(jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_days').val().trim()) !== 0) { wpbc_shortcode += ' scroll_day=' + parseInt(jQuery('#' + shortcode_id + '_wpbc_scroll_timeline_scroll_days').val().trim()); } // :limit_hours //FixIn: 7.0.1.17 jQuery('.bookingtimeline_view_times').hide(); if (wpbc_is_matrix && view_days_num_temp == 1 || !wpbc_is_matrix && view_days_num_temp == 30) { jQuery('.bookingtimeline_view_times').show(); var view_times_start_temp = parseInt(jQuery('#bookingtimeline_wpbc_start_end_time_timeline_starttime').val().trim()); var view_times_end_temp = parseInt(jQuery('#bookingtimeline_wpbc_start_end_time_timeline_endtime').val().trim()); if (view_times_start_temp != 0 || view_times_end_temp != 24) { wpbc_shortcode += ' limit_hours=\'' + view_times_start_temp + ',' + view_times_end_temp + '\''; } } // :scroll_start_date if (jQuery('#bookingtimeline_wpbc_start_date_timeline_active').is(':checked') && jQuery('#bookingtimeline_wpbc_start_date_timeline_active').length > 0) { wpbc_shortcode += ' scroll_start_date=\'' + jQuery('#bookingtimeline_wpbc_start_date_timeline_year').val().trim() + '-' + jQuery('#bookingtimeline_wpbc_start_date_timeline_month').val().trim() + '-' + jQuery('#bookingtimeline_wpbc_start_date_timeline_day').val().trim() + '\''; } } // ------------------------------------------------------------------------------------------------------------- // [bookingform ] - Form Only - [bookingform type=1 selected_dates='01.03.2024'] // ------------------------------------------------------------------------------------------------------------- if ('bookingform' === shortcode_id) { var wpbc_selected_day = jQuery('#' + shortcode_id + '_wpbc_booking_date_day').val().trim(); if (parseInt(wpbc_selected_day) < 10) { wpbc_selected_day = '0' + wpbc_selected_day; } var wpbc_selected_month = jQuery('#' + shortcode_id + '_wpbc_booking_date_month').val().trim(); if (parseInt(wpbc_selected_month) < 10) { wpbc_selected_month = '0' + wpbc_selected_month; } wpbc_shortcode += ' selected_dates=\'' + wpbc_selected_day + '.' + wpbc_selected_month + '.' + jQuery('#' + shortcode_id + '_wpbc_booking_date_year').val().trim() + '\''; } // ------------------------------------------------------------------------------------------------------------- // [bookingsearch ] - Options relative only to this shortcode. [bookingsearch searchresultstitle='{searchresults} Result(s) Found' noresultstitle='Nothing Found'] // ------------------------------------------------------------------------------------------------------------- if ('bookingsearch' === shortcode_id) { // Check if we selected 'bookingsearch' | 'bookingsearchresults' var wpbc_search_form_results = 'bookingsearch'; if (jQuery("input[name='bookingsearch_wpbc_search_form_results']:checked").length > 0) { wpbc_search_form_results = jQuery("input[name='bookingsearch_wpbc_search_form_results']:checked").val().trim(); } // Show | Hide form fields for 'bookingsearch' depends from radio bution selection if ('bookingsearchresults' === wpbc_search_form_results) { wpbc_shortcode = '[bookingsearchresults'; jQuery('.wpbc_search_availability_form').hide(); } else { jQuery('.wpbc_search_availability_form').show(); // New page for search results if (jQuery('#' + shortcode_id + '_wpbc_search_new_page_enabled').length > 0 && jQuery('#' + shortcode_id + '_wpbc_search_new_page_enabled').is(':checked')) { // Show jQuery('.' + shortcode_id + '_wpbc_search_new_page_wpbc_sc_searchresults_new_page').show(); // : Search Results URL if (jQuery('#' + shortcode_id + '_wpbc_search_new_page_url').length > 0) { var search_results_url_temp = jQuery('#' + shortcode_id + '_wpbc_search_new_page_url').val().trim(); search_results_url_temp = search_results_url_temp.replace(/'/gi, ''); if (search_results_url_temp != '') { wpbc_shortcode += ' searchresults=\'' + search_results_url_temp + '\''; } } } else { // Hide jQuery('.' + shortcode_id + '_wpbc_search_new_page_wpbc_sc_searchresults_new_page').hide(); } /* //FixIn: 10.0.0.41 // : Search Header if ( jQuery( '#' + shortcode_id + '_wpbc_search_header' ).length > 0 ){ var search_header_temp = jQuery( '#' + shortcode_id + '_wpbc_search_header' ).val().trim(); search_header_temp = search_header_temp.replace( /'/gi, '' ); if ( search_header_temp != '' ){ wpbc_shortcode += ' searchresultstitle=\'' + search_header_temp + '\''; } } // : Nothing Found if ( jQuery( '#' + shortcode_id + '_wpbc_search_nothing_found' ).length > 0 ){ var nothingfound_temp = jQuery( '#' + shortcode_id + '_wpbc_search_nothing_found' ).val().trim(); nothingfound_temp = nothingfound_temp.replace( /'/gi, '' ); if ( nothingfound_temp != '' ){ wpbc_shortcode += ' noresultstitle=\'' + nothingfound_temp + '\''; } } */ // : Users // [bookingsearch searchresultstitle='{searchresults} Result(s) Found' noresultstitle='Nothing Found' users='3,4543,'] if (jQuery('#' + shortcode_id + '_wpbc_search_for_users').length > 0) { var only_for_users_temp = jQuery('#' + shortcode_id + '_wpbc_search_for_users').val().trim(); only_for_users_temp = only_for_users_temp.replace(/'/gi, ''); if (only_for_users_temp != '') { wpbc_shortcode += ' users=\'' + only_for_users_temp + '\''; } } } } // ------------------------------------------------------------------------------------------------------------- // [bookingedit] , [bookingcustomerlisting] , [bookingresource type=6 show='capacity'] , [booking_confirm] // ------------------------------------------------------------------------------------------------------------- if ('bookingother' === shortcode_id) { //TRICK: shortcode_id = 'no'; //required for not update booking resource ID // Check if we selected 'bookingsearch' | 'bookingsearchresults' var bookingother_shortcode_type = 'bookingsearch'; if (jQuery("input[name='bookingother_wpbc_shortcode_type']:checked").length > 0) { bookingother_shortcode_type = jQuery("input[name='bookingother_wpbc_shortcode_type']:checked").val().trim(); } // Show | Hide sections if ('booking_confirm' === bookingother_shortcode_type) { wpbc_shortcode = '[booking_confirm'; jQuery('.bookingother_section_additional').hide(); jQuery('.bookingother_section_' + bookingother_shortcode_type).show(); } if ('bookingedit' === bookingother_shortcode_type) { wpbc_shortcode = '[bookingedit'; jQuery('.bookingother_section_additional').hide(); jQuery('.bookingother_section_' + bookingother_shortcode_type).show(); } if ('bookingcustomerlisting' === bookingother_shortcode_type) { wpbc_shortcode = '[bookingcustomerlisting'; jQuery('.bookingother_section_additional').hide(); jQuery('.bookingother_section_' + bookingother_shortcode_type).show(); } if ('bookingresource' === bookingother_shortcode_type) { //TRICK: shortcode_id = 'bookingother'; //required to force update booking resource ID wpbc_shortcode = '[bookingresource'; jQuery('.bookingother_section_additional').hide(); jQuery('.bookingother_section_' + bookingother_shortcode_type).show(); if (jQuery('#bookingother_wpbc_resource_show').val().trim() != 'title') { wpbc_shortcode += ' show=\'' + jQuery('#bookingother_wpbc_resource_show').val().trim() + '\''; } } } // [booking-manager-import ...] || [booking-manager-listing ...] if ('booking_import_ics' === shortcode_id || 'booking_listing_ics' === shortcode_id) { wpbc_shortcode = '[booking-manager-import'; if ('booking_listing_ics' === shortcode_id) { wpbc_shortcode = '[booking-manager-listing'; } //////////////////////////////////////////////////////////////// // : .ics feed URL //////////////////////////////////////////////////////////////// var shortcode_url_temp = ''; if (jQuery('#' + shortcode_id + '_wpbc_url').length > 0) { shortcode_url_temp = jQuery('#' + shortcode_id + '_wpbc_url').val().trim(); shortcode_url_temp = shortcode_url_temp.replace(/'/gi, ''); if (shortcode_url_temp != '') { wpbc_shortcode += ' url=\'' + shortcode_url_temp + '\''; } } if (shortcode_url_temp == '') { // Error: wpbc_shortcode = '[ URL is required '; } else { // VALID: //////////////////////////////////////////////////////////////// // [... from='' 'from_offset='' ...] //////////////////////////////////////////////////////////////// if (jQuery('#' + shortcode_id + '_from').length > 0) { var p_from = jQuery('#' + shortcode_id + '_from').val().trim(); var p_from_offset = jQuery('#' + shortcode_id + '_from_offset').val().trim(); p_from = p_from.replace(/'/gi, ''); p_from_offset = p_from_offset.replace(/'/gi, ''); if ('' != p_from && 'date' != p_from) { // Offset wpbc_shortcode += ' from=\'' + p_from + '\''; if ('any' != p_from && '' != p_from_offset) { p_from_offset = parseInt(p_from_offset); if (!isNaN(p_from_offset)) { wpbc_shortcode += ' from_offset=\'' + p_from_offset + jQuery('#' + shortcode_id + '_from_offset_type').val().trim().charAt(0) + '\''; } } } else if (p_from == 'date' && p_from_offset != '') { // If selected Date wpbc_shortcode += ' from=\'' + p_from_offset + '\''; } } //////////////////////////////////////////////////////////////// // [... until='' 'until_offset='' ...] //////////////////////////////////////////////////////////////// if (jQuery('#' + shortcode_id + '_until').length > 0) { var p_until = jQuery('#' + shortcode_id + '_until').val().trim(); var p_until_offset = jQuery('#' + shortcode_id + '_until_offset').val().trim(); p_until = p_until.replace(/'/gi, ''); p_until_offset = p_until_offset.replace(/'/gi, ''); if ('' != p_until && 'date' != p_until) { // Offset wpbc_shortcode += ' until=\'' + p_until + '\''; if ('any' != p_until && '' != p_until_offset) { p_until_offset = parseInt(p_until_offset); if (!isNaN(p_until_offset)) { wpbc_shortcode += ' until_offset=\'' + p_until_offset + jQuery('#' + shortcode_id + '_until_offset_type').val().trim().charAt(0) + '\''; } } } else if (p_until == 'date' && p_until_offset != '') { // If selected Date wpbc_shortcode += ' until=\'' + p_until_offset + '\''; } } //////////////////////////////////////////////////////////////// // Max //////////////////////////////////////////////////////////////// if (jQuery('#' + shortcode_id + '_conditions_max_num').length > 0) { var p_max = parseInt(jQuery('#' + shortcode_id + '_conditions_max_num').val().trim()); if (p_max != 0) { wpbc_shortcode += ' max=' + p_max; } } //////////////////////////////////////////////////////////////// // Silence //////////////////////////////////////////////////////////////// if (jQuery('#' + shortcode_id + '_silence').length > 0) { if ('1' === jQuery('#' + shortcode_id + '_silence').val().trim()) { wpbc_shortcode += ' silence=1'; } } //////////////////////////////////////////////////////////////// // is_all_dates_in //////////////////////////////////////////////////////////////// if (jQuery('#' + shortcode_id + '_conditions_events').length > 0) { var p_is_all_dates_in = parseInt(jQuery('#' + shortcode_id + '_conditions_events').val().trim()); if (p_is_all_dates_in != 0) { wpbc_shortcode += ' is_all_dates_in=' + p_is_all_dates_in; } } //////////////////////////////////////////////////////////////// // import_conditions //////////////////////////////////////////////////////////////// if (jQuery('#' + shortcode_id + '_conditions_import').length > 0) { var p_import_conditions = jQuery('#' + shortcode_id + '_conditions_import').val().trim(); p_import_conditions = p_import_conditions.replace(/'/gi, ''); if (p_import_conditions != '') { wpbc_shortcode += ' import_conditions=\'' + p_import_conditions + '\''; } } } } // ------------------------------------------------------------------------------------------------------------- // [booking] , [bookingcalendar] , ... parameters for these shortcodes and others... // ------------------------------------------------------------------------------------------------------------- if (jQuery('#' + shortcode_id + '_wpbc_resource_id').length > 0) { if (jQuery('#' + shortcode_id + '_wpbc_resource_id').val() === null) { //FixIn: 8.2.1.12 jQuery('#wpbc_text_put_in_shortcode').val('---'); return; } else { wpbc_shortcode += ' resource_id=' + jQuery('#' + shortcode_id + '_wpbc_resource_id').val().trim(); } } if (jQuery('#' + shortcode_id + '_wpbc_custom_form').length > 0) { var form_type_temp = jQuery('#' + shortcode_id + '_wpbc_custom_form').val().trim(); if (form_type_temp != 'standard') wpbc_shortcode += ' form_type=\'' + jQuery('#' + shortcode_id + '_wpbc_custom_form').val().trim() + '\''; } if (jQuery('#' + shortcode_id + '_wpbc_nummonths').length > 0 && parseInt(jQuery('#' + shortcode_id + '_wpbc_nummonths').val().trim()) > 1) { wpbc_shortcode += ' nummonths=' + jQuery('#' + shortcode_id + '_wpbc_nummonths').val().trim(); } if (jQuery('#' + shortcode_id + '_wpbc_startmonth_active').length > 0 && jQuery('#' + shortcode_id + '_wpbc_startmonth_active').is(':checked')) { wpbc_shortcode += ' startmonth=\'' + jQuery('#' + shortcode_id + '_wpbc_startmonth_year').val().trim() + '-' + jQuery('#' + shortcode_id + '_wpbc_startmonth_month').val().trim() + '\''; } if (jQuery('#' + shortcode_id + '_wpbc_aggregate').length > 0) { var wpbc_aggregate_temp = jQuery('#' + shortcode_id + '_wpbc_aggregate').val(); if (wpbc_aggregate_temp != null && wpbc_aggregate_temp.length > 0) { wpbc_aggregate_temp = wpbc_aggregate_temp.join(';'); if (wpbc_aggregate_temp != 0) { // Check about 0=>'None' wpbc_shortcode += ' aggregate=\'' + wpbc_aggregate_temp + '\''; if (jQuery('#' + shortcode_id + '_wpbc_aggregate__bookings_only').is(':checked')) { wpbc_options_arr.push('{aggregate type=bookings_only}'); } } } } // ------------------------------------------------------------------------------------------------------------- // Option Param // ------------------------------------------------------------------------------------------------------------- // Options : Size var wpbc_options_size = ''; if (jQuery('#' + shortcode_id + '_wpbc_size_enabled').length > 0 && jQuery('#' + shortcode_id + '_wpbc_size_enabled').is(':checked')) { // options='{calendar months_num_in_row=2 width=100% cell_height=40px}' wpbc_options_size += '{calendar'; wpbc_options_size += ' ' + 'months_num_in_row=' + Math.min(parseInt(jQuery('#' + shortcode_id + '_wpbc_size_months_num_in_row').val().trim()), parseInt(jQuery('#' + shortcode_id + '_wpbc_nummonths').val().trim())); wpbc_options_size += ' ' + 'width=' + parseInt(jQuery('#' + shortcode_id + '_wpbc_size_calendar_width').val().trim()) + jQuery('#' + shortcode_id + '_wpbc_size_calendar_width_px_pr').val().trim(); wpbc_options_size += ' ' + 'cell_height=' + parseInt(jQuery('#' + shortcode_id + '_wpbc_size_calendar_cell_height').val().trim()) + 'px'; wpbc_options_size += '}'; wpbc_options_arr.push(wpbc_options_size); } // Options: Days number depend on Weekday if (jQuery('#' + shortcode_id + 'wpbc_select_day_weekday_textarea').length > 0) { wpbc_options_size = jQuery('#' + shortcode_id + 'wpbc_select_day_weekday_textarea').val().trim(); if (wpbc_options_size.length > 0) { wpbc_options_arr.push(wpbc_options_size); } } // Options: Days number depend on SEASON if (jQuery('#' + shortcode_id + 'wpbc_select_day_season_textarea').length > 0) { wpbc_options_size = jQuery('#' + shortcode_id + 'wpbc_select_day_season_textarea').val().trim(); if (wpbc_options_size.length > 0) { wpbc_options_arr.push(wpbc_options_size); } } // Options: Start weekday depend on SEASON if (jQuery('#' + shortcode_id + 'wpbc_start_day_season_textarea').length > 0) { wpbc_options_size = jQuery('#' + shortcode_id + 'wpbc_start_day_season_textarea').val().trim(); if (wpbc_options_size.length > 0) { wpbc_options_arr.push(wpbc_options_size); } } // Option: Days number depend on from DATE if (jQuery('#' + shortcode_id + 'wpbc_select_day_fordate_textarea').length > 0) { wpbc_options_size = jQuery('#' + shortcode_id + 'wpbc_select_day_fordate_textarea').val().trim(); if (wpbc_options_size.length > 0) { wpbc_options_arr.push(wpbc_options_size); } } if (wpbc_options_arr.length > 0) { wpbc_shortcode += ' options=\'' + wpbc_options_arr.join(',') + '\''; } } wpbc_shortcode += ']'; jQuery('#wpbc_text_put_in_shortcode').val(wpbc_shortcode); } /** * Open TinyMCE Modal */ function wpbc_tiny_btn_click(tag) { //FixIn: 9.0.1.5 jQuery('#wpbc_tiny_modal').wpbc_my_modal({ keyboard: false, backdrop: true, show: true }); //FixIn: 8.3.3.99 jQuery("#wpbc_text_gettenberg_section_id").val(''); } /** * Open TinyMCE Modal */ function wpbc_tiny_close() { jQuery('#wpbc_tiny_modal').wpbc_my_modal('hide'); //FixIn: 9.0.1.5 } /* ------------------------------------------------------------------------------------------------------------------ */ /** Send Text */ /* ------------------------------------------------------------------------------------------------------------------ */ /** * Send text to editor */ function wpbc_send_text_to_editor(h) { // FixIn: 8.3.3.99 if (typeof wpbc_send_text_to_gutenberg == 'function') { var is_send = wpbc_send_text_to_gutenberg(h); if (true === is_send) { return; } } var ed, mce = typeof tinymce != 'undefined', qt = typeof QTags != 'undefined'; if (!wpActiveEditor) { if (mce && tinymce.activeEditor) { ed = tinymce.activeEditor; wpActiveEditor = ed.id; } else if (!qt) { return false; } } else if (mce) { if (tinymce.activeEditor && (tinymce.activeEditor.id == 'mce_fullscreen' || tinymce.activeEditor.id == 'wp_mce_fullscreen')) ed = tinymce.activeEditor;else ed = tinymce.get(wpActiveEditor); } if (ed && !ed.isHidden()) { // restore caret position on IE if (tinymce.isIE && ed.windowManager.insertimagebookmark) ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark); if (h.indexOf('[caption') !== -1) { if (ed.wpSetImgCaption) h = ed.wpSetImgCaption(h); } else if (h.indexOf('[gallery') !== -1) { if (ed.plugins.wpgallery) h = ed.plugins.wpgallery._do_gallery(h); } else if (h.indexOf('[embed') === 0) { if (ed.plugins.wordpress) h = ed.plugins.wordpress._setEmbed(h); } ed.execCommand('mceInsertContent', false, h); } else if (qt) { QTags.insertContent(h); } else { document.getElementById(wpActiveEditor).value += h; } try { tb_remove(); } catch (e) {} ; } /** * RESOURCES PAGE: Open TinyMCE Modal */ function wpbc_resource_page_btn_click(resource_id) { var shortcode_default_value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; //FixIn: 9.0.1.5 jQuery('#wpbc_tiny_modal').wpbc_my_modal({ keyboard: false, backdrop: true, show: true }); // Disable some options - selection of booking resource - because we configure it only for specific booking resource, where we clicked. var shortcode_arr = ['booking', 'bookingcalendar', 'bookingform']; for (var shortcde_key in shortcode_arr) { var shortcode_id = shortcode_arr[shortcde_key]; jQuery('#' + shortcode_id + '_wpbc_resource_id').prop('disabled', false); jQuery('#' + shortcode_id + "_wpbc_resource_id option[value='" + resource_id + "']").prop('selected', true).trigger('change'); jQuery('#' + shortcode_id + '_wpbc_resource_id').prop('disabled', true); } // Hide left navigation items // jQuery( ".wpbc_shortcode_config_navigation_column .wpbc_settings_navigation_item" ).hide(); jQuery("#wpbc_shortcode_config__nav_tab__booking").show(); jQuery("#wpbc_shortcode_config__nav_tab__bookingcalendar").show(); // Hide | Show Insert button for booking resource page jQuery(".wpbc_tiny_button__insert_to_editor").hide(); jQuery(".wpbc_tiny_button__insert_to_resource").show(); } /** * Get Shortcode Value from shortcode text field in PopUp shortcode Config dialog and insert into DIV and INPUT TEXT field near specific booking resource. * But it takes ID of booking resource, where to insert this shortcode only from 'booking' section of Config Dialog. usually such booking resource disabled there! * e.g.: jQuery( "#booking_wpbc_resource_id" ).val() * * @param shortcode_val */ function wpbc_send_text_to_resource(shortcode_val) { //FixIn: 10.3.0.8 var resource_id = 1; if (jQuery("#booking_wpbc_resource_id").length) { resource_id = jQuery("#booking_wpbc_resource_id").val(); } jQuery('#div_booking_resource_shortcode_' + resource_id).html(shortcode_val); jQuery('#booking_resource_shortcode_' + resource_id).val(shortcode_val); jQuery('#booking_resource_shortcode_' + resource_id).trigger('change'); // Scroll if ('function' === typeof wpbc_scroll_to) { wpbc_scroll_to('#div_booking_resource_shortcode_' + jQuery("#booking_wpbc_resource_id").val()); } } /* R E S E T */ function wpbc_shortcode_config__reset(shortcode_val) { jQuery('#' + shortcode_val + '_wpbc_startmonth_active').prop('checked', false).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_aggregate option:selected').prop('selected', false); jQuery('#' + shortcode_val + '_wpbc_aggregate option:eq(0)').prop('selected', true); jQuery('#' + shortcode_val + '_wpbc_aggregate__bookings_only').prop('checked', false).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_custom_form option:eq(0)').prop('selected', true); jQuery('#' + shortcode_val + '_wpbc_nummonths option:eq(0)').prop('selected', true); jQuery('#' + shortcode_val + '_wpbc_size_enabled').prop('checked', false).trigger('change'); wpbc_shortcode_config__select_day_weekday__reset(shortcode_val + 'wpbc_select_day_weekday'); wpbc_shortcode_config__select_day_season__reset(shortcode_val + 'wpbc_select_day_season'); wpbc_shortcode_config__start_day_season__reset(shortcode_val + 'wpbc_start_day_season'); wpbc_shortcode_config__select_day_fordate__reset(shortcode_val + 'wpbc_select_day_fordate'); // Reset for [bookingselect] shortcode params jQuery('#' + shortcode_val + '_wpbc_multiple_resources option:selected').prop('selected', false); jQuery('#' + shortcode_val + '_wpbc_multiple_resources option:eq(0)').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_selected_resource option:eq(0)').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_text_label').val('').trigger('change'); jQuery('#' + shortcode_val + '_wpbc_first_option_title').val('').trigger('change'); // Reset for [bookingtimeline] shortcode params jQuery('#' + shortcode_val + '_wpbc_text_label_timeline').val('').trigger('change'); jQuery('#' + shortcode_val + '_wpbc_scroll_timeline_scroll_month option[value="0"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_scroll_timeline_scroll_days option[value="0"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_start_date_timeline_active').prop('checked', false).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_start_end_time_timeline_starttime option[value="0"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_start_end_time_timeline_endtime option[value="24"]').prop('selected', true).trigger('change'); jQuery('input[name="' + shortcode_val + '_wpbc_view_mode_timeline_months_num_in_row"][value="30"]').prop('checked', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_start_date_timeline_year option[value="' + new Date().getFullYear() + '"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_start_date_timeline_month option[value="' + (new Date().getMonth() + 1) + '"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_start_date_timeline_day option[value="' + new Date().getDate() + '"]').prop('selected', true).trigger('change'); // Reset for [bookingform] shortcode params jQuery('#' + shortcode_val + '_wpbc_booking_date_year option[value="' + new Date().getFullYear() + '"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_booking_date_month option[value="' + (new Date().getMonth() + 1) + '"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_booking_date_day option[value="' + new Date().getDate() + '"]').prop('selected', true).trigger('change'); // Reset for [[bookingsearch ...] shortcode params jQuery('#' + shortcode_val + '_wpbc_search_new_page_url').val('').trigger('change'); jQuery('#' + shortcode_val + '_wpbc_search_new_page_enabled').prop('checked', false).trigger('change'); // jQuery( '#' + shortcode_val + '_wpbc_search_header' ).val( '' ).trigger('change'); //FixIn: 10.0.0.41 // jQuery( '#' + shortcode_val + '_wpbc_search_nothing_found' ).val( '' ).trigger('change'); jQuery('#' + shortcode_val + '_wpbc_search_for_users').val('').trigger('change'); jQuery('input[name="' + shortcode_val + '_wpbc_search_form_results"][value="bookingsearch"]').prop('checked', true).trigger('change'); // Reset for [bookingedit] , [bookingcustomerlisting] , [bookingresource type=6 show='capacity'] , [booking_confirm] jQuery('input[name="' + shortcode_val + '_wpbc_shortcode_type"][value="booking_confirm"]').prop('checked', true).trigger('change'); // booking_import_ics , booking_listing_ics jQuery('#' + shortcode_val + '_wpbc_url').val('').trigger('change'); jQuery('#' + shortcode_val + '_from option[value="today"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_from_offset').val('').trigger('change'); jQuery('#' + shortcode_val + '_from_offset_type option:eq(0)').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_until option[value="any"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_until_offset').val('').trigger('change'); jQuery('#' + shortcode_val + '_until_offset_type option:eq(0)').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_conditions_import option:eq(0)').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_conditions_events option[value="1"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_conditions_max_num option[value="0"]').prop('selected', true).trigger('change'); jQuery('#' + shortcode_val + '_silence option[value="0"]').prop('selected', true).trigger('change'); } /* ------------------------------------------------------------------------------------------------------------------ */ /** * SHORTCODE_CONFIG * */ /* ------------------------------------------------------------------------------------------------------------------ */ /** * When click on menu item in "Left Vertical Navigation" panel in shortcode config popup */ function wpbc_shortcode_config_click_show_section(_this, section_id_to_show, shortcode_name) { // Menu jQuery(_this).parents('.wpbc_settings_flex_container').find('.wpbc_settings_navigation_item_active').removeClass('wpbc_settings_navigation_item_active'); jQuery(_this).parents('.wpbc_settings_navigation_item').addClass('wpbc_settings_navigation_item_active'); // Content jQuery(_this).parents('.wpbc_settings_flex_container').find('.wpbc_sc_container__shortcode').hide(); jQuery(section_id_to_show).show(); // Scroll if ('function' === typeof wpbc_scroll_to) { wpbc_scroll_to(section_id_to_show); } // Set - Shortcode Type jQuery('#wpbc_shortcode_type').val(shortcode_name); // Parse shortcode params wpbc_set_shortcode(); } /** * Do Next / Prior step * @param _this button this * @param step 'prior' | 'next' */ function wpbc_shortcode_config_content_toolbar__next_prior(_this, step) { var j_work_nav_tab; var submenu_selected = jQuery(_this).parents('.wpbc_sc_container__shortcode').find('.wpbc_sc_container__shortcode_section:visible').find('.wpdevelop-submenu-tab-selected:visible'); if (submenu_selected.length) { if ('next' === step) { j_work_nav_tab = submenu_selected.nextAll('a.nav-tab:visible').first(); } else { j_work_nav_tab = submenu_selected.prevAll('a.nav-tab:visible').first(); } if (j_work_nav_tab.length) { j_work_nav_tab.trigger('click'); return; } } if ('next' === step) { j_work_nav_tab = jQuery(_this).parents('.wpbc_sc_container__shortcode').find('.nav-tab.nav-tab-active:visible').nextAll('a.nav-tab:visible').first(); } else { j_work_nav_tab = jQuery(_this).parents('.wpbc_sc_container__shortcode').find('.nav-tab.nav-tab-active:visible').prevAll('a.nav-tab:visible').first(); } if (j_work_nav_tab.length) { j_work_nav_tab.trigger('click'); } } /** * Condition: {select-day condition="weekday" for="5" value="3"} */ function wpbc_shortcode_config__select_day_weekday__add(id) { var condition_rule_arr = []; for (var weekday_num = 0; weekday_num < 8; weekday_num++) { if (jQuery('#' + id + '__weekday_' + weekday_num).is(':checked')) { var days_to_select = jQuery('#' + id + '__days_number_' + weekday_num).val().trim(); // Remove all words except digits and , and - days_to_select = days_to_select.replace(/[^0-9,-]/g, ''); days_to_select = days_to_select.replace(/[,]{2,}/g, ','); days_to_select = days_to_select.replace(/[-]{2,}/g, '-'); jQuery('#' + id + '__days_number_' + weekday_num).val(days_to_select); if ('' !== days_to_select) { condition_rule_arr.push('{select-day condition="weekday" for="' + weekday_num + '" value="' + days_to_select + '"}'); } else { // Red highlight fields, if some required fields are empty if ('function' === typeof wpbc_field_highlight && '' === jQuery('#' + id + '__days_number_' + weekday_num).val()) { wpbc_field_highlight('#' + id + '__days_number_' + weekday_num); } } } } var condition_rule = condition_rule_arr.join(','); jQuery('#' + id + '_textarea').val(condition_rule); wpbc_set_shortcode(); } function wpbc_shortcode_config__select_day_weekday__reset(id) { for (var weekday_num = 0; weekday_num < 8; weekday_num++) { jQuery('#' + id + '__days_number_' + weekday_num).val(''); if (jQuery('#' + id + '__weekday_' + weekday_num).is(':checked')) { jQuery('#' + id + '__weekday_' + weekday_num).prop('checked', false); } } jQuery('#' + id + '_textarea').val(''); wpbc_set_shortcode(); } /** * Condition: {select-day condition="season" for="High season" value="7-14,20"} */ function wpbc_shortcode_config__select_day_season__add(id) { var season_filter_name = jQuery('#' + id + '__season_filter_name option:selected').text().trim(); // Escape quote symbols season_filter_name = season_filter_name.replace(/[\""]/g, '\\"'); var days_number = jQuery('#' + id + '__days_number').val().trim(); // Remove all words except digits and , and - days_number = days_number.replace(/[^0-9,-]/g, ''); days_number = days_number.replace(/[,]{2,}/g, ','); days_number = days_number.replace(/[-]{2,}/g, '-'); jQuery('#' + id + '__days_number').val(days_number); if ('' != days_number && '' != season_filter_name && 0 != jQuery('#' + id + '__season_filter_name').val()) { var exist_configuration = jQuery('#' + id + '_textarea').val(); exist_configuration = exist_configuration.replaceAll("},{", '}~~{'); var condition_rule_arr = exist_configuration.split('~~'); // Remove empty spaces from array : '' | "" condition_rule_arr = condition_rule_arr.filter(function (n) { return n; }); condition_rule_arr.push('{select-day condition="season" for="' + season_filter_name + '" value="' + days_number + '"}'); // Remove duplicates from the array condition_rule_arr = condition_rule_arr.filter(function (item, pos) { return condition_rule_arr.indexOf(item) === pos; }); var condition_rule = condition_rule_arr.join(','); jQuery('#' + id + '_textarea').val(condition_rule); wpbc_set_shortcode(); } // Red highlight fields, if some required fields are empty if ('function' === typeof wpbc_field_highlight && '' === jQuery('#' + id + '__days_number').val()) { wpbc_field_highlight('#' + id + '__days_number'); } if ('function' === typeof wpbc_field_highlight && '0' === jQuery('#' + id + '__season_filter_name').val()) { wpbc_field_highlight('#' + id + '__season_filter_name'); } } function wpbc_shortcode_config__select_day_season__reset(id) { jQuery('#' + id + '__season_filter_name option:eq(0)').prop('selected', true); jQuery('#' + id + '__days_number').val(''); jQuery('#' + id + '_textarea').val(''); wpbc_set_shortcode(); } /** * Condition: {start-day condition="season" for="Low season" value="0,1,5"} */ function wpbc_shortcode_config__start_day_season__add(id) { var season_filter_name = jQuery('#' + id + '__season_filter_name option:selected').text().trim(); // Escape quote symbols season_filter_name = season_filter_name.replace(/[\""]/g, '\\"'); if ('' != season_filter_name && 0 != jQuery('#' + id + '__season_filter_name').val()) { var activated_weekdays = []; for (var weekday_num = 0; weekday_num < 8; weekday_num++) { if (jQuery('#' + id + '__weekday_' + weekday_num).is(':checked')) { activated_weekdays.push(weekday_num); } } activated_weekdays = activated_weekdays.join(','); if ('' != activated_weekdays) { var exist_configuration = jQuery('#' + id + '_textarea').val(); exist_configuration = exist_configuration.replaceAll("},{", '}~~{'); var condition_rule_arr = exist_configuration.split('~~'); // Remove empty spaces from array : '' | "" condition_rule_arr = condition_rule_arr.filter(function (n) { return n; }); condition_rule_arr.push('{start-day condition="season" for="' + season_filter_name + '" value="' + activated_weekdays + '"}'); // Remove duplicates from the array condition_rule_arr = condition_rule_arr.filter(function (item, pos) { return condition_rule_arr.indexOf(item) === pos; }); var condition_rule = condition_rule_arr.join(','); jQuery('#' + id + '_textarea').val(condition_rule); wpbc_set_shortcode(); } } // Red highlight fields, if some required fields are empty if ('function' === typeof wpbc_field_highlight && '0' === jQuery('#' + id + '__season_filter_name').val()) { wpbc_field_highlight('#' + id + '__season_filter_name'); } } function wpbc_shortcode_config__start_day_season__reset(id) { jQuery('#' + id + '__season_filter_name option:eq(0)').prop('selected', true); for (var weekday_num = 0; weekday_num < 8; weekday_num++) { if (jQuery('#' + id + '__weekday_' + weekday_num).is(':checked')) { jQuery('#' + id + '__weekday_' + weekday_num).prop('checked', false); } } jQuery('#' + id + '_textarea').val(''); wpbc_set_shortcode(); } /** * Condition: {select-day condition="date" for="2023-10-01" value="20,25,30-35"} */ function wpbc_shortcode_config__select_day_fordate__add(id) { var start_date__fordate = jQuery('#' + id + '__date').val().trim(); // Remove all words except digits and , and - start_date__fordate = start_date__fordate.replace(/[^0-9-]/g, ''); var globalRegex = new RegExp(/^\d{4}-[01]{1}\d{1}-[0123]{1}\d{1}$/, 'g'); var is_valid_date = globalRegex.test(start_date__fordate); if (!is_valid_date) { start_date__fordate = ''; } jQuery('#' + id + '__date').val(start_date__fordate); var days_number = jQuery('#' + id + '__days_number').val().trim(); // Remove all words except digits and , and - days_number = days_number.replace(/[^0-9,-]/g, ''); days_number = days_number.replace(/[,]{2,}/g, ','); days_number = days_number.replace(/[-]{2,}/g, '-'); jQuery('#' + id + '__days_number').val(days_number); if ('' != days_number && '' != start_date__fordate && 0 != jQuery('#' + id + '__season_filter_name').val()) { var exist_configuration = jQuery('#' + id + '_textarea').val(); exist_configuration = exist_configuration.replaceAll("},{", '}~~{'); var condition_rule_arr = exist_configuration.split('~~'); // Remove empty spaces from array : '' | "" condition_rule_arr = condition_rule_arr.filter(function (n) { return n; }); condition_rule_arr.push('{select-day condition="date" for="' + start_date__fordate + '" value="' + days_number + '"}'); // Remove duplicates from the array condition_rule_arr = condition_rule_arr.filter(function (item, pos) { return condition_rule_arr.indexOf(item) === pos; }); var condition_rule = condition_rule_arr.join(','); jQuery('#' + id + '_textarea').val(condition_rule); wpbc_set_shortcode(); } else // Red highlight fields, if some required fields are empty if ('function' === typeof wpbc_field_highlight && '' === jQuery('#' + id + '__date').val()) { wpbc_field_highlight('#' + id + '__date'); } if ('function' === typeof wpbc_field_highlight && '' === jQuery('#' + id + '__days_number').val()) { wpbc_field_highlight('#' + id + '__days_number'); } } function wpbc_shortcode_config__select_day_fordate__reset(id) { jQuery('#' + id + '__date').val(''); jQuery('#' + id + '__days_number').val(''); jQuery('#' + id + '_textarea').val(''); wpbc_set_shortcode(); } function wpbc_shortcode_config__update_elements_in_timeline() { var wpbc_is_matrix = false; if (jQuery('#bookingtimeline_wpbc_multiple_resources').length > 0) { var bookingtimeline_wpbc_multiple_resources_temp = jQuery('#bookingtimeline_wpbc_multiple_resources').val(); if (bookingtimeline_wpbc_multiple_resources_temp != null && bookingtimeline_wpbc_multiple_resources_temp.length > 0) { jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row']").prop("disabled", false); jQuery(".wpbc_sc_container__shortcode_bookingtimeline label.wpbc-form-radio").show(); if (bookingtimeline_wpbc_multiple_resources_temp.length > 1 || bookingtimeline_wpbc_multiple_resources_temp.length == 1 && bookingtimeline_wpbc_multiple_resources_temp[0] == '0') { // Matrix wpbc_is_matrix = true; jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='90']").prop("disabled", true); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='90']").parents('.wpbc-form-radio').hide(); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='365']").prop("disabled", true); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='365']").parents('.wpbc-form-radio').hide(); } else { // Single jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='1']").prop("disabled", true); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='1']").parents('.wpbc-form-radio').hide(); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='7']").prop("disabled", true); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='7']").parents('.wpbc-form-radio').hide(); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='60']").prop("disabled", true); jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='60']").parents('.wpbc-form-radio').hide(); } if (jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row']:checked").is(':disabled')) { jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row'][value='30']").prop("checked", true); } } } var view_days_num_temp = 30; if (jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row']:checked").length > 0) { var view_days_num_temp = parseInt(jQuery("input[name='bookingtimeline_wpbc_view_mode_timeline_months_num_in_row']:checked").val().trim()); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Hide or Show Scrolling Days and Months, depending on from type of view and number of booking resources //////////////////////////////////////////////////////////////////////////////////////////////////////////////// jQuery("#wpbc_bookingtimeline_scroll_month,#wpbc_bookingtimeline_scroll_day").prop("disabled", false); jQuery(".wpbc_bookingtimeline_scroll_month,.wpbc_bookingtimeline_scroll_day").show(); // Matrix ////////////////////////////////////////////// if (wpbc_is_matrix && (view_days_num_temp == 1 || view_days_num_temp == 7) // Day | Week view ) { jQuery("#wpbc_bookingtimeline_scroll_month").prop("disabled", true); // Scroll Month NOT working jQuery('.wpbc_bookingtimeline_scroll_month').hide(); } if (wpbc_is_matrix && (view_days_num_temp == 30 || view_days_num_temp == 60) // Month view ) { jQuery("#wpbc_bookingtimeline_scroll_day").prop("disabled", true); // Scroll Days NOT working jQuery('.wpbc_bookingtimeline_scroll_day').hide(); } // Single ////////////////////////////////////////////// if (!wpbc_is_matrix && (view_days_num_temp == 30 || view_days_num_temp == 90) // Month | 3 Months view (like week view) ) { jQuery("#wpbc_bookingtimeline_scroll_month").prop("disabled", true); // Scroll Month NOT working jQuery('.wpbc_bookingtimeline_scroll_month').hide(); } if (!wpbc_is_matrix && view_days_num_temp == 365 // Year view ) { jQuery("#wpbc_bookingtimeline_scroll_day").prop("disabled", true); // Scroll Days NOT working jQuery('.wpbc_bookingtimeline_scroll_day').hide(); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// return [wpbc_is_matrix, view_days_num_temp]; } jQuery(document).ready(function () { // ----------------------------------------------------------------------------------------------------- // [booking ... ] var shortcode_arr = ['booking', 'bookingcalendar', 'bookingselect', 'bookingtimeline', 'bookingform', 'bookingsearch', 'bookingother', 'booking_import_ics', 'booking_listing_ics']; for (var shortcde_key in shortcode_arr) { var id = shortcode_arr[shortcde_key]; // ------------------------------------------------------------------------------------------------------------- // Hide by Size sections // ------------------------------------------------------------------------------------------------------------- jQuery('.' + id + '_wpbc_size_wpbc_sc_calendar_size').hide(); // options :: Show / Hide SIZE calendar section jQuery('#' + id + '_wpbc_size_enabled').on('change', { 'id': id }, function (event) { if (jQuery('#' + event.data.id + '_wpbc_size_enabled').is(':checked')) { jQuery('.' + event.data.id + '_wpbc_size_wpbc_sc_calendar_size').show(); } else { jQuery('.' + event.data.id + '_wpbc_size_wpbc_sc_calendar_size').hide(); } }); // If we changed number of months in 'Setup Size & Structure' then change general 'Visible months' number //FixIn: 10.0.0.4 jQuery('#' + id + '_wpbc_size_months_num_in_row' // - Month Num in Row ).on('change', { 'id': id }, function (event) { jQuery('#' + event.data.id + '_wpbc_nummonths option[value="' + parseInt(jQuery('#' + event.data.id + '_wpbc_size_months_num_in_row').val().trim()) + '"]').prop('selected', true); //.trigger('change'); if ('function' === typeof wpbc_field_highlight) { wpbc_field_highlight('#' + event.data.id + '_wpbc_nummonths'); } }); // ------------------------------------------------------------------------------------------------------------- // Update Shortcode on changing: Size // ------------------------------------------------------------------------------------------------------------- jQuery('#' + id + '_wpbc_size_enabled' // Size On | Off + ',#' + id + '_wpbc_size_months_num_in_row' // - Month Num in Row + ',#' + id + '_wpbc_size_calendar_width' // - Width + ',#' + id + '_wpbc_size_calendar_width_px_pr' // - Width PS | % + ',#' + id + '_wpbc_size_calendar_cell_height' // - Cell Height + ',#' + id + 'wpbc_select_day_weekday_textarea' // Rule Weekday + ',#' + id + 'wpbc_select_day_season_textarea' // Rule Season + ',#' + id + 'wpbc_start_day_season_textarea' // Rule Season - Start day + ',#' + id + 'wpbc_select_day_fordate_textarea' // Rule Date + ',#' + id + '_wpbc_resource_id' // Resource ID + ',#' + id + '_wpbc_custom_form' // Custom Form + ',#' + id + '_wpbc_nummonths' // Num Months + ',#' + id + '_wpbc_startmonth_active' // Start Month Enable + ',#' + id + '_wpbc_startmonth_year' // - Year + ',#' + id + '_wpbc_startmonth_month' // - Month + ',#' + id + '_wpbc_aggregate' // Aggregate + ',#' + id + '_wpbc_aggregate__bookings_only' // aggregate option + ',#' + id + '_wpbc_multiple_resources' // [bookingselect] - Multiple Resources + ',#' + id + '_wpbc_selected_resource' // [bookingselect] - Selected Resource + ',#' + id + '_wpbc_text_label' // [bookingselect] - Label + ',#' + id + '_wpbc_first_option_title' // [bookingselect] - First Option // TimeLine + ",input[name='" + id + "_wpbc_view_mode_timeline_months_num_in_row']" + ',#' + id + '_wpbc_text_label_timeline' + ',#' + id + '_wpbc_scroll_timeline_scroll_days' + ',#' + id + '_wpbc_scroll_timeline_scroll_month' + ',#' + id + '_wpbc_start_date_timeline_active' + ',#' + id + '_wpbc_start_date_timeline_year' + ',#' + id + '_wpbc_start_date_timeline_month' + ',#' + id + '_wpbc_start_date_timeline_day' + ',#' + id + '_wpbc_start_end_time_timeline_starttime' + ',#' + id + '_wpbc_start_end_time_timeline_endtime' // Form Only + ',#' + id + '_wpbc_booking_date_year' + ',#' + id + '_wpbc_booking_date_month' + ',#' + id + '_wpbc_booking_date_day' // [bookingsearch ...] + ",input[name='" + id + "_wpbc_search_form_results']" + ',#' + id + '_wpbc_search_new_page_enabled' + ',#' + id + '_wpbc_search_new_page_url' // +',#' + id + '_wpbc_search_header' //FixIn: 10.0.0.41 // +',#' + id + '_wpbc_search_nothing_found' + ',#' + id + '_wpbc_search_for_users' // [bookingother ... ] + ",input[name='" + id + "_wpbc_shortcode_type']" + ',#' + id + '_wpbc_resource_show' //booking_import_ics , booking_listing_ics + ',#' + id + '_wpbc_url' + ',#' + id + '_from' + ',#' + id + '_from_offset' + ',#' + id + '_from_offset_type' + ',#' + id + '_until' + ',#' + id + '_until_offset' + ',#' + id + '_until_offset_type' + ',#' + id + '_conditions_import' + ',#' + id + '_conditions_events' + ',#' + id + '_conditions_max_num' + ',#' + id + '_silence').on('change', { 'id': id }, function (event) { //console.log( 'on change wpbc_set_shortcode', event.data.id ); wpbc_set_shortcode(); }); } // ----------------------------------------------------------------------------------------------------- wpbc_set_shortcode(); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvdWlfbW9kYWxfX3Nob3J0Y29kZXMvX291dC93cGJjX3Nob3J0Y29kZV9wb3B1cC5qcyIsIm5hbWVzIjpbIndwYmNfc2V0X3Nob3J0Y29kZSIsIndwYmNfc2hvcnRjb2RlIiwic2hvcnRjb2RlX2lkIiwialF1ZXJ5IiwidmFsIiwidHJpbSIsIndwYmNfb3B0aW9uc19hcnIiLCJsZW5ndGgiLCJtdWx0aXBsZV9yZXNvdXJjZXMiLCJmaWx0ZXIiLCJuIiwicGFyc2VJbnQiLCJqb2luIiwicmVwbGFjZSIsIndwYmNfaXNfbWF0cml4X192aWV3X2RheXNfbnVtX3RlbXAiLCJ3cGJjX3Nob3J0Y29kZV9jb25maWdfX3VwZGF0ZV9lbGVtZW50c19pbl90aW1lbGluZSIsIndwYmNfaXNfbWF0cml4Iiwidmlld19kYXlzX251bV90ZW1wIiwiaGVhZGVyX3RpdGxlX3RlbXAiLCJpcyIsImhpZGUiLCJzaG93Iiwidmlld190aW1lc19zdGFydF90ZW1wIiwidmlld190aW1lc19lbmRfdGVtcCIsIndwYmNfc2VsZWN0ZWRfZGF5Iiwid3BiY19zZWxlY3RlZF9tb250aCIsIndwYmNfc2VhcmNoX2Zvcm1fcmVzdWx0cyIsInNlYXJjaF9yZXN1bHRzX3VybF90ZW1wIiwib25seV9mb3JfdXNlcnNfdGVtcCIsImJvb2tpbmdvdGhlcl9zaG9ydGNvZGVfdHlwZSIsInNob3J0Y29kZV91cmxfdGVtcCIsInBfZnJvbSIsInBfZnJvbV9vZmZzZXQiLCJpc05hTiIsImNoYXJBdCIsInBfdW50aWwiLCJwX3VudGlsX29mZnNldCIsInBfbWF4IiwicF9pc19hbGxfZGF0ZXNfaW4iLCJwX2ltcG9ydF9jb25kaXRpb25zIiwiZm9ybV90eXBlX3RlbXAiLCJ3cGJjX2FnZ3JlZ2F0ZV90ZW1wIiwicHVzaCIsIndwYmNfb3B0aW9uc19zaXplIiwiTWF0aCIsIm1pbiIsIndwYmNfdGlueV9idG5fY2xpY2siLCJ0YWciLCJ3cGJjX215X21vZGFsIiwia2V5Ym9hcmQiLCJiYWNrZHJvcCIsIndwYmNfdGlueV9jbG9zZSIsIndwYmNfc2VuZF90ZXh0X3RvX2VkaXRvciIsImgiLCJ3cGJjX3NlbmRfdGV4dF90b19ndXRlbmJlcmciLCJpc19zZW5kIiwiZWQiLCJtY2UiLCJ0aW55bWNlIiwicXQiLCJRVGFncyIsIndwQWN0aXZlRWRpdG9yIiwiYWN0aXZlRWRpdG9yIiwiaWQiLCJnZXQiLCJpc0hpZGRlbiIsImlzSUUiLCJ3aW5kb3dNYW5hZ2VyIiwiaW5zZXJ0aW1hZ2Vib29rbWFyayIsInNlbGVjdGlvbiIsIm1vdmVUb0Jvb2ttYXJrIiwiaW5kZXhPZiIsIndwU2V0SW1nQ2FwdGlvbiIsInBsdWdpbnMiLCJ3cGdhbGxlcnkiLCJfZG9fZ2FsbGVyeSIsIndvcmRwcmVzcyIsIl9zZXRFbWJlZCIsImV4ZWNDb21tYW5kIiwiaW5zZXJ0Q29udGVudCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ2YWx1ZSIsInRiX3JlbW92ZSIsImUiLCJ3cGJjX3Jlc291cmNlX3BhZ2VfYnRuX2NsaWNrIiwicmVzb3VyY2VfaWQiLCJzaG9ydGNvZGVfZGVmYXVsdF92YWx1ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNob3J0Y29kZV9hcnIiLCJzaG9ydGNkZV9rZXkiLCJwcm9wIiwidHJpZ2dlciIsIndwYmNfc2VuZF90ZXh0X3RvX3Jlc291cmNlIiwic2hvcnRjb2RlX3ZhbCIsImh0bWwiLCJ3cGJjX3Njcm9sbF90byIsIndwYmNfc2hvcnRjb2RlX2NvbmZpZ19fcmVzZXQiLCJ3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfd2Vla2RheV9fcmVzZXQiLCJ3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfc2Vhc29uX19yZXNldCIsIndwYmNfc2hvcnRjb2RlX2NvbmZpZ19fc3RhcnRfZGF5X3NlYXNvbl9fcmVzZXQiLCJ3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfZm9yZGF0ZV9fcmVzZXQiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJ3cGJjX3Nob3J0Y29kZV9jb25maWdfY2xpY2tfc2hvd19zZWN0aW9uIiwiX3RoaXMiLCJzZWN0aW9uX2lkX3RvX3Nob3ciLCJzaG9ydGNvZGVfbmFtZSIsInBhcmVudHMiLCJmaW5kIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsIndwYmNfc2hvcnRjb2RlX2NvbmZpZ19jb250ZW50X3Rvb2xiYXJfX25leHRfcHJpb3IiLCJzdGVwIiwial93b3JrX25hdl90YWIiLCJzdWJtZW51X3NlbGVjdGVkIiwibmV4dEFsbCIsImZpcnN0IiwicHJldkFsbCIsIndwYmNfc2hvcnRjb2RlX2NvbmZpZ19fc2VsZWN0X2RheV93ZWVrZGF5X19hZGQiLCJjb25kaXRpb25fcnVsZV9hcnIiLCJ3ZWVrZGF5X251bSIsImRheXNfdG9fc2VsZWN0Iiwid3BiY19maWVsZF9oaWdobGlnaHQiLCJjb25kaXRpb25fcnVsZSIsIndwYmNfc2hvcnRjb2RlX2NvbmZpZ19fc2VsZWN0X2RheV9zZWFzb25fX2FkZCIsInNlYXNvbl9maWx0ZXJfbmFtZSIsInRleHQiLCJkYXlzX251bWJlciIsImV4aXN0X2NvbmZpZ3VyYXRpb24iLCJyZXBsYWNlQWxsIiwic3BsaXQiLCJpdGVtIiwicG9zIiwid3BiY19zaG9ydGNvZGVfY29uZmlnX19zdGFydF9kYXlfc2Vhc29uX19hZGQiLCJhY3RpdmF0ZWRfd2Vla2RheXMiLCJ3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfZm9yZGF0ZV9fYWRkIiwic3RhcnRfZGF0ZV9fZm9yZGF0ZSIsImdsb2JhbFJlZ2V4IiwiUmVnRXhwIiwiaXNfdmFsaWRfZGF0ZSIsInRlc3QiLCJib29raW5ndGltZWxpbmVfd3BiY19tdWx0aXBsZV9yZXNvdXJjZXNfdGVtcCIsInJlYWR5Iiwib24iLCJldmVudCIsImRhdGEiXSwic291cmNlcyI6WyJpbmNsdWRlcy91aV9tb2RhbF9fc2hvcnRjb2Rlcy9fc3JjL3dwYmNfc2hvcnRjb2RlX3BvcHVwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBTaG9ydGNvZGUgQ29uZmlnIC0gTWFpbiBMb29wXHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX3NldF9zaG9ydGNvZGUoKXtcclxuXHJcbiAgICB2YXIgd3BiY19zaG9ydGNvZGUgPSAnWyc7XHJcbiAgICB2YXIgc2hvcnRjb2RlX2lkID0galF1ZXJ5KCAnI3dwYmNfc2hvcnRjb2RlX3R5cGUnICkudmFsKCkudHJpbSgpO1xyXG5cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAvLyBbYm9va2luZ10gIHwgW2Jvb2tpbmdjYWxlbmRhcl0gfCAuLi5cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAgICAgICggJ2Jvb2tpbmcnID09PSBzaG9ydGNvZGVfaWQgKVxyXG4gICAgICAgIHx8ICggJ2Jvb2tpbmdjYWxlbmRhcicgPT09IHNob3J0Y29kZV9pZCApXHJcbiAgICAgICAgfHwgKCAnYm9va2luZ3NlbGVjdCcgPT09IHNob3J0Y29kZV9pZCApXHJcbiAgICAgICAgfHwgKCAnYm9va2luZ3RpbWVsaW5lJyA9PT0gc2hvcnRjb2RlX2lkIClcclxuICAgICAgICB8fCAoICdib29raW5nZm9ybScgPT09IHNob3J0Y29kZV9pZCApXHJcbiAgICAgICAgfHwgKCAnYm9va2luZ3NlYXJjaCcgPT09IHNob3J0Y29kZV9pZCApXHJcbiAgICAgICAgfHwgKCAnYm9va2luZ290aGVyJyA9PT0gc2hvcnRjb2RlX2lkIClcclxuXHJcbiAgICAgICAgfHwgKCAnYm9va2luZ19pbXBvcnRfaWNzJyA9PT0gc2hvcnRjb2RlX2lkIClcclxuICAgICAgICB8fCAoICdib29raW5nX2xpc3RpbmdfaWNzJyA9PT0gc2hvcnRjb2RlX2lkIClcclxuICAgICl7XHJcblxyXG4gICAgICAgIHdwYmNfc2hvcnRjb2RlICs9IHNob3J0Y29kZV9pZDtcclxuXHJcbiAgICAgICAgdmFyIHdwYmNfb3B0aW9uc19hcnIgPSBbXTtcclxuXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIC8vIFtib29raW5nc2VsZWN0XSB8IFtib29raW5ndGltZWxpbmVdIC0gT3B0aW9ucyByZWxhdGl2ZSBvbmx5IHRvIHRoaXMgc2hvcnRjb2RlLlxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICggJ2Jvb2tpbmdzZWxlY3QnID09PSBzaG9ydGNvZGVfaWQgKVxyXG4gICAgICAgICAgICB8fCAoICdib29raW5ndGltZWxpbmUnID09PSBzaG9ydGNvZGVfaWQgKVxyXG4gICAgICAgICl7XHJcblxyXG4gICAgICAgICAgICAvLyBbYm9va2luZ3NlbGVjdCB0eXBlPScxLDIsMyddIC0gTXVsdGlwbGUgUmVzb3VyY2VzXHJcbiAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzJyApLmxlbmd0aCA+IDAgKXtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgbXVsdGlwbGVfcmVzb3VyY2VzID0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzJyApLnZhbCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICggKG11bHRpcGxlX3Jlc291cmNlcyAhPSBudWxsKSAmJiAobXVsdGlwbGVfcmVzb3VyY2VzLmxlbmd0aCA+IDApICl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlbXB0eSBzcGFjZXMgZnJvbSAgYXJyYXkgOiAnJyB8IFwiXCIgfCAwXHJcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVfcmVzb3VyY2VzID0gbXVsdGlwbGVfcmVzb3VyY2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gcGFyc2VJbnQobik7IH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZV9yZXNvdXJjZXMgPSBtdWx0aXBsZV9yZXNvdXJjZXMuam9pbiggJywnICkudHJpbSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIG11bHRpcGxlX3Jlc291cmNlcyAhPSAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgdHlwZT1cXCcnICsgbXVsdGlwbGVfcmVzb3VyY2VzICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBbYm9va2luZ3NlbGVjdCBzZWxlY3RlZF90eXBlPTFdIC0gU2VsZWN0ZWQgUmVzb3VyY2VcclxuICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zZWxlY3RlZF9yZXNvdXJjZScgKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zZWxlY3RlZF9yZXNvdXJjZScgKS52YWwoKSAhPT0gbnVsbCApICAgICAgICAgICAgICAgICAgICAgIC8vRml4SW46IDguMi4xLjEyXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgKCBwYXJzZUludCggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2VsZWN0ZWRfcmVzb3VyY2UnICkudmFsKCkgKSA+IDAgKVxyXG4gICAgICAgICAgICAgICAgKXtcclxuICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHNlbGVjdGVkX3R5cGU9JyArIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NlbGVjdGVkX3Jlc291cmNlJyApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gW2Jvb2tpbmdzZWxlY3QgbGFiZWw9J1RhZGEnXSAtIExhYmVsXHJcbiAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfdGV4dF9sYWJlbCcgKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICBpZiAoICcnICE9PSBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY190ZXh0X2xhYmVsJyApLnZhbCgpLnRyaW0oKSApe1xyXG4gICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgbGFiZWw9XFwnJyArIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3RleHRfbGFiZWwnICkudmFsKCkudHJpbSgpLnJlcGxhY2UoIC8nL2dpLCAnJyApICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFtib29raW5nc2VsZWN0IGZpcnN0X29wdGlvbl90aXRsZT0nVGFkYSddIC0gRmlyc3QgIE9wdGlvblxyXG4gICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX2ZpcnN0X29wdGlvbl90aXRsZScgKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICBpZiAoICcnICE9PSBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19maXJzdF9vcHRpb25fdGl0bGUnICkudmFsKCkudHJpbSgpICl7XHJcbiAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBmaXJzdF9vcHRpb25fdGl0bGU9XFwnJyArIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX2ZpcnN0X29wdGlvbl90aXRsZScgKS52YWwoKS50cmltKCkucmVwbGFjZSggLycvZ2ksICcnICkgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICAvLyBbYm9va2luZ3RpbWVsaW5lXSAtIE9wdGlvbnMgcmVsYXRpdmUgb25seSB0byB0aGlzIHNob3J0Y29kZS5cclxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAgaWYgKCAnYm9va2luZ3RpbWVsaW5lJyA9PT0gc2hvcnRjb2RlX2lkICl7XHJcbiAgICAgICAgICAgIC8vIFZpc3VhbGx5IHVwZGF0ZVxyXG4gICAgICAgICAgICB2YXIgd3BiY19pc19tYXRyaXhfX3ZpZXdfZGF5c19udW1fdGVtcCA9IHdwYmNfc2hvcnRjb2RlX2NvbmZpZ19fdXBkYXRlX2VsZW1lbnRzX2luX3RpbWVsaW5lKCk7XHJcbiAgICAgICAgICAgIHZhciB3cGJjX2lzX21hdHJpeCA9IHdwYmNfaXNfbWF0cml4X192aWV3X2RheXNfbnVtX3RlbXBbIDAgXTtcclxuICAgICAgICAgICAgdmFyIHZpZXdfZGF5c19udW1fdGVtcCA9IHdwYmNfaXNfbWF0cml4X192aWV3X2RheXNfbnVtX3RlbXBbIDEgXTtcclxuXHJcbiAgICAgICAgICAgIC8vIDogdmlld19kYXlzX251bVxyXG4gICAgICAgICAgICBpZiAoIHZpZXdfZGF5c19udW1fdGVtcCAhPSAzMCApe1xyXG4gICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyB2aWV3X2RheXNfbnVtPScgKyB2aWV3X2RheXNfbnVtX3RlbXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gOiBoZWFkZXJfdGl0bGVcclxuICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY190ZXh0X2xhYmVsX3RpbWVsaW5lJyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgIHZhciBoZWFkZXJfdGl0bGVfdGVtcCA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3RleHRfbGFiZWxfdGltZWxpbmUnICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyX3RpdGxlX3RlbXAgPSBoZWFkZXJfdGl0bGVfdGVtcC5yZXBsYWNlKCAvJy9naSwgJycgKTtcclxuICAgICAgICAgICAgICAgIGlmICggaGVhZGVyX3RpdGxlX3RlbXAgIT0gJycgKXtcclxuICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIGhlYWRlcl90aXRsZT1cXCcnICsgaGVhZGVyX3RpdGxlX3RlbXAgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyA6IHNjcm9sbF9tb250aFxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAoICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2Nyb2xsX3RpbWVsaW5lX3Njcm9sbF9tb250aCcgKS5pcyggJzp2aXNpYmxlJyApKVxyXG4gICAgICAgICAgICAgICAgJiYgKCAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3Njcm9sbF90aW1lbGluZV9zY3JvbGxfbW9udGgnICkubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgICYmIChwYXJzZUludCggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2Nyb2xsX3RpbWVsaW5lX3Njcm9sbF9tb250aCcgKS52YWwoKS50cmltKCkgKSAhPT0gMClcclxuICAgICAgICAgICAgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgc2Nyb2xsX21vbnRoPScgKyBwYXJzZUludCggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2Nyb2xsX3RpbWVsaW5lX3Njcm9sbF9tb250aCcgKS52YWwoKS50cmltKCkgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyA6IHNjcm9sbF9kYXlcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgKCAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3Njcm9sbF90aW1lbGluZV9zY3JvbGxfZGF5cycgKS5pcyggJzp2aXNpYmxlJyApKVxyXG4gICAgICAgICAgICAgICAgJiYgKCAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3Njcm9sbF90aW1lbGluZV9zY3JvbGxfZGF5cycgKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgJiYgKHBhcnNlSW50KCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zY3JvbGxfdGltZWxpbmVfc2Nyb2xsX2RheXMnICkudmFsKCkudHJpbSgpICkgIT09IDApXHJcbiAgICAgICAgICAgICl7XHJcbiAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHNjcm9sbF9kYXk9JyArIHBhcnNlSW50KCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zY3JvbGxfdGltZWxpbmVfc2Nyb2xsX2RheXMnICkudmFsKCkudHJpbSgpICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIDpsaW1pdF9ob3Vyc1xyXG4gICAgICAgICAgICAvL0ZpeEluOiA3LjAuMS4xN1xyXG4gICAgICAgICAgICBqUXVlcnkoICcuYm9va2luZ3RpbWVsaW5lX3ZpZXdfdGltZXMnICkuaGlkZSgpO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAoICggd3BiY19pc19tYXRyaXggKSAmJiAoIHZpZXdfZGF5c19udW1fdGVtcCA9PSAxICkgKVxyXG4gICAgICAgICAgICAgICAgfHwgKCAoICEgd3BiY19pc19tYXRyaXggKSAmJiAoIHZpZXdfZGF5c19udW1fdGVtcCA9PSAzMCApIClcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcuYm9va2luZ3RpbWVsaW5lX3ZpZXdfdGltZXMnICkuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdfdGltZXNfc3RhcnRfdGVtcCA9IHBhcnNlSW50KCBqUXVlcnkoICcjYm9va2luZ3RpbWVsaW5lX3dwYmNfc3RhcnRfZW5kX3RpbWVfdGltZWxpbmVfc3RhcnR0aW1lJyApLnZhbCgpLnRyaW0oKSApO1xyXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdfdGltZXNfZW5kX3RlbXAgPSBwYXJzZUludCggalF1ZXJ5KCAnI2Jvb2tpbmd0aW1lbGluZV93cGJjX3N0YXJ0X2VuZF90aW1lX3RpbWVsaW5lX2VuZHRpbWUnICkudmFsKCkudHJpbSgpICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoICh2aWV3X3RpbWVzX3N0YXJ0X3RlbXAgIT0gMCkgfHwgKHZpZXdfdGltZXNfZW5kX3RlbXAgIT0gMjQpICl7XHJcbiAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBsaW1pdF9ob3Vycz1cXCcnICsgdmlld190aW1lc19zdGFydF90ZW1wICsgJywnICsgdmlld190aW1lc19lbmRfdGVtcCArICdcXCcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyA6c2Nyb2xsX3N0YXJ0X2RhdGVcclxuICAgICAgICAgICAgaWYgKCAgKCBqUXVlcnkoJyNib29raW5ndGltZWxpbmVfd3BiY19zdGFydF9kYXRlX3RpbWVsaW5lX2FjdGl2ZScpLmlzKCc6Y2hlY2tlZCcpICkgICYmICggalF1ZXJ5KCAnI2Jvb2tpbmd0aW1lbGluZV93cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfYWN0aXZlJyApLmxlbmd0aCA+IDAgKSAgKSB7XHJcbiAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBzY3JvbGxfc3RhcnRfZGF0ZT1cXCcnICsgalF1ZXJ5KCAnI2Jvb2tpbmd0aW1lbGluZV93cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfeWVhcicgKS52YWwoKS50cmltKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICctJyArIGpRdWVyeSggJyNib29raW5ndGltZWxpbmVfd3BiY19zdGFydF9kYXRlX3RpbWVsaW5lX21vbnRoJyApLnZhbCgpLnRyaW0oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJy0nICsgalF1ZXJ5KCAnI2Jvb2tpbmd0aW1lbGluZV93cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfZGF5JyApLnZhbCgpLnRyaW0oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnXFwnJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICAvLyBbYm9va2luZ2Zvcm0gIF0gLSBGb3JtIE9ubHkgICAgICAgIC0gICAgIFtib29raW5nZm9ybSB0eXBlPTEgc2VsZWN0ZWRfZGF0ZXM9JzAxLjAzLjIwMjQnXVxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICBpZiAoICdib29raW5nZm9ybScgPT09IHNob3J0Y29kZV9pZCApe1xyXG5cclxuICAgICAgICAgICAgdmFyIHdwYmNfc2VsZWN0ZWRfZGF5ID0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfYm9va2luZ19kYXRlX2RheScgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgIGlmICggcGFyc2VJbnQod3BiY19zZWxlY3RlZF9kYXkpIDwgMTAgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfc2VsZWN0ZWRfZGF5ID0gJzAnICsgd3BiY19zZWxlY3RlZF9kYXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHdwYmNfc2VsZWN0ZWRfbW9udGggPSBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19ib29raW5nX2RhdGVfbW9udGgnICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICBpZiAoIHBhcnNlSW50KHdwYmNfc2VsZWN0ZWRfbW9udGgpIDwgMTAgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfc2VsZWN0ZWRfbW9udGggPSAnMCcgKyB3cGJjX3NlbGVjdGVkX21vbnRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgc2VsZWN0ZWRfZGF0ZXM9XFwnJyArIHdwYmNfc2VsZWN0ZWRfZGF5ICsgJy4nICsgd3BiY19zZWxlY3RlZF9tb250aCArICcuJyArIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX2Jvb2tpbmdfZGF0ZV95ZWFyJyApLnZhbCgpLnRyaW0oKSArICdcXCcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIC8vIFtib29raW5nc2VhcmNoICBdIC0gT3B0aW9ucyByZWxhdGl2ZSBvbmx5IHRvIHRoaXMgc2hvcnRjb2RlLiAgICAgW2Jvb2tpbmdzZWFyY2ggc2VhcmNocmVzdWx0c3RpdGxlPSd7c2VhcmNocmVzdWx0c30gUmVzdWx0KHMpIEZvdW5kJyBub3Jlc3VsdHN0aXRsZT0nTm90aGluZyBGb3VuZCddXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIGlmICggJ2Jvb2tpbmdzZWFyY2gnID09PSBzaG9ydGNvZGVfaWQgKXtcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrICBpZiB3ZSBzZWxlY3RlZCAnYm9va2luZ3NlYXJjaCcgfCAnYm9va2luZ3NlYXJjaHJlc3VsdHMnXHJcbiAgICAgICAgICAgIHZhciB3cGJjX3NlYXJjaF9mb3JtX3Jlc3VsdHMgPSAnYm9va2luZ3NlYXJjaCc7XHJcbiAgICAgICAgICAgIGlmICggalF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmdzZWFyY2hfd3BiY19zZWFyY2hfZm9ybV9yZXN1bHRzJ106Y2hlY2tlZFwiICkubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICAgICAgICAgd3BiY19zZWFyY2hfZm9ybV9yZXN1bHRzID0galF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmdzZWFyY2hfd3BiY19zZWFyY2hfZm9ybV9yZXN1bHRzJ106Y2hlY2tlZFwiICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBTaG93IHwgSGlkZSBmb3JtICBmaWVsZHMgZm9yICdib29raW5nc2VhcmNoJyBkZXBlbmRzIGZyb20gIHJhZGlvICBidXRpb24gIHNlbGVjdGlvblxyXG4gICAgICAgICAgICBpZiAoICdib29raW5nc2VhcmNocmVzdWx0cycgPT09IHdwYmNfc2VhcmNoX2Zvcm1fcmVzdWx0cyApe1xyXG4gICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgPSAnW2Jvb2tpbmdzZWFyY2hyZXN1bHRzJztcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJy53cGJjX3NlYXJjaF9hdmFpbGFiaWxpdHlfZm9ybScgKS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcud3BiY19zZWFyY2hfYXZhaWxhYmlsaXR5X2Zvcm0nICkuc2hvdygpO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBOZXcgcGFnZSBmb3Igc2VhcmNoIHJlc3VsdHNcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAoalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2VhcmNoX25ld19wYWdlX2VuYWJsZWQnICkubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgICAgICAmJiAoalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2VhcmNoX25ld19wYWdlX2VuYWJsZWQnICkuaXMoICc6Y2hlY2tlZCcgKSlcclxuICAgICAgICAgICAgICAgICl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hvd1xyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSggJy4nICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NlYXJjaF9uZXdfcGFnZV93cGJjX3NjX3NlYXJjaHJlc3VsdHNfbmV3X3BhZ2UnICkuc2hvdygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyA6IFNlYXJjaCBSZXN1bHRzIFVSTFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2VhcmNoX25ld19wYWdlX3VybCcgKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWFyY2hfcmVzdWx0c191cmxfdGVtcCA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NlYXJjaF9uZXdfcGFnZV91cmwnICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfcmVzdWx0c191cmxfdGVtcCA9IHNlYXJjaF9yZXN1bHRzX3VybF90ZW1wLnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlYXJjaF9yZXN1bHRzX3VybF90ZW1wICE9ICcnICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHNlYXJjaHJlc3VsdHM9XFwnJyArIHNlYXJjaF9yZXN1bHRzX3VybF90ZW1wICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEhpZGVcclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoICcuJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zZWFyY2hfbmV3X3BhZ2Vfd3BiY19zY19zZWFyY2hyZXN1bHRzX25ld19wYWdlJyApLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbi8qICAgICAgICAgICAgICAvL0ZpeEluOiAxMC4wLjAuNDFcclxuICAgICAgICAgICAgICAgIC8vIDogU2VhcmNoIEhlYWRlclxyXG4gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zZWFyY2hfaGVhZGVyJyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VhcmNoX2hlYWRlcl90ZW1wID0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2VhcmNoX2hlYWRlcicgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2hlYWRlcl90ZW1wID0gc2VhcmNoX2hlYWRlcl90ZW1wLnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggc2VhcmNoX2hlYWRlcl90ZW1wICE9ICcnICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgc2VhcmNocmVzdWx0c3RpdGxlPVxcJycgKyBzZWFyY2hfaGVhZGVyX3RlbXAgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyA6IE5vdGhpbmcgRm91bmRcclxuICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2VhcmNoX25vdGhpbmdfZm91bmQnICkubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBub3RoaW5nZm91bmRfdGVtcCA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NlYXJjaF9ub3RoaW5nX2ZvdW5kJyApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICBub3RoaW5nZm91bmRfdGVtcCA9IG5vdGhpbmdmb3VuZF90ZW1wLnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggbm90aGluZ2ZvdW5kX3RlbXAgIT0gJycgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBub3Jlc3VsdHN0aXRsZT1cXCcnICsgbm90aGluZ2ZvdW5kX3RlbXAgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiovXHJcbiAgICAgICAgICAgICAgICAvLyA6IFVzZXJzICAgICAgLy8gW2Jvb2tpbmdzZWFyY2ggc2VhcmNocmVzdWx0c3RpdGxlPSd7c2VhcmNocmVzdWx0c30gUmVzdWx0KHMpIEZvdW5kJyBub3Jlc3VsdHN0aXRsZT0nTm90aGluZyBGb3VuZCcgdXNlcnM9JzMsNDU0MywnXVxyXG4gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zZWFyY2hfZm9yX3VzZXJzJyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgb25seV9mb3JfdXNlcnNfdGVtcCA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NlYXJjaF9mb3JfdXNlcnMnICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ubHlfZm9yX3VzZXJzX3RlbXAgPSBvbmx5X2Zvcl91c2Vyc190ZW1wLnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggb25seV9mb3JfdXNlcnNfdGVtcCAhPSAnJyApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHVzZXJzPVxcJycgKyBvbmx5X2Zvcl91c2Vyc190ZW1wICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICAvLyBbYm9va2luZ2VkaXRdICwgW2Jvb2tpbmdjdXN0b21lcmxpc3RpbmddICwgW2Jvb2tpbmdyZXNvdXJjZSB0eXBlPTYgc2hvdz0nY2FwYWNpdHknXSAsIFtib29raW5nX2NvbmZpcm1dXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIGlmICggJ2Jvb2tpbmdvdGhlcicgPT09IHNob3J0Y29kZV9pZCApe1xyXG5cclxuICAgICAgICAgICAgLy9UUklDSzpcclxuICAgICAgICAgICAgc2hvcnRjb2RlX2lkID0gJ25vJzsgIC8vcmVxdWlyZWQgZm9yIG5vdCB1cGRhdGUgYm9va2luZyByZXNvdXJjZSBJRFxyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgIGlmIHdlIHNlbGVjdGVkICdib29raW5nc2VhcmNoJyB8ICdib29raW5nc2VhcmNocmVzdWx0cydcclxuICAgICAgICAgICAgdmFyIGJvb2tpbmdvdGhlcl9zaG9ydGNvZGVfdHlwZSA9ICdib29raW5nc2VhcmNoJztcclxuICAgICAgICAgICAgaWYgKCBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ290aGVyX3dwYmNfc2hvcnRjb2RlX3R5cGUnXTpjaGVja2VkXCIgKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICBib29raW5nb3RoZXJfc2hvcnRjb2RlX3R5cGUgPSBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ290aGVyX3dwYmNfc2hvcnRjb2RlX3R5cGUnXTpjaGVja2VkXCIgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFNob3cgfCBIaWRlIHNlY3Rpb25zXHJcbiAgICAgICAgICAgIGlmICggJ2Jvb2tpbmdfY29uZmlybScgPT09IGJvb2tpbmdvdGhlcl9zaG9ydGNvZGVfdHlwZSApe1xyXG4gICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgPSAnW2Jvb2tpbmdfY29uZmlybSc7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcuYm9va2luZ290aGVyX3NlY3Rpb25fYWRkaXRpb25hbCcgKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcuYm9va2luZ290aGVyX3NlY3Rpb25fJyArIGJvb2tpbmdvdGhlcl9zaG9ydGNvZGVfdHlwZSApLnNob3coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoICdib29raW5nZWRpdCcgPT09IGJvb2tpbmdvdGhlcl9zaG9ydGNvZGVfdHlwZSApe1xyXG4gICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgPSAnW2Jvb2tpbmdlZGl0JztcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJy5ib29raW5nb3RoZXJfc2VjdGlvbl9hZGRpdGlvbmFsJyApLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJy5ib29raW5nb3RoZXJfc2VjdGlvbl8nICsgYm9va2luZ290aGVyX3Nob3J0Y29kZV90eXBlICkuc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICggJ2Jvb2tpbmdjdXN0b21lcmxpc3RpbmcnID09PSBib29raW5nb3RoZXJfc2hvcnRjb2RlX3R5cGUgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlID0gJ1tib29raW5nY3VzdG9tZXJsaXN0aW5nJztcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJy5ib29raW5nb3RoZXJfc2VjdGlvbl9hZGRpdGlvbmFsJyApLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJy5ib29raW5nb3RoZXJfc2VjdGlvbl8nICsgYm9va2luZ290aGVyX3Nob3J0Y29kZV90eXBlICkuc2hvdygpO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoICdib29raW5ncmVzb3VyY2UnID09PSBib29raW5nb3RoZXJfc2hvcnRjb2RlX3R5cGUgKXtcclxuXHJcbiAgICAgICAgICAgICAgICAvL1RSSUNLOlxyXG4gICAgICAgICAgICAgICAgc2hvcnRjb2RlX2lkID0gJ2Jvb2tpbmdvdGhlcic7ICAvL3JlcXVpcmVkIHRvIGZvcmNlIHVwZGF0ZSBib29raW5nIHJlc291cmNlIElEXHJcblxyXG4gICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgPSAnW2Jvb2tpbmdyZXNvdXJjZSc7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcuYm9va2luZ290aGVyX3NlY3Rpb25fYWRkaXRpb25hbCcgKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcuYm9va2luZ290aGVyX3NlY3Rpb25fJyArIGJvb2tpbmdvdGhlcl9zaG9ydGNvZGVfdHlwZSApLnNob3coKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeSggJyNib29raW5nb3RoZXJfd3BiY19yZXNvdXJjZV9zaG93JyApLnZhbCgpLnRyaW0oKSAhPSAndGl0bGUnICl7XHJcbiAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBzaG93PVxcJycgKyBqUXVlcnkoICcjYm9va2luZ290aGVyX3dwYmNfcmVzb3VyY2Vfc2hvdycgKS52YWwoKS50cmltKCkgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gW2Jvb2tpbmctbWFuYWdlci1pbXBvcnQgLi4uXSAgICAgfHwgICAgICBbYm9va2luZy1tYW5hZ2VyLWxpc3RpbmcgLi4uXVxyXG4gICAgICAgIGlmICggKCdib29raW5nX2ltcG9ydF9pY3MnID09PSBzaG9ydGNvZGVfaWQpIHx8ICgnYm9va2luZ19saXN0aW5nX2ljcycgPT09IHNob3J0Y29kZV9pZCkgKXtcclxuXHJcbiAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlID0gJ1tib29raW5nLW1hbmFnZXItaW1wb3J0JztcclxuXHJcbiAgICAgICAgICAgIGlmICggJ2Jvb2tpbmdfbGlzdGluZ19pY3MnID09PSBzaG9ydGNvZGVfaWQgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlID0gJ1tib29raW5nLW1hbmFnZXItbGlzdGluZyc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgLy8gOiAuaWNzIGZlZWQgVVJMXHJcbiAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgdmFyIHNob3J0Y29kZV91cmxfdGVtcCA9ICcnXHJcbiAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfdXJsJyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgIHNob3J0Y29kZV91cmxfdGVtcCA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3VybCcgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICBzaG9ydGNvZGVfdXJsX3RlbXAgPSBzaG9ydGNvZGVfdXJsX3RlbXAucmVwbGFjZSggLycvZ2ksICcnICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIHNob3J0Y29kZV91cmxfdGVtcCAhPSAnJyApe1xyXG4gICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgdXJsPVxcJycgKyBzaG9ydGNvZGVfdXJsX3RlbXAgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgIGlmICggc2hvcnRjb2RlX3VybF90ZW1wID09ICcnICl7XHJcbiAgICAgICAgICAgICAgICAvLyBFcnJvcjpcclxuICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlID0gJ1sgVVJMIGlzIHJlcXVpcmVkICdcclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBWQUxJRDpcclxuXHJcbiAgICAgICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgICAgICAvLyBbLi4uIGZyb209JycgJ2Zyb21fb2Zmc2V0PScnICAuLi5dXHJcbiAgICAgICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ19mcm9tJyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcF9mcm9tICAgICAgICAgID0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX2Zyb20nICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwX2Zyb21fb2Zmc2V0ICAgPSBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfZnJvbV9vZmZzZXQnICkudmFsKCkudHJpbSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBwX2Zyb20gICAgICAgID0gcF9mcm9tLnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG4gICAgICAgICAgICAgICAgICAgIHBfZnJvbV9vZmZzZXQgPSBwX2Zyb21fb2Zmc2V0LnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoICgnJyAhPSBwX2Zyb20pICYmICgnZGF0ZScgIT0gcF9mcm9tKSApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT2Zmc2V0XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIGZyb209XFwnJyArIHBfZnJvbSArICdcXCcnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoJ2FueScgIT0gcF9mcm9tKSAmJiAoJycgIT0gcF9mcm9tX29mZnNldCkgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZnJvbV9vZmZzZXQgPSBwYXJzZUludCggcF9mcm9tX29mZnNldCApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaXNOYU4oIHBfZnJvbV9vZmZzZXQgKSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgZnJvbV9vZmZzZXQ9XFwnJyArIHBfZnJvbV9vZmZzZXQgKyBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfZnJvbV9vZmZzZXRfdHlwZScgKS52YWwoKS50cmltKCkuY2hhckF0KCAwICkgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAocF9mcm9tID09ICdkYXRlJykgJiYgKHBfZnJvbV9vZmZzZXQgIT0gJycpICl7XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHNlbGVjdGVkIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBmcm9tPVxcJycgKyBwX2Zyb21fb2Zmc2V0ICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgICAgIC8vIFsuLi4gdW50aWw9JycgJ3VudGlsX29mZnNldD0nJyAgLi4uXVxyXG4gICAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfdW50aWwnICkubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwX3VudGlsICAgICAgICAgID0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3VudGlsJyApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcF91bnRpbF9vZmZzZXQgICA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ191bnRpbF9vZmZzZXQnICkudmFsKCkudHJpbSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBwX3VudGlsICAgICAgICA9IHBfdW50aWwucmVwbGFjZSggLycvZ2ksICcnICk7XHJcbiAgICAgICAgICAgICAgICAgICAgcF91bnRpbF9vZmZzZXQgPSBwX3VudGlsX29mZnNldC5yZXBsYWNlKCAvJy9naSwgJycgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAoJycgIT0gcF91bnRpbCkgJiYgKCdkYXRlJyAhPSBwX3VudGlsKSApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT2Zmc2V0XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHVudGlsPVxcJycgKyBwX3VudGlsICsgJ1xcJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICgnYW55JyAhPSBwX3VudGlsKSAmJiAoJycgIT0gcF91bnRpbF9vZmZzZXQpICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3VudGlsX29mZnNldCA9IHBhcnNlSW50KCBwX3VudGlsX29mZnNldCApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaXNOYU4oIHBfdW50aWxfb2Zmc2V0ICkgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHVudGlsX29mZnNldD1cXCcnICsgcF91bnRpbF9vZmZzZXQgKyBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfdW50aWxfb2Zmc2V0X3R5cGUnICkudmFsKCkudHJpbSgpLmNoYXJBdCggMCApICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggKHBfdW50aWwgPT0gJ2RhdGUnKSAmJiAocF91bnRpbF9vZmZzZXQgIT0gJycpICl7XHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHNlbGVjdGVkIERhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyB1bnRpbD1cXCcnICsgcF91bnRpbF9vZmZzZXQgKyAnXFwnJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cdFx0XHRcdC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHRcdFx0XHQvLyBNYXhcclxuXHRcdFx0XHQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ19jb25kaXRpb25zX21heF9udW0nICkubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwX21heCA9IHBhcnNlSW50KCBqUXVlcnkoICAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX2NvbmRpdGlvbnNfbWF4X251bScgKS52YWwoKS50cmltKCkgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIHBfbWF4ICE9IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBtYXg9JyArIHBfbWF4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblx0XHRcdFx0Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG5cdFx0XHRcdC8vIFNpbGVuY2VcclxuXHRcdFx0XHQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ19zaWxlbmNlJyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoICcxJyA9PT0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3NpbGVuY2UnICkudmFsKCkudHJpbSgpICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgc2lsZW5jZT0xJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cdFx0XHRcdC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHRcdFx0XHQvLyBpc19hbGxfZGF0ZXNfaW5cclxuXHRcdFx0XHQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ19jb25kaXRpb25zX2V2ZW50cycgKS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBfaXNfYWxsX2RhdGVzX2luID0gcGFyc2VJbnQoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ19jb25kaXRpb25zX2V2ZW50cycgICkudmFsKCkudHJpbSgpICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwX2lzX2FsbF9kYXRlc19pbiAhPSAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgaXNfYWxsX2RhdGVzX2luPScgKyBwX2lzX2FsbF9kYXRlc19pbjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cdFx0XHRcdC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHRcdFx0XHQvLyBpbXBvcnRfY29uZGl0aW9uc1xyXG5cdFx0XHRcdC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX2NvbmRpdGlvbnNfaW1wb3J0JyApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcF9pbXBvcnRfY29uZGl0aW9ucyA9IGpRdWVyeSggICcjJyArIHNob3J0Y29kZV9pZCArICdfY29uZGl0aW9uc19pbXBvcnQnICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBfaW1wb3J0X2NvbmRpdGlvbnMgPSBwX2ltcG9ydF9jb25kaXRpb25zLnJlcGxhY2UoIC8nL2dpLCAnJyApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggcF9pbXBvcnRfY29uZGl0aW9ucyAhPSAnJyApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIGltcG9ydF9jb25kaXRpb25zPVxcJycgKyBwX2ltcG9ydF9jb25kaXRpb25zICsgJ1xcJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICAvLyBbYm9va2luZ10gLCBbYm9va2luZ2NhbGVuZGFyXSAsIC4uLiAgcGFyYW1ldGVycyBmb3IgdGhlc2Ugc2hvcnRjb2RlcyBhbmQgb3RoZXJzLi4uXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfcmVzb3VyY2VfaWQnICkubGVuZ3RoID4gMCApIHtcclxuICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19yZXNvdXJjZV9pZCcgKS52YWwoKSA9PT0gbnVsbCApIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9GaXhJbjogOC4yLjEuMTJcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN3cGJjX3RleHRfcHV0X2luX3Nob3J0Y29kZScgKS52YWwoICctLS0nICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIHJlc291cmNlX2lkPScgKyBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19yZXNvdXJjZV9pZCcgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19jdXN0b21fZm9ybScgKS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICB2YXIgZm9ybV90eXBlX3RlbXAgPSBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19jdXN0b21fZm9ybScgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgIGlmICggZm9ybV90eXBlX3RlbXAgIT0gJ3N0YW5kYXJkJyApXHJcbiAgICAgICAgICAgICAgICB3cGJjX3Nob3J0Y29kZSArPSAnIGZvcm1fdHlwZT1cXCcnICsgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfY3VzdG9tX2Zvcm0nICkudmFsKCkudHJpbSgpICsgJ1xcJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfbnVtbW9udGhzJyApLmxlbmd0aCA+IDAgKVxyXG4gICAgICAgICAgICAgJiYgKCBwYXJzZUludCggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfbnVtbW9udGhzJyApLnZhbCgpLnRyaW0oKSApID4gMSApXHJcbiAgICAgICAgKXtcclxuICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBudW1tb250aHM9JyArIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX251bW1vbnRocycgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAoIGpRdWVyeSgnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc3RhcnRtb250aF9hY3RpdmUnKS5sZW5ndGggPiAwIClcclxuICAgICAgICAgICAgICYmICggalF1ZXJ5KCcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zdGFydG1vbnRoX2FjdGl2ZScpLmlzKCc6Y2hlY2tlZCcpIClcclxuICAgICAgICApe1xyXG4gICAgICAgICAgICAgd3BiY19zaG9ydGNvZGUgKz0gJyBzdGFydG1vbnRoPVxcJycgKyBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zdGFydG1vbnRoX3llYXInICkudmFsKCkudHJpbSgpICsgJy0nICsgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc3RhcnRtb250aF9tb250aCcgKS52YWwoKS50cmltKCkgKyAnXFwnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfYWdncmVnYXRlJyApLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgICAgICAgIHZhciB3cGJjX2FnZ3JlZ2F0ZV90ZW1wID0galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfYWdncmVnYXRlJyApLnZhbCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCAoIHdwYmNfYWdncmVnYXRlX3RlbXAgIT0gbnVsbCApICYmICggd3BiY19hZ2dyZWdhdGVfdGVtcC5sZW5ndGggPiAwICkgICl7XHJcbiAgICAgICAgICAgICAgICB3cGJjX2FnZ3JlZ2F0ZV90ZW1wID0gd3BiY19hZ2dyZWdhdGVfdGVtcC5qb2luKCc7JylcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHdwYmNfYWdncmVnYXRlX3RlbXAgIT0gMCApeyAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGFib3V0IDA9PidOb25lJ1xyXG4gICAgICAgICAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgYWdncmVnYXRlPVxcJycgKyB3cGJjX2FnZ3JlZ2F0ZV90ZW1wICsgJ1xcJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5KCcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19hZ2dyZWdhdGVfX2Jvb2tpbmdzX29ubHknKS5pcygnOmNoZWNrZWQnKSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cGJjX29wdGlvbnNfYXJyLnB1c2goICd7YWdncmVnYXRlIHR5cGU9Ym9va2luZ3Nfb25seX0nICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAgLy8gT3B0aW9uIFBhcmFtXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIC8vIE9wdGlvbnMgOiBTaXplXHJcbiAgICAgICAgdmFyIHdwYmNfb3B0aW9uc19zaXplID0gJyc7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgKCBqUXVlcnkoJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NpemVfZW5hYmxlZCcpLmxlbmd0aCA+IDAgKVxyXG4gICAgICAgICAgICAgJiYgKCBqUXVlcnkoJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NpemVfZW5hYmxlZCcpLmlzKCc6Y2hlY2tlZCcpIClcclxuICAgICAgICApe1xyXG5cclxuICAgICAgICAgICAgLy8gb3B0aW9ucz0ne2NhbGVuZGFyIG1vbnRoc19udW1faW5fcm93PTIgd2lkdGg9MTAwJSBjZWxsX2hlaWdodD00MHB4fSdcclxuXHJcbiAgICAgICAgICAgIHdwYmNfb3B0aW9uc19zaXplICs9ICd7Y2FsZW5kYXInIDtcclxuICAgICAgICAgICAgd3BiY19vcHRpb25zX3NpemUgKz0gJyAnICsgJ21vbnRoc19udW1faW5fcm93PSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NpemVfbW9udGhzX251bV9pbl9yb3cnICkudmFsKCkudHJpbSgpICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19udW1tb250aHMnICkudmFsKCkudHJpbSgpIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHdwYmNfb3B0aW9uc19zaXplICs9ICcgJyArICd3aWR0aD0nICsgcGFyc2VJbnQoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3NpemVfY2FsZW5kYXJfd2lkdGgnICkudmFsKCkudHJpbSgpIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfc2l6ZV9jYWxlbmRhcl93aWR0aF9weF9wcicgKS52YWwoKS50cmltKCkgO1xyXG4gICAgICAgICAgICB3cGJjX29wdGlvbnNfc2l6ZSArPSAnICcgKyAnY2VsbF9oZWlnaHQ9JyArIHBhcnNlSW50KCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICdfd3BiY19zaXplX2NhbGVuZGFyX2NlbGxfaGVpZ2h0JyApLnZhbCgpLnRyaW0oKSApICsgJ3B4JztcclxuICAgICAgICAgICAgd3BiY19vcHRpb25zX3NpemUgKz0gJ30nO1xyXG4gICAgICAgICAgICB3cGJjX29wdGlvbnNfYXJyLnB1c2goIHdwYmNfb3B0aW9uc19zaXplICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPcHRpb25zOiBEYXlzIG51bWJlciBkZXBlbmQgb24gICBXZWVrZGF5XHJcbiAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICd3cGJjX3NlbGVjdF9kYXlfd2Vla2RheV90ZXh0YXJlYScgKS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICB3cGJjX29wdGlvbnNfc2l6ZSA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ3dwYmNfc2VsZWN0X2RheV93ZWVrZGF5X3RleHRhcmVhJyApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAgICAgaWYgKCB3cGJjX29wdGlvbnNfc2l6ZS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICB3cGJjX29wdGlvbnNfYXJyLnB1c2goIHdwYmNfb3B0aW9uc19zaXplICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9wdGlvbnM6IERheXMgbnVtYmVyIGRlcGVuZCBvbiAgIFNFQVNPTlxyXG4gICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnd3BiY19zZWxlY3RfZGF5X3NlYXNvbl90ZXh0YXJlYScgKS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICB3cGJjX29wdGlvbnNfc2l6ZSA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ3dwYmNfc2VsZWN0X2RheV9zZWFzb25fdGV4dGFyZWEnICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgICAgICBpZiAoIHdwYmNfb3B0aW9uc19zaXplLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfb3B0aW9uc19hcnIucHVzaCggd3BiY19vcHRpb25zX3NpemUgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT3B0aW9uczogU3RhcnQgd2Vla2RheSBkZXBlbmQgb24gICBTRUFTT05cclxuICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ3dwYmNfc3RhcnRfZGF5X3NlYXNvbl90ZXh0YXJlYScgKS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICB3cGJjX29wdGlvbnNfc2l6ZSA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ3dwYmNfc3RhcnRfZGF5X3NlYXNvbl90ZXh0YXJlYScgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgICAgIGlmICggd3BiY19vcHRpb25zX3NpemUubGVuZ3RoID4gMCApe1xyXG4gICAgICAgICAgICAgICAgd3BiY19vcHRpb25zX2Fyci5wdXNoKCB3cGJjX29wdGlvbnNfc2l6ZSApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPcHRpb246IERheXMgbnVtYmVyIGRlcGVuZCBvbiBmcm9tICBEQVRFXHJcbiAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArICd3cGJjX3NlbGVjdF9kYXlfZm9yZGF0ZV90ZXh0YXJlYScgKS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICB3cGJjX29wdGlvbnNfc2l6ZSA9IGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ3dwYmNfc2VsZWN0X2RheV9mb3JkYXRlX3RleHRhcmVhJyApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAgICAgaWYgKCB3cGJjX29wdGlvbnNfc2l6ZS5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICB3cGJjX29wdGlvbnNfYXJyLnB1c2goIHdwYmNfb3B0aW9uc19zaXplICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICggd3BiY19vcHRpb25zX2Fyci5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgIHdwYmNfc2hvcnRjb2RlICs9ICcgb3B0aW9ucz1cXCcnICsgd3BiY19vcHRpb25zX2Fyci5qb2luKCAnLCcgKSArICdcXCcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgd3BiY19zaG9ydGNvZGUgKz0gJ10nO1xyXG5cclxuICAgIGpRdWVyeSggJyN3cGJjX3RleHRfcHV0X2luX3Nob3J0Y29kZScgKS52YWwoIHdwYmNfc2hvcnRjb2RlICk7XHJcbn1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gVGlueU1DRSBNb2RhbCAqL1xyXG4gICAgZnVuY3Rpb24gd3BiY190aW55X2J0bl9jbGljayggdGFnICkge1xyXG4gICAgICAgIC8vRml4SW46IDkuMC4xLjVcclxuICAgICAgICBqUXVlcnkoJyN3cGJjX3RpbnlfbW9kYWwnKS53cGJjX215X21vZGFsKHtcclxuICAgICAgICAgICAga2V5Ym9hcmQ6IGZhbHNlXHJcbiAgICAgICAgICAsIGJhY2tkcm9wOiB0cnVlXHJcbiAgICAgICAgICAsIHNob3c6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICAvL0ZpeEluOiA4LjMuMy45OVxyXG4gICAgICAgIGpRdWVyeSggXCIjd3BiY190ZXh0X2dldHRlbmJlcmdfc2VjdGlvbl9pZFwiICkudmFsKCAnJyApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gVGlueU1DRSBNb2RhbCAqL1xyXG4gICAgZnVuY3Rpb24gd3BiY190aW55X2Nsb3NlKCkge1xyXG5cclxuICAgICAgICBqUXVlcnkoJyN3cGJjX3RpbnlfbW9kYWwnKS53cGJjX215X21vZGFsKCdoaWRlJyk7XHQvL0ZpeEluOiA5LjAuMS41XHJcbiAgICB9XHJcblxyXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAvKiogU2VuZCBUZXh0ICovXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAgIC8qKlxyXG4gICAgICogU2VuZCB0ZXh0ICB0byBlZGl0b3IgKi9cclxuICAgIGZ1bmN0aW9uIHdwYmNfc2VuZF90ZXh0X3RvX2VkaXRvciggaCApIHtcclxuXHJcbiAgICAgICAgLy8gRml4SW46IDguMy4zLjk5XHJcbiAgICAgICAgaWYgKCB0eXBlb2YoIHdwYmNfc2VuZF90ZXh0X3RvX2d1dGVuYmVyZyApID09ICdmdW5jdGlvbicgKXtcclxuICAgICAgICAgICAgdmFyIGlzX3NlbmQgPSB3cGJjX3NlbmRfdGV4dF90b19ndXRlbmJlcmcoIGggKTtcclxuICAgICAgICAgICAgaWYgKCB0cnVlID09PSBpc19zZW5kICl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgZWQsIG1jZSA9IHR5cGVvZih0aW55bWNlKSAhPSAndW5kZWZpbmVkJywgcXQgPSB0eXBlb2YoUVRhZ3MpICE9ICd1bmRlZmluZWQnO1xyXG5cclxuICAgICAgICAgICAgaWYgKCAhd3BBY3RpdmVFZGl0b3IgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBtY2UgJiYgdGlueW1jZS5hY3RpdmVFZGl0b3IgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZCA9IHRpbnltY2UuYWN0aXZlRWRpdG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3BBY3RpdmVFZGl0b3IgPSBlZC5pZDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAhcXQgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBtY2UgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aW55bWNlLmFjdGl2ZUVkaXRvciAmJiAodGlueW1jZS5hY3RpdmVFZGl0b3IuaWQgPT0gJ21jZV9mdWxsc2NyZWVuJyB8fCB0aW55bWNlLmFjdGl2ZUVkaXRvci5pZCA9PSAnd3BfbWNlX2Z1bGxzY3JlZW4nKSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZCA9IHRpbnltY2UuYWN0aXZlRWRpdG9yO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkID0gdGlueW1jZS5nZXQod3BBY3RpdmVFZGl0b3IpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIGVkICYmICFlZC5pc0hpZGRlbigpICkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlc3RvcmUgY2FyZXQgcG9zaXRpb24gb24gSUVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIHRpbnltY2UuaXNJRSAmJiBlZC53aW5kb3dNYW5hZ2VyLmluc2VydGltYWdlYm9va21hcmsgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWQuc2VsZWN0aW9uLm1vdmVUb0Jvb2ttYXJrKGVkLndpbmRvd01hbmFnZXIuaW5zZXJ0aW1hZ2Vib29rbWFyayk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggaC5pbmRleE9mKCdbY2FwdGlvbicpICE9PSAtMSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWQud3BTZXRJbWdDYXB0aW9uIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGVkLndwU2V0SW1nQ2FwdGlvbihoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBoLmluZGV4T2YoJ1tnYWxsZXJ5JykgIT09IC0xICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlZC5wbHVnaW5zLndwZ2FsbGVyeSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlZC5wbHVnaW5zLndwZ2FsbGVyeS5fZG9fZ2FsbGVyeShoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBoLmluZGV4T2YoJ1tlbWJlZCcpID09PSAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlZC5wbHVnaW5zLndvcmRwcmVzcyApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBlZC5wbHVnaW5zLndvcmRwcmVzcy5fc2V0RW1iZWQoaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnbWNlSW5zZXJ0Q29udGVudCcsIGZhbHNlLCBoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICggcXQgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgUVRhZ3MuaW5zZXJ0Q29udGVudChoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh3cEFjdGl2ZUVkaXRvcikudmFsdWUgKz0gaDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5e3RiX3JlbW92ZSgpO31jYXRjaChlKXt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUkVTT1VSQ0VTIFBBR0U6IE9wZW4gVGlueU1DRSBNb2RhbCAqL1xyXG4gICAgZnVuY3Rpb24gd3BiY19yZXNvdXJjZV9wYWdlX2J0bl9jbGljayggcmVzb3VyY2VfaWQgLCBzaG9ydGNvZGVfZGVmYXVsdF92YWx1ZSA9ICcnKSB7XHJcblxyXG4gICAgICAgIC8vRml4SW46IDkuMC4xLjVcclxuICAgICAgICBqUXVlcnkoJyN3cGJjX3RpbnlfbW9kYWwnKS53cGJjX215X21vZGFsKHtcclxuICAgICAgICAgICAga2V5Ym9hcmQ6IGZhbHNlXHJcbiAgICAgICAgICAsIGJhY2tkcm9wOiB0cnVlXHJcbiAgICAgICAgICAsIHNob3c6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gRGlzYWJsZSBzb21lIG9wdGlvbnMgLSBzZWxlY3Rpb24gb2YgYm9va2luZyByZXNvdXJjZSAtIGJlY2F1c2Ugd2UgY29uZmlndXJlIGl0IG9ubHkgZm9yIHNwZWNpZmljIGJvb2tpbmcgcmVzb3VyY2UsIHdoZXJlIHdlIGNsaWNrZWQuXHJcbiAgICAgICAgdmFyIHNob3J0Y29kZV9hcnIgPSBbJ2Jvb2tpbmcnLCAnYm9va2luZ2NhbGVuZGFyJywgJ2Jvb2tpbmdmb3JtJ107XHJcblxyXG4gICAgICAgIGZvciAoIHZhciBzaG9ydGNkZV9rZXkgaW4gc2hvcnRjb2RlX2FyciApe1xyXG5cclxuICAgICAgICAgICAgdmFyIHNob3J0Y29kZV9pZCA9IHNob3J0Y29kZV9hcnJbIHNob3J0Y2RlX2tleSBdO1xyXG5cclxuICAgICAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfaWQgKyAnX3dwYmNfcmVzb3VyY2VfaWQnICkucHJvcCggXHRcdCAnZGlzYWJsZWQnLCBmYWxzZSApO1xyXG4gICAgICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV9pZCArIFwiX3dwYmNfcmVzb3VyY2VfaWQgb3B0aW9uW3ZhbHVlPSdcIiArIHJlc291cmNlX2lkICsgXCInXVwiICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoICdjaGFuZ2UnICk7XHJcbiAgICAgICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX2lkICsgJ193cGJjX3Jlc291cmNlX2lkJyApLnByb3AoIFx0XHQgJ2Rpc2FibGVkJywgdHJ1ZSApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSGlkZSBsZWZ0ICBuYXZpZ2F0aW9uICBpdGVtc1xyXG4vLyAgICAgICAgalF1ZXJ5KCBcIi53cGJjX3Nob3J0Y29kZV9jb25maWdfbmF2aWdhdGlvbl9jb2x1bW4gLndwYmNfc2V0dGluZ3NfbmF2aWdhdGlvbl9pdGVtXCIgKS5oaWRlKCk7XHJcbiAgICAgICAgalF1ZXJ5KCBcIiN3cGJjX3Nob3J0Y29kZV9jb25maWdfX25hdl90YWJfX2Jvb2tpbmdcIiApLnNob3coKTtcclxuICAgICAgICBqUXVlcnkoIFwiI3dwYmNfc2hvcnRjb2RlX2NvbmZpZ19fbmF2X3RhYl9fYm9va2luZ2NhbGVuZGFyXCIgKS5zaG93KCk7XHJcblxyXG4gICAgICAgIC8vIEhpZGUgfCBTaG93IEluc2VydCAgYnV0dG9uICBmb3IgYm9va2luZyByZXNvdXJjZSBwYWdlXHJcbiAgICAgICAgalF1ZXJ5KCBcIi53cGJjX3RpbnlfYnV0dG9uX19pbnNlcnRfdG9fZWRpdG9yXCIgKS5oaWRlKCk7XHJcbiAgICAgICAgalF1ZXJ5KCBcIi53cGJjX3RpbnlfYnV0dG9uX19pbnNlcnRfdG9fcmVzb3VyY2VcIiApLnNob3coKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBTaG9ydGNvZGUgVmFsdWUgZnJvbSAgc2hvcnRjb2RlIHRleHQgZmllbGQgaW4gUG9wVXAgc2hvcnRjb2RlIENvbmZpZyBkaWFsb2cgYW5kIGluc2VydCAgaW50byBESVYgYW5kIElOUFVUIFRFWFQgZmllbGQgbmVhciBzcGVjaWZpYyBib29raW5nIHJlc291cmNlLlxyXG4gICAgICogIEJ1dCBpdCB0YWtlcyBJRCAgb2YgYm9va2luZyByZXNvdXJjZSwgIHdoZXJlIHRvICBpbnNlcnQgIHRoaXMgc2hvcnRjb2RlIG9ubHkgZnJvbSAgJ2Jvb2tpbmcnIHNlY3Rpb24gIG9mIENvbmZpZyBEaWFsb2cuIHVzdWFsbHkgIHN1Y2ggIGJvb2tpbmcgcmVzb3VyY2UgIGRpc2FibGVkIHRoZXJlIVxyXG4gICAgICogIGUuZy46IGpRdWVyeSggXCIjYm9va2luZ193cGJjX3Jlc291cmNlX2lkXCIgKS52YWwoKVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzaG9ydGNvZGVfdmFsXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHdwYmNfc2VuZF90ZXh0X3RvX3Jlc291cmNlKCBzaG9ydGNvZGVfdmFsICl7XHJcbiAgICAgICAgLy9GaXhJbjogMTAuMy4wLjhcclxuICAgICAgICB2YXIgcmVzb3VyY2VfaWQgPSAxO1xyXG4gICAgICAgIGlmICggalF1ZXJ5KCBcIiNib29raW5nX3dwYmNfcmVzb3VyY2VfaWRcIiApLmxlbmd0aCApe1xyXG4gICAgICAgICAgICByZXNvdXJjZV9pZCA9IGpRdWVyeSggXCIjYm9va2luZ193cGJjX3Jlc291cmNlX2lkXCIgKS52YWwoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgalF1ZXJ5KCAnI2Rpdl9ib29raW5nX3Jlc291cmNlX3Nob3J0Y29kZV8nICsgcmVzb3VyY2VfaWQgKS5odG1sKCBzaG9ydGNvZGVfdmFsICk7XHJcbiAgICAgICAgICAgIGpRdWVyeSggJyNib29raW5nX3Jlc291cmNlX3Nob3J0Y29kZV8nICsgcmVzb3VyY2VfaWQgKS52YWwoIHNob3J0Y29kZV92YWwgKTtcclxuICAgICAgICAgICAgalF1ZXJ5KCAnI2Jvb2tpbmdfcmVzb3VyY2Vfc2hvcnRjb2RlXycgKyByZXNvdXJjZV9pZCApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG5cclxuICAgICAgICAvLyBTY3JvbGxcclxuICAgICAgICBpZiAoICdmdW5jdGlvbicgPT09IHR5cGVvZiAod3BiY19zY3JvbGxfdG8pICl7XHJcbiAgICAgICAgICAgIHdwYmNfc2Nyb2xsX3RvKCAnI2Rpdl9ib29raW5nX3Jlc291cmNlX3Nob3J0Y29kZV8nICsgalF1ZXJ5KCBcIiNib29raW5nX3dwYmNfcmVzb3VyY2VfaWRcIiApLnZhbCgpICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qIFIgRSBTIEUgVCAqL1xyXG4gICAgZnVuY3Rpb24gd3BiY19zaG9ydGNvZGVfY29uZmlnX19yZXNldChzaG9ydGNvZGVfdmFsKXtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc3RhcnRtb250aF9hY3RpdmUnICkucHJvcCggJ2NoZWNrZWQnLCBmYWxzZSApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG5cclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfYWdncmVnYXRlIG9wdGlvbjpzZWxlY3RlZCcpLnByb3AoICdzZWxlY3RlZCcsIGZhbHNlKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfYWdncmVnYXRlIG9wdGlvbjplcSgwKScgICApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfYWdncmVnYXRlX19ib29raW5nc19vbmx5JyApLnByb3AoICdjaGVja2VkJywgZmFsc2UgKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuXHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX2N1c3RvbV9mb3JtIG9wdGlvbjplcSgwKScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX251bW1vbnRocyBvcHRpb246ZXEoMCknICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfd3BiY19zaXplX2VuYWJsZWQnICkucHJvcCggJ2NoZWNrZWQnLCBmYWxzZSApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG5cclxuICAgICAgICB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfd2Vla2RheV9fcmVzZXQoIHNob3J0Y29kZV92YWwgKyAnd3BiY19zZWxlY3RfZGF5X3dlZWtkYXknICk7XHJcbiAgICAgICAgd3BiY19zaG9ydGNvZGVfY29uZmlnX19zZWxlY3RfZGF5X3NlYXNvbl9fcmVzZXQoIHNob3J0Y29kZV92YWwgKyAnd3BiY19zZWxlY3RfZGF5X3NlYXNvbicgKTtcclxuICAgICAgICB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3N0YXJ0X2RheV9zZWFzb25fX3Jlc2V0KCBzaG9ydGNvZGVfdmFsICsgJ3dwYmNfc3RhcnRfZGF5X3NlYXNvbicgKTtcclxuICAgICAgICB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfZm9yZGF0ZV9fcmVzZXQoIHNob3J0Y29kZV92YWwgKyAnd3BiY19zZWxlY3RfZGF5X2ZvcmRhdGUnICk7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0ICBmb3IgW2Jvb2tpbmdzZWxlY3RdIHNob3J0Y29kZSBwYXJhbXNcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzIG9wdGlvbjpzZWxlY3RlZCcpLnByb3AoICdzZWxlY3RlZCcsIGZhbHNlKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzIG9wdGlvbjplcSgwKScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3NlbGVjdGVkX3Jlc291cmNlIG9wdGlvbjplcSgwKScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3RleHRfbGFiZWwnICkudmFsKCAnJyApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfd3BiY19maXJzdF9vcHRpb25fdGl0bGUnICkudmFsKCAnJyApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG5cclxuICAgICAgICAvLyBSZXNldCAgZm9yIFtib29raW5ndGltZWxpbmVdIHNob3J0Y29kZSBwYXJhbXNcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfdGV4dF9sYWJlbF90aW1lbGluZScgKS52YWwoICcnICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3Njcm9sbF90aW1lbGluZV9zY3JvbGxfbW9udGggb3B0aW9uW3ZhbHVlPVwiMFwiXScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3Njcm9sbF90aW1lbGluZV9zY3JvbGxfZGF5cyBvcHRpb25bdmFsdWU9XCIwXCJdJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc3RhcnRfZGF0ZV90aW1lbGluZV9hY3RpdmUnICkucHJvcCggJ2NoZWNrZWQnLCBmYWxzZSApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfd3BiY19zdGFydF9lbmRfdGltZV90aW1lbGluZV9zdGFydHRpbWUgb3B0aW9uW3ZhbHVlPVwiMFwiXScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3N0YXJ0X2VuZF90aW1lX3RpbWVsaW5lX2VuZHRpbWUgb3B0aW9uW3ZhbHVlPVwiMjRcIl0nICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG4gICAgICAgIGpRdWVyeSggJ2lucHV0W25hbWU9XCInICsgc2hvcnRjb2RlX3ZhbCArICdfd3BiY192aWV3X21vZGVfdGltZWxpbmVfbW9udGhzX251bV9pbl9yb3dcIl1bdmFsdWU9XCIzMFwiXScgKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc3RhcnRfZGF0ZV90aW1lbGluZV95ZWFyIG9wdGlvblt2YWx1ZT1cIicgKyAobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKSArICdcIl0nICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoICdjaGFuZ2UnICk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfbW9udGggb3B0aW9uW3ZhbHVlPVwiJyArICgobmV3IERhdGUoKS5nZXRNb250aCgpKSArIDEpICsgJ1wiXScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfZGF5IG9wdGlvblt2YWx1ZT1cIicgKyAobmV3IERhdGUoKS5nZXREYXRlKCkpICsgJ1wiXScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0ICBmb3IgW2Jvb2tpbmdmb3JtXSBzaG9ydGNvZGUgcGFyYW1zXHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX2Jvb2tpbmdfZGF0ZV95ZWFyIG9wdGlvblt2YWx1ZT1cIicgKyAobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKSArICdcIl0nICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoICdjaGFuZ2UnICk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX2Jvb2tpbmdfZGF0ZV9tb250aCBvcHRpb25bdmFsdWU9XCInICsgKChuZXcgRGF0ZSgpLmdldE1vbnRoKCkpICsgMSkgKyAnXCJdJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfYm9va2luZ19kYXRlX2RheSBvcHRpb25bdmFsdWU9XCInICsgKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpKSArICdcIl0nICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG5cclxuICAgICAgICAvLyBSZXNldCAgZm9yIFtbYm9va2luZ3NlYXJjaCAuLi5dIHNob3J0Y29kZSBwYXJhbXNcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc2VhcmNoX25ld19wYWdlX3VybCcgKS52YWwoICcnICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3NlYXJjaF9uZXdfcGFnZV9lbmFibGVkJyApLnByb3AoICdjaGVja2VkJywgZmFsc2UgKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgICAgICAvLyBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc2VhcmNoX2hlYWRlcicgKS52YWwoICcnICkudHJpZ2dlcignY2hhbmdlJyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9GaXhJbjogMTAuMC4wLjQxXHJcbiAgICAgICAgLy8galF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3NlYXJjaF9ub3RoaW5nX2ZvdW5kJyApLnZhbCggJycgKS50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc2VhcmNoX2Zvcl91c2VycycgKS52YWwoICcnICkudHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgalF1ZXJ5KCAnaW5wdXRbbmFtZT1cIicgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3NlYXJjaF9mb3JtX3Jlc3VsdHNcIl1bdmFsdWU9XCJib29raW5nc2VhcmNoXCJdJyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApLnRyaWdnZXIoJ2NoYW5nZScpO1xyXG5cclxuICAgICAgICAvLyBSZXNldCAgZm9yIFtib29raW5nZWRpdF0gLCBbYm9va2luZ2N1c3RvbWVybGlzdGluZ10gLCBbYm9va2luZ3Jlc291cmNlIHR5cGU9NiBzaG93PSdjYXBhY2l0eSddICwgW2Jvb2tpbmdfY29uZmlybV1cclxuICAgICAgICBqUXVlcnkoICdpbnB1dFtuYW1lPVwiJyArIHNob3J0Y29kZV92YWwgKyAnX3dwYmNfc2hvcnRjb2RlX3R5cGVcIl1bdmFsdWU9XCJib29raW5nX2NvbmZpcm1cIl0nICkucHJvcCggJ2NoZWNrZWQnLCB0cnVlICkudHJpZ2dlcignY2hhbmdlJyk7XHJcblxyXG5cclxuICAgICAgICAvLyBib29raW5nX2ltcG9ydF9pY3MgLCBib29raW5nX2xpc3RpbmdfaWNzXHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ193cGJjX3VybCcgKS52YWwoICcnICkudHJpZ2dlciggJ2NoYW5nZScgKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX2Zyb20gb3B0aW9uW3ZhbHVlPVwidG9kYXlcIl0nICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoICdjaGFuZ2UnICk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBzaG9ydGNvZGVfdmFsICsgJ19mcm9tX29mZnNldCcgKS52YWwoICcnICkudHJpZ2dlciggJ2NoYW5nZScgKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX2Zyb21fb2Zmc2V0X3R5cGUgb3B0aW9uOmVxKDApJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfdW50aWwgb3B0aW9uW3ZhbHVlPVwiYW55XCJdJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfdW50aWxfb2Zmc2V0JyApLnZhbCggJycgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfdW50aWxfb2Zmc2V0X3R5cGUgb3B0aW9uOmVxKDApJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfY29uZGl0aW9uc19pbXBvcnQgb3B0aW9uOmVxKDApJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfY29uZGl0aW9uc19ldmVudHMgb3B0aW9uW3ZhbHVlPVwiMVwiXScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICkudHJpZ2dlciggJ2NoYW5nZScgKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIHNob3J0Y29kZV92YWwgKyAnX2NvbmRpdGlvbnNfbWF4X251bSBvcHRpb25bdmFsdWU9XCIwXCJdJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgc2hvcnRjb2RlX3ZhbCArICdfc2lsZW5jZSBvcHRpb25bdmFsdWU9XCIwXCJdJyApLnByb3AoICdzZWxlY3RlZCcsIHRydWUgKS50cmlnZ2VyKCAnY2hhbmdlJyApO1xyXG4gICAgfVxyXG5cclxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbi8qKlxyXG4gKiAgU0hPUlRDT0RFX0NPTkZJR1xyXG4gKiAqL1xyXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbi8qKlxyXG4gKiBXaGVuIGNsaWNrIG9uIG1lbnUgaXRlbSBpbiBcIkxlZnQgVmVydGljYWwgTmF2aWdhdGlvblwiIHBhbmVsICBpbiBzaG9ydGNvZGUgY29uZmlnIHBvcHVwXHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX3Nob3J0Y29kZV9jb25maWdfY2xpY2tfc2hvd19zZWN0aW9uKCBfdGhpcywgc2VjdGlvbl9pZF90b19zaG93LCBzaG9ydGNvZGVfbmFtZSApe1xyXG5cclxuICAgIC8vIE1lbnVcclxuICAgIGpRdWVyeSggX3RoaXMgKS5wYXJlbnRzKCAnLndwYmNfc2V0dGluZ3NfZmxleF9jb250YWluZXInICkuZmluZCggJy53cGJjX3NldHRpbmdzX25hdmlnYXRpb25faXRlbV9hY3RpdmUnICkucmVtb3ZlQ2xhc3MoICd3cGJjX3NldHRpbmdzX25hdmlnYXRpb25faXRlbV9hY3RpdmUnICk7XHJcbiAgICBqUXVlcnkoIF90aGlzICkucGFyZW50cyggJy53cGJjX3NldHRpbmdzX25hdmlnYXRpb25faXRlbScgKS5hZGRDbGFzcyggJ3dwYmNfc2V0dGluZ3NfbmF2aWdhdGlvbl9pdGVtX2FjdGl2ZScgKTtcclxuXHJcbiAgICAvLyBDb250ZW50XHJcbiAgICBqUXVlcnkoIF90aGlzICkucGFyZW50cyggJy53cGJjX3NldHRpbmdzX2ZsZXhfY29udGFpbmVyJyApLmZpbmQoICcud3BiY19zY19jb250YWluZXJfX3Nob3J0Y29kZScgKS5oaWRlKCk7XHJcbiAgICBqUXVlcnkoIHNlY3Rpb25faWRfdG9fc2hvdyApLnNob3coKTtcclxuXHJcbiAgICAvLyBTY3JvbGxcclxuICAgIGlmICggJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mICh3cGJjX3Njcm9sbF90bykgKXtcclxuICAgICAgICB3cGJjX3Njcm9sbF90byggc2VjdGlvbl9pZF90b19zaG93ICk7XHJcbiAgICB9XHJcbiAgICAvLyBTZXQgLSBTaG9ydGNvZGUgVHlwZVxyXG4gICAgalF1ZXJ5KCAnI3dwYmNfc2hvcnRjb2RlX3R5cGUnKS52YWwoIHNob3J0Y29kZV9uYW1lICk7XHJcblxyXG4gICAgLy8gUGFyc2Ugc2hvcnRjb2RlIHBhcmFtc1xyXG4gICAgd3BiY19zZXRfc2hvcnRjb2RlKCk7XHJcbn1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEbyBOZXh0IC8gUHJpb3Igc3RlcFxyXG4gICAgICogQHBhcmFtIF90aGlzXHRcdGJ1dHRvbiAgdGhpc1xyXG4gICAgICogQHBhcmFtIHN0ZXBcdFx0J3ByaW9yJyB8ICduZXh0J1xyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiB3cGJjX3Nob3J0Y29kZV9jb25maWdfY29udGVudF90b29sYmFyX19uZXh0X3ByaW9yKCBfdGhpcywgc3RlcCApe1xyXG5cclxuICAgICAgICB2YXIgal93b3JrX25hdl90YWI7XHJcblxyXG4gICAgICAgIHZhciBzdWJtZW51X3NlbGVjdGVkID0galF1ZXJ5KCBfdGhpcyApLnBhcmVudHMoICcud3BiY19zY19jb250YWluZXJfX3Nob3J0Y29kZScgKS5maW5kKCAnLndwYmNfc2NfY29udGFpbmVyX19zaG9ydGNvZGVfc2VjdGlvbjp2aXNpYmxlJyApLmZpbmQoICcud3BkZXZlbG9wLXN1Ym1lbnUtdGFiLXNlbGVjdGVkOnZpc2libGUnICk7XHJcbiAgICAgICAgaWYgKCBzdWJtZW51X3NlbGVjdGVkLmxlbmd0aCApe1xyXG4gICAgICAgICAgICBpZiAoICduZXh0JyA9PT0gc3RlcCApe1xyXG4gICAgICAgICAgICAgICAgal93b3JrX25hdl90YWIgPSBzdWJtZW51X3NlbGVjdGVkLm5leHRBbGwoICdhLm5hdi10YWI6dmlzaWJsZScgKS5maXJzdCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgal93b3JrX25hdl90YWIgPSBzdWJtZW51X3NlbGVjdGVkLnByZXZBbGwoICdhLm5hdi10YWI6dmlzaWJsZScgKS5maXJzdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICggal93b3JrX25hdl90YWIubGVuZ3RoICl7XHJcbiAgICAgICAgICAgICAgICBqX3dvcmtfbmF2X3RhYi50cmlnZ2VyKCAnY2xpY2snICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICggJ25leHQnID09PSBzdGVwICl7XHJcbiAgICAgICAgICAgIGpfd29ya19uYXZfdGFiID0galF1ZXJ5KCBfdGhpcyApLnBhcmVudHMoICcud3BiY19zY19jb250YWluZXJfX3Nob3J0Y29kZScgKS5maW5kKCAnLm5hdi10YWIubmF2LXRhYi1hY3RpdmU6dmlzaWJsZScgKS5uZXh0QWxsKCAnYS5uYXYtdGFiOnZpc2libGUnICkuZmlyc3QoKTtcclxuICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgIGpfd29ya19uYXZfdGFiID0galF1ZXJ5KCBfdGhpcyApLnBhcmVudHMoICcud3BiY19zY19jb250YWluZXJfX3Nob3J0Y29kZScgKS5maW5kKCAnLm5hdi10YWIubmF2LXRhYi1hY3RpdmU6dmlzaWJsZScgKS5wcmV2QWxsKCAnYS5uYXYtdGFiOnZpc2libGUnICkuZmlyc3QoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICggal93b3JrX25hdl90YWIubGVuZ3RoICl7XHJcbiAgICAgICAgICAgIGpfd29ya19uYXZfdGFiLnRyaWdnZXIoICdjbGljaycgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbmRpdGlvbjogICB7c2VsZWN0LWRheSBjb25kaXRpb249XCJ3ZWVrZGF5XCIgZm9yPVwiNVwiIHZhbHVlPVwiM1wifVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfd2Vla2RheV9fYWRkKGlkKXtcclxuICAgICAgICB2YXIgY29uZGl0aW9uX3J1bGVfYXJyID0gW107XHJcbiAgICAgICAgZm9yICggdmFyIHdlZWtkYXlfbnVtID0gMDsgd2Vla2RheV9udW0gPCA4OyB3ZWVrZGF5X251bSsrICl7XHJcbiAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBpZCArICdfX3dlZWtkYXlfJyArIHdlZWtkYXlfbnVtICkuaXMoICc6Y2hlY2tlZCcgKSApe1xyXG4gICAgICAgICAgICAgICAgdmFyIGRheXNfdG9fc2VsZWN0ID0galF1ZXJ5KCAnIycgKyBpZCArICdfX2RheXNfbnVtYmVyXycgKyB3ZWVrZGF5X251bSApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgd29yZHMgZXhjZXB0IGRpZ2l0cyBhbmQgLCBhbmQgLVxyXG4gICAgICAgICAgICAgICAgZGF5c190b19zZWxlY3QgPSBkYXlzX3RvX3NlbGVjdC5yZXBsYWNlKC9bXjAtOSwtXS9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBkYXlzX3RvX3NlbGVjdCA9IGRheXNfdG9fc2VsZWN0LnJlcGxhY2UoL1ssXXsyLH0vZywgJywnKTtcclxuICAgICAgICAgICAgICAgIGRheXNfdG9fc2VsZWN0ID0gZGF5c190b19zZWxlY3QucmVwbGFjZSgvWy1dezIsfS9nLCAnLScpO1xyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCAnIycgKyBpZCArICdfX2RheXNfbnVtYmVyXycgKyB3ZWVrZGF5X251bSApLnZhbCggZGF5c190b19zZWxlY3QgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoICcnICE9PSBkYXlzX3RvX3NlbGVjdCApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl9ydWxlX2Fyci5wdXNoKCAne3NlbGVjdC1kYXkgY29uZGl0aW9uPVwid2Vla2RheVwiIGZvcj1cIicgKyB3ZWVrZGF5X251bSArICdcIiB2YWx1ZT1cIicgKyBkYXlzX3RvX3NlbGVjdCArICdcIn0nICk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlZCBoaWdobGlnaHQgZmllbGRzLCAgaWYgc29tZSByZXF1aXJlZCBmaWVsZHMgYXJlIGVtcHR5XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mICh3cGJjX2ZpZWxkX2hpZ2hsaWdodCkpICYmICgnJyA9PT0galF1ZXJ5KCAnIycgKyBpZCArICdfX2RheXNfbnVtYmVyXycgKyB3ZWVrZGF5X251bSApLnZhbCgpKSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3cGJjX2ZpZWxkX2hpZ2hsaWdodCggJyMnICsgaWQgKyAnX19kYXlzX251bWJlcl8nICsgd2Vla2RheV9udW0gKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGNvbmRpdGlvbl9ydWxlID0gY29uZGl0aW9uX3J1bGVfYXJyLmpvaW4oICcsJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX3RleHRhcmVhJyApLnZhbCggY29uZGl0aW9uX3J1bGUgKTtcclxuICAgICAgICB3cGJjX3NldF9zaG9ydGNvZGUoKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHdwYmNfc2hvcnRjb2RlX2NvbmZpZ19fc2VsZWN0X2RheV93ZWVrZGF5X19yZXNldChpZCl7XHJcblxyXG4gICAgICAgIGZvciAoIHZhciB3ZWVrZGF5X251bSA9IDA7IHdlZWtkYXlfbnVtIDwgODsgd2Vla2RheV9udW0rKyApe1xyXG4gICAgICAgICAgICBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF5c19udW1iZXJfJyArIHdlZWtkYXlfbnVtICkudmFsKCAnJyApO1xyXG4gICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgaWQgKyAnX193ZWVrZGF5XycgKyB3ZWVrZGF5X251bSApLmlzKCAnOmNoZWNrZWQnICkgKXtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX193ZWVrZGF5XycgKyB3ZWVrZGF5X251bSApLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBqUXVlcnkoICcjJyArIGlkICsgJ190ZXh0YXJlYScgKS52YWwoICcnICk7XHJcbiAgICAgICAgd3BiY19zZXRfc2hvcnRjb2RlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZGl0aW9uOiAgIHtzZWxlY3QtZGF5IGNvbmRpdGlvbj1cInNlYXNvblwiIGZvcj1cIkhpZ2ggc2Vhc29uXCIgdmFsdWU9XCI3LTE0LDIwXCJ9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHdwYmNfc2hvcnRjb2RlX2NvbmZpZ19fc2VsZWN0X2RheV9zZWFzb25fX2FkZChpZCl7XHJcblxyXG4gICAgICAgIHZhciBzZWFzb25fZmlsdGVyX25hbWUgPSBqUXVlcnkoICcjJyArIGlkICsgJ19fc2Vhc29uX2ZpbHRlcl9uYW1lIG9wdGlvbjpzZWxlY3RlZCcgKS50ZXh0KCkudHJpbSgpO1xyXG4gICAgICAgIC8vIEVzY2FwZSBxdW90ZSBzeW1ib2xzXHJcbiAgICAgICAgc2Vhc29uX2ZpbHRlcl9uYW1lID0gc2Vhc29uX2ZpbHRlcl9uYW1lLnJlcGxhY2UoL1tcXFwiXCJdL2csICdcXFxcXCInKTtcclxuXHJcbiAgICAgICAgdmFyIGRheXNfbnVtYmVyID0galF1ZXJ5KCAnIycgKyBpZCArICdfX2RheXNfbnVtYmVyJyApLnZhbCgpLnRyaW0oKTtcclxuICAgICAgICAvLyBSZW1vdmUgYWxsIHdvcmRzIGV4Y2VwdCBkaWdpdHMgYW5kICwgYW5kIC1cclxuICAgICAgICBkYXlzX251bWJlciA9IGRheXNfbnVtYmVyLnJlcGxhY2UoIC9bXjAtOSwtXS9nLCAnJyApO1xyXG4gICAgICAgIGRheXNfbnVtYmVyID0gZGF5c19udW1iZXIucmVwbGFjZSggL1ssXXsyLH0vZywgJywnICk7XHJcbiAgICAgICAgZGF5c19udW1iZXIgPSBkYXlzX251bWJlci5yZXBsYWNlKCAvWy1dezIsfS9nLCAnLScgKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF5c19udW1iZXInICkudmFsKCBkYXlzX251bWJlciApO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICgnJyAhPSBkYXlzX251bWJlcilcclxuICAgICAgICAgICAgJiYgKCcnICE9IHNlYXNvbl9maWx0ZXJfbmFtZSlcclxuICAgICAgICAgICAgJiYgKDAgIT0galF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZScgKS52YWwoKSlcclxuXHJcbiAgICAgICAgKXtcclxuICAgICAgICAgICAgdmFyIGV4aXN0X2NvbmZpZ3VyYXRpb24gPSBqUXVlcnkoICcjJyArIGlkICsgJ190ZXh0YXJlYScgKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgIGV4aXN0X2NvbmZpZ3VyYXRpb24gPSBleGlzdF9jb25maWd1cmF0aW9uLnJlcGxhY2VBbGwoXCJ9LHtcIiwgJ31+fnsnKVxyXG4gICAgICAgICAgICB2YXIgY29uZGl0aW9uX3J1bGVfYXJyID0gZXhpc3RfY29uZmlndXJhdGlvbi5zcGxpdCggJ35+JyApO1xyXG5cclxuICAgICAgICAgICAgLy8gUmVtb3ZlIGVtcHR5IHNwYWNlcyBmcm9tICBhcnJheSA6ICcnIHwgXCJcIlxyXG4gICAgICAgICAgICBjb25kaXRpb25fcnVsZV9hcnIgPSBjb25kaXRpb25fcnVsZV9hcnIuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuOyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbl9ydWxlX2Fyci5wdXNoKCAne3NlbGVjdC1kYXkgY29uZGl0aW9uPVwic2Vhc29uXCIgZm9yPVwiJyArIHNlYXNvbl9maWx0ZXJfbmFtZSArICdcIiB2YWx1ZT1cIicgKyBkYXlzX251bWJlciArICdcIn0nICk7XHJcblxyXG4gICAgICAgICAgICAvLyBSZW1vdmUgZHVwbGljYXRlcyBmcm9tICB0aGUgYXJyYXlcclxuICAgICAgICAgICAgY29uZGl0aW9uX3J1bGVfYXJyID0gY29uZGl0aW9uX3J1bGVfYXJyLmZpbHRlciggZnVuY3Rpb24gKCBpdGVtLCBwb3MgKXsgcmV0dXJuIGNvbmRpdGlvbl9ydWxlX2Fyci5pbmRleE9mKCBpdGVtICkgPT09IHBvczsgfSApO1xyXG4gICAgICAgICAgICB2YXIgY29uZGl0aW9uX3J1bGUgPSBjb25kaXRpb25fcnVsZV9hcnIuam9pbiggJywnICk7XHJcbiAgICAgICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX3RleHRhcmVhJyApLnZhbCggY29uZGl0aW9uX3J1bGUgKTtcclxuXHJcbiAgICAgICAgICAgIHdwYmNfc2V0X3Nob3J0Y29kZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVkIGhpZ2hsaWdodCBmaWVsZHMsICBpZiBzb21lIHJlcXVpcmVkIGZpZWxkcyBhcmUgZW1wdHlcclxuICAgICAgICBpZiAoICgnZnVuY3Rpb24nID09PSB0eXBlb2YgKHdwYmNfZmllbGRfaGlnaGxpZ2h0KSkgJiYgKCcnID09PSBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF5c19udW1iZXInICkudmFsKCkpICl7XHJcbiAgICAgICAgICAgIHdwYmNfZmllbGRfaGlnaGxpZ2h0KCAnIycgKyBpZCArICdfX2RheXNfbnVtYmVyJyApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoICgnZnVuY3Rpb24nID09PSB0eXBlb2YgKHdwYmNfZmllbGRfaGlnaGxpZ2h0KSkgJiYgKCcwJyA9PT0galF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZScgKS52YWwoKSkgKXtcclxuICAgICAgICAgICAgd3BiY19maWVsZF9oaWdobGlnaHQoICcjJyArIGlkICsgJ19fc2Vhc29uX2ZpbHRlcl9uYW1lJyApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfc2Vhc29uX19yZXNldChpZCl7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZSBvcHRpb246ZXEoMCknICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX19kYXlzX251bWJlcicgKS52YWwoICcnICk7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBpZCArICdfdGV4dGFyZWEnICkudmFsKCAnJyApO1xyXG4gICAgICAgIHdwYmNfc2V0X3Nob3J0Y29kZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbmRpdGlvbjogICB7c3RhcnQtZGF5IGNvbmRpdGlvbj1cInNlYXNvblwiIGZvcj1cIkxvdyBzZWFzb25cIiB2YWx1ZT1cIjAsMSw1XCJ9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHdwYmNfc2hvcnRjb2RlX2NvbmZpZ19fc3RhcnRfZGF5X3NlYXNvbl9fYWRkKCBpZCApe1xyXG5cclxuICAgICAgICB2YXIgc2Vhc29uX2ZpbHRlcl9uYW1lID0galF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZSBvcHRpb246c2VsZWN0ZWQnICkudGV4dCgpLnRyaW0oKTtcclxuICAgICAgICAvLyBFc2NhcGUgcXVvdGUgc3ltYm9sc1xyXG4gICAgICAgIHNlYXNvbl9maWx0ZXJfbmFtZSA9IHNlYXNvbl9maWx0ZXJfbmFtZS5yZXBsYWNlKC9bXFxcIlwiXS9nLCAnXFxcXFwiJyk7XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgKCcnICE9IHNlYXNvbl9maWx0ZXJfbmFtZSlcclxuICAgICAgICAgICAgJiYgKDAgIT0galF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZScgKS52YWwoKSlcclxuXHJcbiAgICAgICAgKXtcclxuICAgICAgICAgICAgdmFyIGFjdGl2YXRlZF93ZWVrZGF5cyA9W107XHJcbiAgICAgICAgICAgIGZvciAoIHZhciB3ZWVrZGF5X251bSA9IDA7IHdlZWtkYXlfbnVtIDwgODsgd2Vla2RheV9udW0rKyApe1xyXG4gICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkoICcjJyArIGlkICsgJ19fd2Vla2RheV8nICsgd2Vla2RheV9udW0gKS5pcyggJzpjaGVja2VkJyApICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlZF93ZWVrZGF5cy5wdXNoKCB3ZWVrZGF5X251bSApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFjdGl2YXRlZF93ZWVrZGF5cyA9IGFjdGl2YXRlZF93ZWVrZGF5cy5qb2luKCAnLCcgKTtcclxuXHJcbiAgICAgICAgICAgIGlmICggJycgIT0gYWN0aXZhdGVkX3dlZWtkYXlzICl7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGV4aXN0X2NvbmZpZ3VyYXRpb24gPSBqUXVlcnkoICcjJyArIGlkICsgJ190ZXh0YXJlYScgKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBleGlzdF9jb25maWd1cmF0aW9uID0gZXhpc3RfY29uZmlndXJhdGlvbi5yZXBsYWNlQWxsKCBcIn0se1wiLCAnfX5+eycgKVxyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmRpdGlvbl9ydWxlX2FyciA9IGV4aXN0X2NvbmZpZ3VyYXRpb24uc3BsaXQoICd+ficgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZW1wdHkgc3BhY2VzIGZyb20gIGFycmF5IDogJycgfCBcIlwiXHJcbiAgICAgICAgICAgICAgICBjb25kaXRpb25fcnVsZV9hcnIgPSBjb25kaXRpb25fcnVsZV9hcnIuZmlsdGVyKCBmdW5jdGlvbiAoIG4gKXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbjtcclxuICAgICAgICAgICAgICAgIH0gKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25kaXRpb25fcnVsZV9hcnIucHVzaCggJ3tzdGFydC1kYXkgY29uZGl0aW9uPVwic2Vhc29uXCIgZm9yPVwiJyArIHNlYXNvbl9maWx0ZXJfbmFtZSArICdcIiB2YWx1ZT1cIicgKyBhY3RpdmF0ZWRfd2Vla2RheXMgKyAnXCJ9JyApO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gIHRoZSBhcnJheVxyXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uX3J1bGVfYXJyID0gY29uZGl0aW9uX3J1bGVfYXJyLmZpbHRlciggZnVuY3Rpb24gKCBpdGVtLCBwb3MgKXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uX3J1bGVfYXJyLmluZGV4T2YoIGl0ZW0gKSA9PT0gcG9zO1xyXG4gICAgICAgICAgICAgICAgfSApO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmRpdGlvbl9ydWxlID0gY29uZGl0aW9uX3J1bGVfYXJyLmpvaW4oICcsJyApO1xyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCAnIycgKyBpZCArICdfdGV4dGFyZWEnICkudmFsKCBjb25kaXRpb25fcnVsZSApO1xyXG5cclxuICAgICAgICAgICAgICAgIHdwYmNfc2V0X3Nob3J0Y29kZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZWQgaGlnaGxpZ2h0IGZpZWxkcywgIGlmIHNvbWUgcmVxdWlyZWQgZmllbGRzIGFyZSBlbXB0eVxyXG4gICAgICAgIGlmICggKCdmdW5jdGlvbicgPT09IHR5cGVvZiAod3BiY19maWVsZF9oaWdobGlnaHQpKSAmJiAoJzAnID09PSBqUXVlcnkoICcjJyArIGlkICsgJ19fc2Vhc29uX2ZpbHRlcl9uYW1lJyApLnZhbCgpKSApe1xyXG4gICAgICAgICAgICB3cGJjX2ZpZWxkX2hpZ2hsaWdodCggJyMnICsgaWQgKyAnX19zZWFzb25fZmlsdGVyX25hbWUnICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gd3BiY19zaG9ydGNvZGVfY29uZmlnX19zdGFydF9kYXlfc2Vhc29uX19yZXNldChpZCl7XHJcbiAgICAgICAgalF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZSBvcHRpb246ZXEoMCknICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApO1xyXG4gICAgICAgIGZvciAoIHZhciB3ZWVrZGF5X251bSA9IDA7IHdlZWtkYXlfbnVtIDwgODsgd2Vla2RheV9udW0rKyApe1xyXG4gICAgICAgICAgICBpZiAoIGpRdWVyeSggJyMnICsgaWQgKyAnX193ZWVrZGF5XycgKyB3ZWVrZGF5X251bSApLmlzKCAnOmNoZWNrZWQnICkgKXtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX193ZWVrZGF5XycgKyB3ZWVrZGF5X251bSApLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBqUXVlcnkoICcjJyArIGlkICsgJ190ZXh0YXJlYScgKS52YWwoICcnICk7XHJcbiAgICAgICAgd3BiY19zZXRfc2hvcnRjb2RlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZGl0aW9uOiAgIHtzZWxlY3QtZGF5IGNvbmRpdGlvbj1cImRhdGVcIiBmb3I9XCIyMDIzLTEwLTAxXCIgdmFsdWU9XCIyMCwyNSwzMC0zNVwifVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfZm9yZGF0ZV9fYWRkKGlkKXtcclxuXHJcbiAgICAgICAgdmFyIHN0YXJ0X2RhdGVfX2ZvcmRhdGUgPSBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF0ZScgKS52YWwoKS50cmltKCk7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGFsbCB3b3JkcyBleGNlcHQgZGlnaXRzIGFuZCAsIGFuZCAtXHJcbiAgICAgICAgc3RhcnRfZGF0ZV9fZm9yZGF0ZSA9IHN0YXJ0X2RhdGVfX2ZvcmRhdGUucmVwbGFjZSggL1teMC05LV0vZywgJycgKTtcclxuXHJcbiAgICAgICAgdmFyIGdsb2JhbFJlZ2V4ID0gbmV3IFJlZ0V4cCggL15cXGR7NH0tWzAxXXsxfVxcZHsxfS1bMDEyM117MX1cXGR7MX0kLywgJ2cnICk7XHJcbiAgICAgICAgdmFyIGlzX3ZhbGlkX2RhdGUgPSBnbG9iYWxSZWdleC50ZXN0KCBzdGFydF9kYXRlX19mb3JkYXRlICk7XHJcbiAgICAgICAgaWYgKCAhaXNfdmFsaWRfZGF0ZSApe1xyXG4gICAgICAgICAgICBzdGFydF9kYXRlX19mb3JkYXRlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX19kYXRlJyApLnZhbCggc3RhcnRfZGF0ZV9fZm9yZGF0ZSApO1xyXG5cclxuICAgICAgICB2YXIgZGF5c19udW1iZXIgPSBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF5c19udW1iZXInICkudmFsKCkudHJpbSgpO1xyXG4gICAgICAgIC8vIFJlbW92ZSBhbGwgd29yZHMgZXhjZXB0IGRpZ2l0cyBhbmQgLCBhbmQgLVxyXG4gICAgICAgIGRheXNfbnVtYmVyID0gZGF5c19udW1iZXIucmVwbGFjZSggL1teMC05LC1dL2csICcnICk7XHJcbiAgICAgICAgZGF5c19udW1iZXIgPSBkYXlzX251bWJlci5yZXBsYWNlKCAvWyxdezIsfS9nLCAnLCcgKTtcclxuICAgICAgICBkYXlzX251bWJlciA9IGRheXNfbnVtYmVyLnJlcGxhY2UoIC9bLV17Mix9L2csICctJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX19kYXlzX251bWJlcicgKS52YWwoIGRheXNfbnVtYmVyICk7XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgKCcnICE9IGRheXNfbnVtYmVyKVxyXG4gICAgICAgICAgICAmJiAoJycgIT0gc3RhcnRfZGF0ZV9fZm9yZGF0ZSlcclxuICAgICAgICAgICAgJiYgKDAgIT0galF1ZXJ5KCAnIycgKyBpZCArICdfX3NlYXNvbl9maWx0ZXJfbmFtZScgKS52YWwoKSlcclxuXHJcbiAgICAgICAgKXtcclxuICAgICAgICAgICAgdmFyIGV4aXN0X2NvbmZpZ3VyYXRpb24gPSBqUXVlcnkoICcjJyArIGlkICsgJ190ZXh0YXJlYScgKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgIGV4aXN0X2NvbmZpZ3VyYXRpb24gPSBleGlzdF9jb25maWd1cmF0aW9uLnJlcGxhY2VBbGwoXCJ9LHtcIiwgJ31+fnsnKVxyXG4gICAgICAgICAgICB2YXIgY29uZGl0aW9uX3J1bGVfYXJyID0gZXhpc3RfY29uZmlndXJhdGlvbi5zcGxpdCggJ35+JyApO1xyXG5cclxuICAgICAgICAgICAgLy8gUmVtb3ZlIGVtcHR5IHNwYWNlcyBmcm9tICBhcnJheSA6ICcnIHwgXCJcIlxyXG4gICAgICAgICAgICBjb25kaXRpb25fcnVsZV9hcnIgPSBjb25kaXRpb25fcnVsZV9hcnIuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuOyB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbmRpdGlvbl9ydWxlX2Fyci5wdXNoKCAne3NlbGVjdC1kYXkgY29uZGl0aW9uPVwiZGF0ZVwiIGZvcj1cIicgKyBzdGFydF9kYXRlX19mb3JkYXRlICsgJ1wiIHZhbHVlPVwiJyArIGRheXNfbnVtYmVyICsgJ1wifScgKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20gIHRoZSBhcnJheVxyXG4gICAgICAgICAgICBjb25kaXRpb25fcnVsZV9hcnIgPSBjb25kaXRpb25fcnVsZV9hcnIuZmlsdGVyKCBmdW5jdGlvbiAoIGl0ZW0sIHBvcyApeyByZXR1cm4gY29uZGl0aW9uX3J1bGVfYXJyLmluZGV4T2YoIGl0ZW0gKSA9PT0gcG9zOyB9ICk7XHJcbiAgICAgICAgICAgIHZhciBjb25kaXRpb25fcnVsZSA9IGNvbmRpdGlvbl9ydWxlX2Fyci5qb2luKCAnLCcgKTtcclxuICAgICAgICAgICAgalF1ZXJ5KCAnIycgKyBpZCArICdfdGV4dGFyZWEnICkudmFsKCBjb25kaXRpb25fcnVsZSApO1xyXG5cclxuICAgICAgICAgICAgICAgICB3cGJjX3NldF9zaG9ydGNvZGUoKTtcclxuICAgICAgICB9IGVsc2VcclxuXHJcbiAgICAgICAgLy8gUmVkIGhpZ2hsaWdodCBmaWVsZHMsICBpZiBzb21lIHJlcXVpcmVkIGZpZWxkcyBhcmUgZW1wdHlcclxuICAgICAgICBpZiAoICgnZnVuY3Rpb24nID09PSB0eXBlb2YgKHdwYmNfZmllbGRfaGlnaGxpZ2h0KSkgJiYgKCcnID09PSBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF0ZScgKS52YWwoKSkgKXtcclxuICAgICAgICAgICAgd3BiY19maWVsZF9oaWdobGlnaHQoICcjJyArIGlkICsgJ19fZGF0ZScgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mICh3cGJjX2ZpZWxkX2hpZ2hsaWdodCkpICYmICgnJyA9PT0galF1ZXJ5KCAnIycgKyBpZCArICdfX2RheXNfbnVtYmVyJyApLnZhbCgpKSApe1xyXG4gICAgICAgICAgICB3cGJjX2ZpZWxkX2hpZ2hsaWdodCggJyMnICsgaWQgKyAnX19kYXlzX251bWJlcicgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiB3cGJjX3Nob3J0Y29kZV9jb25maWdfX3NlbGVjdF9kYXlfZm9yZGF0ZV9fcmVzZXQoaWQpe1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX19kYXRlJyApLnZhbCggJycgKTtcclxuICAgICAgICBqUXVlcnkoICcjJyArIGlkICsgJ19fZGF5c19udW1iZXInICkudmFsKCAnJyApO1xyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX3RleHRhcmVhJyApLnZhbCggJycgKTtcclxuICAgICAgICB3cGJjX3NldF9zaG9ydGNvZGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgXHJcbmZ1bmN0aW9uIHdwYmNfc2hvcnRjb2RlX2NvbmZpZ19fdXBkYXRlX2VsZW1lbnRzX2luX3RpbWVsaW5lKCl7XHJcblxyXG4gICAgdmFyIHdwYmNfaXNfbWF0cml4ID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCBqUXVlcnkoICcjYm9va2luZ3RpbWVsaW5lX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzJyApLmxlbmd0aCA+IDAgKSB7XHJcblxyXG4gICAgICAgIHZhciBib29raW5ndGltZWxpbmVfd3BiY19tdWx0aXBsZV9yZXNvdXJjZXNfdGVtcCA9IGpRdWVyeSggJyNib29raW5ndGltZWxpbmVfd3BiY19tdWx0aXBsZV9yZXNvdXJjZXMnICkudmFsKCk7XHJcblxyXG4gICAgICAgIGlmICggKCBib29raW5ndGltZWxpbmVfd3BiY19tdWx0aXBsZV9yZXNvdXJjZXNfdGVtcCAhPSBudWxsICkgJiYgKCBib29raW5ndGltZWxpbmVfd3BiY19tdWx0aXBsZV9yZXNvdXJjZXNfdGVtcC5sZW5ndGggPiAwICkgICl7XHJcblxyXG4gICAgICAgICAgICBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ3RpbWVsaW5lX3dwYmNfdmlld19tb2RlX3RpbWVsaW5lX21vbnRoc19udW1faW5fcm93J11cIiApLnByb3AoIFwiZGlzYWJsZWRcIiwgZmFsc2UgKTtcclxuICAgICAgICAgICAgalF1ZXJ5KCBcIi53cGJjX3NjX2NvbnRhaW5lcl9fc2hvcnRjb2RlX2Jvb2tpbmd0aW1lbGluZSBsYWJlbC53cGJjLWZvcm0tcmFkaW9cIiApLnNob3coKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAoIGJvb2tpbmd0aW1lbGluZV93cGJjX211bHRpcGxlX3Jlc291cmNlc190ZW1wLmxlbmd0aCA+IDEgKVxyXG4gICAgICAgICAgICAgICAgfHwgICggKGJvb2tpbmd0aW1lbGluZV93cGJjX211bHRpcGxlX3Jlc291cmNlc190ZW1wLmxlbmd0aCA9PSAxKSAmJiAoYm9va2luZ3RpbWVsaW5lX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzX3RlbXBbIDAgXSA9PSAnMCcpKVxyXG4gICAgICAgICAgICApeyAgLy8gTWF0cml4XHJcbiAgICAgICAgICAgICAgICB3cGJjX2lzX21hdHJpeCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ3RpbWVsaW5lX3dwYmNfdmlld19tb2RlX3RpbWVsaW5lX21vbnRoc19udW1faW5fcm93J11bdmFsdWU9JzkwJ11cIiApLnByb3AoIFwiZGlzYWJsZWRcIiwgdHJ1ZSApO1xyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmd0aW1lbGluZV93cGJjX3ZpZXdfbW9kZV90aW1lbGluZV9tb250aHNfbnVtX2luX3JvdyddW3ZhbHVlPSc5MCddXCIgKS5wYXJlbnRzKCcud3BiYy1mb3JtLXJhZGlvJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmd0aW1lbGluZV93cGJjX3ZpZXdfbW9kZV90aW1lbGluZV9tb250aHNfbnVtX2luX3JvdyddW3ZhbHVlPSczNjUnXVwiICkucHJvcCggXCJkaXNhYmxlZFwiLCB0cnVlICk7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ3RpbWVsaW5lX3dwYmNfdmlld19tb2RlX3RpbWVsaW5lX21vbnRoc19udW1faW5fcm93J11bdmFsdWU9JzM2NSddXCIgKS5wYXJlbnRzKCcud3BiYy1mb3JtLXJhZGlvJykuaGlkZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luZ2xlXHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ3RpbWVsaW5lX3dwYmNfdmlld19tb2RlX3RpbWVsaW5lX21vbnRoc19udW1faW5fcm93J11bdmFsdWU9JzEnXVwiICkucHJvcCggXCJkaXNhYmxlZFwiLCB0cnVlICk7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoIFwiaW5wdXRbbmFtZT0nYm9va2luZ3RpbWVsaW5lX3dwYmNfdmlld19tb2RlX3RpbWVsaW5lX21vbnRoc19udW1faW5fcm93J11bdmFsdWU9JzEnXVwiICkucGFyZW50cygnLndwYmMtZm9ybS1yYWRpbycpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggXCJpbnB1dFtuYW1lPSdib29raW5ndGltZWxpbmVfd3BiY192aWV3X21vZGVfdGltZWxpbmVfbW9udGhzX251bV9pbl9yb3cnXVt2YWx1ZT0nNyddXCIgKS5wcm9wKCBcImRpc2FibGVkXCIsIHRydWUgKTtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggXCJpbnB1dFtuYW1lPSdib29raW5ndGltZWxpbmVfd3BiY192aWV3X21vZGVfdGltZWxpbmVfbW9udGhzX251bV9pbl9yb3cnXVt2YWx1ZT0nNyddXCIgKS5wYXJlbnRzKCcud3BiYy1mb3JtLXJhZGlvJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmd0aW1lbGluZV93cGJjX3ZpZXdfbW9kZV90aW1lbGluZV9tb250aHNfbnVtX2luX3JvdyddW3ZhbHVlPSc2MCddXCIgKS5wcm9wKCBcImRpc2FibGVkXCIsIHRydWUgKTtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggXCJpbnB1dFtuYW1lPSdib29raW5ndGltZWxpbmVfd3BiY192aWV3X21vZGVfdGltZWxpbmVfbW9udGhzX251bV9pbl9yb3cnXVt2YWx1ZT0nNjAnXVwiICkucGFyZW50cygnLndwYmMtZm9ybS1yYWRpbycpLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmICggalF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmd0aW1lbGluZV93cGJjX3ZpZXdfbW9kZV90aW1lbGluZV9tb250aHNfbnVtX2luX3JvdyddOmNoZWNrZWRcIiApLmlzKCc6ZGlzYWJsZWQnKSApIHtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggXCJpbnB1dFtuYW1lPSdib29raW5ndGltZWxpbmVfd3BiY192aWV3X21vZGVfdGltZWxpbmVfbW9udGhzX251bV9pbl9yb3cnXVt2YWx1ZT0nMzAnXVwiICkucHJvcCggXCJjaGVja2VkXCIsIHRydWUgKTtcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciB2aWV3X2RheXNfbnVtX3RlbXAgPSAzMDtcclxuICAgIGlmICggalF1ZXJ5KCBcImlucHV0W25hbWU9J2Jvb2tpbmd0aW1lbGluZV93cGJjX3ZpZXdfbW9kZV90aW1lbGluZV9tb250aHNfbnVtX2luX3JvdyddOmNoZWNrZWRcIiApLmxlbmd0aCA+IDAgKXtcclxuICAgICAgICB2YXIgdmlld19kYXlzX251bV90ZW1wID0gcGFyc2VJbnQoIGpRdWVyeSggXCJpbnB1dFtuYW1lPSdib29raW5ndGltZWxpbmVfd3BiY192aWV3X21vZGVfdGltZWxpbmVfbW9udGhzX251bV9pbl9yb3cnXTpjaGVja2VkXCIgKS52YWwoKS50cmltKCkgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBIaWRlIG9yIFNob3cgU2Nyb2xsaW5nIERheXMgYW5kIE1vbnRocywgZGVwZW5kaW5nIG9uIGZyb20gdHlwZSBvZiB2aWV3IGFuZCBudW1iZXIgb2YgYm9va2luZyByZXNvdXJjZXNcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIGpRdWVyeSggXCIjd3BiY19ib29raW5ndGltZWxpbmVfc2Nyb2xsX21vbnRoLCN3cGJjX2Jvb2tpbmd0aW1lbGluZV9zY3JvbGxfZGF5XCIgKS5wcm9wKCBcImRpc2FibGVkXCIsIGZhbHNlICk7XHJcbiAgICBqUXVlcnkoIFwiLndwYmNfYm9va2luZ3RpbWVsaW5lX3Njcm9sbF9tb250aCwud3BiY19ib29raW5ndGltZWxpbmVfc2Nyb2xsX2RheVwiICkuc2hvdygpO1xyXG4gICAgLy8gTWF0cml4IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIGlmIChcclxuICAgICAgICAgICggd3BiY19pc19tYXRyaXggKSAmJiAoICggdmlld19kYXlzX251bV90ZW1wID09IDEgKSB8fCAoIHZpZXdfZGF5c19udW1fdGVtcCA9PSA3ICkgKSAvLyBEYXkgfCBXZWVrIHZpZXdcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgalF1ZXJ5KCBcIiN3cGJjX2Jvb2tpbmd0aW1lbGluZV9zY3JvbGxfbW9udGhcIiApLnByb3AoIFwiZGlzYWJsZWRcIiwgdHJ1ZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTY3JvbGwgTW9udGggTk9UIHdvcmtpbmdcclxuICAgICAgICAgICAgalF1ZXJ5KCAnLndwYmNfYm9va2luZ3RpbWVsaW5lX3Njcm9sbF9tb250aCcgKS5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICAgICAgKCB3cGJjX2lzX21hdHJpeCApJiYgKCAoIHZpZXdfZGF5c19udW1fdGVtcCA9PSAzMCApIHx8ICggdmlld19kYXlzX251bV90ZW1wID09IDYwICkgKSAvLyBNb250aCB2aWV3XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGpRdWVyeSggXCIjd3BiY19ib29raW5ndGltZWxpbmVfc2Nyb2xsX2RheVwiICkucHJvcCggXCJkaXNhYmxlZFwiLCB0cnVlICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Nyb2xsIERheXMgTk9UIHdvcmtpbmdcclxuICAgICAgICAgICAgalF1ZXJ5KCAnLndwYmNfYm9va2luZ3RpbWVsaW5lX3Njcm9sbF9kYXknICkuaGlkZSgpO1xyXG4gICAgICAgIH1cclxuICAgIC8vIFNpbmdsZSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICBpZiAoXHJcbiAgICAgICAgICAoICEgd3BiY19pc19tYXRyaXggKSAmJiAoICggdmlld19kYXlzX251bV90ZW1wID09IDMwICkgfHwgKCB2aWV3X2RheXNfbnVtX3RlbXAgPT0gOTAgKSApICAvLyBNb250aCB8IDMgTW9udGhzIHZpZXcgKGxpa2Ugd2VlayB2aWV3KVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBqUXVlcnkoIFwiI3dwYmNfYm9va2luZ3RpbWVsaW5lX3Njcm9sbF9tb250aFwiICkucHJvcCggXCJkaXNhYmxlZFwiLCB0cnVlICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNjcm9sbCBNb250aCBOT1Qgd29ya2luZ1xyXG4gICAgICAgICAgICBqUXVlcnkoICcud3BiY19ib29raW5ndGltZWxpbmVfc2Nyb2xsX21vbnRoJyApLmhpZGUoKTtcclxuICAgICAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICAgICAoICEgd3BiY19pc19tYXRyaXggKSYmICggKCB2aWV3X2RheXNfbnVtX3RlbXAgPT0gMzY1ICkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFllYXIgdmlld1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBqUXVlcnkoIFwiI3dwYmNfYm9va2luZ3RpbWVsaW5lX3Njcm9sbF9kYXlcIiApLnByb3AoIFwiZGlzYWJsZWRcIiwgdHJ1ZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNjcm9sbCBEYXlzIE5PVCB3b3JraW5nXHJcbiAgICAgICAgICAgIGpRdWVyeSggJy53cGJjX2Jvb2tpbmd0aW1lbGluZV9zY3JvbGxfZGF5JyApLmhpZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcblxyXG5cclxuICAgIHJldHVybiBbIHdwYmNfaXNfbWF0cml4LCB2aWV3X2RheXNfbnVtX3RlbXAgXTtcclxufSAgICBcclxuXHJcbiAgICBcclxualF1ZXJ5KCBkb2N1bWVudCApLnJlYWR5KCBmdW5jdGlvbiAoKXtcclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAvLyBbYm9va2luZyAuLi4gXVxyXG5cclxuICAgIHZhciBzaG9ydGNvZGVfYXJyID0gWydib29raW5nJywgJ2Jvb2tpbmdjYWxlbmRhcicsICdib29raW5nc2VsZWN0JywgJ2Jvb2tpbmd0aW1lbGluZScsICdib29raW5nZm9ybScsICdib29raW5nc2VhcmNoJywgJ2Jvb2tpbmdvdGhlcicsICdib29raW5nX2ltcG9ydF9pY3MnICwgJ2Jvb2tpbmdfbGlzdGluZ19pY3MnXTtcclxuXHJcbiAgICBmb3IgKCB2YXIgc2hvcnRjZGVfa2V5IGluIHNob3J0Y29kZV9hcnIgKXtcclxuXHJcbiAgICAgICAgdmFyIGlkID0gc2hvcnRjb2RlX2Fyclsgc2hvcnRjZGVfa2V5IF07XHJcblxyXG4gICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICAvLyBIaWRlIGJ5IFNpemUgc2VjdGlvbnNcclxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAgalF1ZXJ5KCAnLicgKyBpZCArICdfd3BiY19zaXplX3dwYmNfc2NfY2FsZW5kYXJfc2l6ZScgKS5oaWRlKCk7XHJcblxyXG4gICAgICAgIC8vIG9wdGlvbnMgOjogU2hvdyAvIEhpZGUgU0laRSBjYWxlbmRhciAgc2VjdGlvblxyXG4gICAgICAgIGpRdWVyeSggJyMnICsgaWQgKyAnX3dwYmNfc2l6ZV9lbmFibGVkJyApLm9uKCAnY2hhbmdlJywgeydpZCc6IGlkfSwgZnVuY3Rpb24oIGV2ZW50ICl7XHJcbiAgICAgICAgICAgIGlmICggalF1ZXJ5KCAnIycgKyBldmVudC5kYXRhLmlkICsgJ193cGJjX3NpemVfZW5hYmxlZCcgKS5pcyggJzpjaGVja2VkJyApICl7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcuJyArIGV2ZW50LmRhdGEuaWQgKyAnX3dwYmNfc2l6ZV93cGJjX3NjX2NhbGVuZGFyX3NpemUnICkuc2hvdygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KCAnLicgKyBldmVudC5kYXRhLmlkICsgJ193cGJjX3NpemVfd3BiY19zY19jYWxlbmRhcl9zaXplJyApLmhpZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gKTtcclxuXHJcbiAgICAgICAgLy8gSWYgd2UgY2hhbmdlZCBudW1iZXIgb2YgbW9udGhzIGluICdTZXR1cCBTaXplICYgU3RydWN0dXJlJyB0aGVuICBjaGFuZ2UgZ2VuZXJhbCAnVmlzaWJsZSBtb250aHMnIG51bWJlciAgICAgIC8vRml4SW46IDEwLjAuMC40XHJcbiAgICAgICAgalF1ZXJ5KCAgJyMnICsgaWQgKyAnX3dwYmNfc2l6ZV9tb250aHNfbnVtX2luX3JvdycgICAgICAgICAgICAgICAgICAgLy8gLSBNb250aCBOdW0gaW4gUm93XHJcbiAgICAgICAgICAgICAgICAgICAgKS5vbiggJ2NoYW5nZScsIHsnaWQnOiBpZH0sIGZ1bmN0aW9uKGV2ZW50KXtcclxuICAgICAgICAgICAgalF1ZXJ5KCAnIycgKyBldmVudC5kYXRhLmlkICsgJ193cGJjX251bW1vbnRocyBvcHRpb25bdmFsdWU9XCInICsgcGFyc2VJbnQoIGpRdWVyeSggJyMnICsgZXZlbnQuZGF0YS5pZCArICdfd3BiY19zaXplX21vbnRoc19udW1faW5fcm93JyApLnZhbCgpLnRyaW0oKSApICsgJ1wiXScgKS5wcm9wKCAnc2VsZWN0ZWQnLCB0cnVlICk7Ly8udHJpZ2dlcignY2hhbmdlJyk7XHJcbiAgICAgICAgICAgIGlmICggJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mICh3cGJjX2ZpZWxkX2hpZ2hsaWdodCkgKXtcclxuICAgICAgICAgICAgICAgIHdwYmNfZmllbGRfaGlnaGxpZ2h0KCAnIycgKyBldmVudC5kYXRhLmlkICsgJ193cGJjX251bW1vbnRocycgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIC8vIFVwZGF0ZSBTaG9ydGNvZGUgb24gY2hhbmdpbmc6IFNpemVcclxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAgalF1ZXJ5KCAgICcjJyArIGlkICsgJ193cGJjX3NpemVfZW5hYmxlZCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpemUgT24gfCBPZmZcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc2l6ZV9tb250aHNfbnVtX2luX3JvdycgICAgICAgICAgICAgICAgICAgLy8gLSBNb250aCBOdW0gaW4gUm93XHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3NpemVfY2FsZW5kYXJfd2lkdGgnICAgICAgICAgICAgICAgICAgICAgIC8vIC0gV2lkdGhcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc2l6ZV9jYWxlbmRhcl93aWR0aF9weF9wcicgICAgICAgICAgICAgICAgLy8gLSBXaWR0aCBQUyB8ICVcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc2l6ZV9jYWxlbmRhcl9jZWxsX2hlaWdodCcgICAgICAgICAgICAgICAgLy8gLSBDZWxsIEhlaWdodFxyXG5cclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnd3BiY19zZWxlY3RfZGF5X3dlZWtkYXlfdGV4dGFyZWEnICAgICAgICAgICAgICAgLy8gUnVsZSBXZWVrZGF5XHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ3dwYmNfc2VsZWN0X2RheV9zZWFzb25fdGV4dGFyZWEnICAgICAgICAgICAgICAgIC8vIFJ1bGUgU2Vhc29uXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ3dwYmNfc3RhcnRfZGF5X3NlYXNvbl90ZXh0YXJlYScgICAgICAgICAgICAgICAgIC8vIFJ1bGUgU2Vhc29uIC0gU3RhcnQgZGF5XHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ3dwYmNfc2VsZWN0X2RheV9mb3JkYXRlX3RleHRhcmVhJyAgICAgICAgICAgICAgIC8vIFJ1bGUgRGF0ZVxyXG5cclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfcmVzb3VyY2VfaWQnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzb3VyY2UgSURcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfY3VzdG9tX2Zvcm0nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3VzdG9tIEZvcm1cclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfbnVtbW9udGhzJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTnVtIE1vbnRoc1xyXG5cclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc3RhcnRtb250aF9hY3RpdmUnICAgICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCBNb250aCBFbmFibGVcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc3RhcnRtb250aF95ZWFyJyAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgLSBZZWFyXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3N0YXJ0bW9udGhfbW9udGgnICAgICAgICAgICAgICAgICAgICAgICAgLy8gIC0gTW9udGhcclxuXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX2FnZ3JlZ2F0ZScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWdncmVnYXRlXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX2FnZ3JlZ2F0ZV9fYm9va2luZ3Nfb25seScgICAgICAgICAgICAgICAgLy8gYWdncmVnYXRlIG9wdGlvblxyXG5cclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfbXVsdGlwbGVfcmVzb3VyY2VzJyAgICAgICAgICAgICAgICAgICAgIC8vIFtib29raW5nc2VsZWN0XSAtIE11bHRpcGxlIFJlc291cmNlc1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19zZWxlY3RlZF9yZXNvdXJjZScgICAgICAgICAgICAgICAgICAgICAgLy8gW2Jvb2tpbmdzZWxlY3RdIC0gU2VsZWN0ZWQgUmVzb3VyY2VcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfdGV4dF9sYWJlbCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFtib29raW5nc2VsZWN0XSAtIExhYmVsXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX2ZpcnN0X29wdGlvbl90aXRsZScgICAgICAgICAgICAgICAgICAgICAvLyBbYm9va2luZ3NlbGVjdF0gLSBGaXJzdCAgT3B0aW9uXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVGltZUxpbmVcclxuICAgICAgICAgICAgICAgICtcIixpbnB1dFtuYW1lPSdcIisgaWQgK1wiX3dwYmNfdmlld19tb2RlX3RpbWVsaW5lX21vbnRoc19udW1faW5fcm93J11cIlxyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY190ZXh0X2xhYmVsX3RpbWVsaW5lJ1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19zY3JvbGxfdGltZWxpbmVfc2Nyb2xsX2RheXMnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3Njcm9sbF90aW1lbGluZV9zY3JvbGxfbW9udGgnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfYWN0aXZlJ1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19zdGFydF9kYXRlX3RpbWVsaW5lX3llYXInXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfbW9udGgnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3N0YXJ0X2RhdGVfdGltZWxpbmVfZGF5J1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19zdGFydF9lbmRfdGltZV90aW1lbGluZV9zdGFydHRpbWUnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX3N0YXJ0X2VuZF90aW1lX3RpbWVsaW5lX2VuZHRpbWUnXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gRm9ybSBPbmx5XHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX2Jvb2tpbmdfZGF0ZV95ZWFyJ1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19ib29raW5nX2RhdGVfbW9udGgnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ193cGJjX2Jvb2tpbmdfZGF0ZV9kYXknXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gW2Jvb2tpbmdzZWFyY2ggLi4uXVxyXG4gICAgICAgICAgICAgICAgK1wiLGlucHV0W25hbWU9J1wiKyBpZCArXCJfd3BiY19zZWFyY2hfZm9ybV9yZXN1bHRzJ11cIlxyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19zZWFyY2hfbmV3X3BhZ2VfZW5hYmxlZCdcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc2VhcmNoX25ld19wYWdlX3VybCdcclxuICAgICAgICAgICAgICAgIC8vICsnLCMnICsgaWQgKyAnX3dwYmNfc2VhcmNoX2hlYWRlcicgICAgICAgICAgICAgICAgICAgICAgIC8vRml4SW46IDEwLjAuMC40MVxyXG4gICAgICAgICAgICAgICAgLy8gKycsIycgKyBpZCArICdfd3BiY19zZWFyY2hfbm90aGluZ19mb3VuZCdcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX3dwYmNfc2VhcmNoX2Zvcl91c2VycydcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBbYm9va2luZ290aGVyIC4uLiBdXHJcbiAgICAgICAgICAgICAgICArXCIsaW5wdXRbbmFtZT0nXCIrIGlkICtcIl93cGJjX3Nob3J0Y29kZV90eXBlJ11cIlxyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY19yZXNvdXJjZV9zaG93J1xyXG5cclxuICAgICAgICAgICAgICAgIC8vYm9va2luZ19pbXBvcnRfaWNzICwgYm9va2luZ19saXN0aW5nX2ljc1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfd3BiY191cmwnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ19mcm9tJ1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfZnJvbV9vZmZzZXQnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ19mcm9tX29mZnNldF90eXBlJ1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfdW50aWwnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ191bnRpbF9vZmZzZXQnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ191bnRpbF9vZmZzZXRfdHlwZSdcclxuICAgICAgICAgICAgICAgICsnLCMnICsgaWQgKyAnX2NvbmRpdGlvbnNfaW1wb3J0J1xyXG4gICAgICAgICAgICAgICAgKycsIycgKyBpZCArICdfY29uZGl0aW9uc19ldmVudHMnXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ19jb25kaXRpb25zX21heF9udW0nXHJcbiAgICAgICAgICAgICAgICArJywjJyArIGlkICsgJ19zaWxlbmNlJ1xyXG4gICAgICAgICAgICApLm9uKCAnY2hhbmdlJywgeydpZCc6IGlkfSwgZnVuY3Rpb24oZXZlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coICdvbiBjaGFuZ2Ugd3BiY19zZXRfc2hvcnRjb2RlJywgZXZlbnQuZGF0YS5pZCApO1xyXG4gICAgICAgICAgICAgICAgICAgIHdwYmNfc2V0X3Nob3J0Y29kZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB3cGJj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