"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["policy-contributing_shift_policy-ContributingShiftPolicyViewController"],{4362:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ContributingShiftPolicyViewController\": () => (/* binding */ ContributingShiftPolicyViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass ContributingShiftPolicyViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#contributing_shift_policy_view_container',\n\n\t\t\ttype_array: null,\n\t\t\tinclude_holiday_type_array: null,\n\t\t\tinclude_shift_type_array: null,\n\n\t\t\tbranch_selection_type_array: null,\n\t\t\tdepartment_selection_type_array: null,\n\n\t\t\tjob_group_selection_type_array: null,\n\t\t\tjob_selection_type_array: null,\n\n\t\t\tjob_group_array: null,\n\t\t\tjob_item_group_array: null,\n\t\t\tpunch_tag_group_array: null,\n\n\t\t\tjob_item_group_selection_type_array: null,\n\t\t\tjob_item_selection_type_array: null,\n\n\t\t\tpunch_tag_group_selection_type_array: null,\n\t\t\tpunch_tag_selection_type_array: null,\n\n\t\t\tjob_group_api: null,\n\t\t\tjob_item_group_api: null,\n\t\t\tpunch_tag_group_api: null,\n\t\t\tdate_api: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'ContributingShiftPolicyEditView.html';\n\t\tthis.permission_id = 'contributing_shift_policy';\n\t\tthis.viewId = 'ContributingShiftPolicy';\n\t\tthis.script_name = 'ContributingShiftPolicyView';\n\t\tthis.table_name_key = 'contributing_shift_policy';\n\t\tthis.context_menu_name = $.i18n._( 'Contributing Shift Policy' );\n\t\tthis.navigation_label = $.i18n._( 'Contributing Shift Policy' );\n\t\tthis.api = TTAPI.APIContributingShiftPolicy;\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tthis.job_group_api = TTAPI.APIJobGroup;\n\t\t\tthis.job_item_group_api = TTAPI.APIJobItemGroup;\n\t\t\tthis.punch_tag_group_api = TTAPI.APIPunchTagGroup;\n\t\t}\n\n\t\tthis.date_api = TTAPI.APITTDate;\n\t\tthis.render();\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\tinitOptions() {\n\t\tvar $this = this;\n\n\t\tvar options = [\n\t\t\t{ option_name: 'type', api: this.api },\n\t\t\t{ option_name: 'include_holiday_type', api: this.api },\n\t\t\t{ option_name: 'include_shift_type', api: this.api },\n\t\t\t{ option_name: 'branch_selection_type', api: this.api },\n\t\t\t{ option_name: 'department_selection_type', api: this.api },\n\t\t\t{ option_name: 'job_group_selection_type', api: this.api },\n\t\t\t{ option_name: 'job_selection_type', api: this.api },\n\t\t\t{ option_name: 'job_item_group_selection_type', api: this.api },\n\t\t\t{ option_name: 'job_item_selection_type', api: this.api },\n\t\t\t{ option_name: 'punch_tag_group_selection_type', api: this.api },\n\t\t\t{ option_name: 'punch_tag_selection_type', api: this.api },\n\t\t];\n\n\t\tthis.initDropDownOptions( options );\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tthis.job_group_api.getJobGroup( '', false, false, {\n\t\t\t\tonResult: function( res ) {\n\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tres = Global.buildTreeRecord( res );\n\t\t\t\t\t$this.job_group_array = res;\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.job_item_group_api.getJobItemGroup( '', false, false, {\n\t\t\t\tonResult: function( res ) {\n\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tres = Global.buildTreeRecord( res );\n\t\t\t\t\t$this.job_item_group_array = res;\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.punch_tag_group_api.getPunchTagGroup( '', false, false, {\n\t\t\t\tonResult: function( res ) {\n\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tres = Global.buildTreeRecord( res );\n\t\t\t\t\t$this.punch_tag_group_array = res;\n\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tbuildEditViewUI() {\n\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_contributing_shift_policy': { 'label': $.i18n._( 'Contributing Shift Policy' ) },\n\t\t\t'tab_date_criteria': {\n\t\t\t\t'label': $.i18n._( 'Date/Time Criteria' ),\n\t\t\t\t'init_callback': 'initSubDateCriteriaView',\n\t\t\t\t'html_template': this.getContributingShiftDateCriteriaTabHtml()\n\t\t\t},\n\t\t\t'tab_differential_criteria': {\n\t\t\t\t'label': $.i18n._( 'Differential Criteria' ),\n\t\t\t\t'init_callback': 'initSubDifferentialCriteriaView',\n\t\t\t\t'html_template': this.getContributingShiftDifferentialCriteriaTabHtml()\n\t\t\t},\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APIContributingShiftPolicy,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_over_time',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\t//Tab 0 start\n\t\tvar tab_contributing_shift_policy = this.edit_view_tab.find( '#tab_contributing_shift_policy' );\n\n\t\tvar tab_contributing_shift_policy_column1 = tab_contributing_shift_policy.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_contributing_shift_policy_column1 );\n\n\t\t//Name\n\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Name' ), form_item_input, tab_contributing_shift_policy_column1, '' );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Description\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\t\tform_item_input.TTextArea( { field: 'description', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Description' ), form_item_input, tab_contributing_shift_policy_column1, '', null, null, true );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Wage Group\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIContributingPayCodePolicy,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_contributing_pay_code_policy',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'contributing_pay_code_policy_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Contributing Pay Code Policy' ), form_item_input, tab_contributing_shift_policy_column1 );\n\n\t\t//Tab 1 start\n\t\tvar tab_date_criteria = this.edit_view_tab.find( '#tab_date_criteria' );\n\n\t\tvar tab_date_criteria_column1 = tab_date_criteria.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[1] = [];\n\n\t\tthis.edit_view_tabs[1].push( tab_date_criteria_column1 );\n\n\t\tvar form_item_input;\n\t\tvar widgetContainer;\n\t\tvar label;\n\n\t\t// Start Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\t\tform_item_input.TDatePicker( { field: 'filter_start_date' } );\n\t\twidgetContainer = $( '
' );\n\t\tlabel = $( ' ' + $.i18n._( '(Leave blank for no start date)' ) + '' );\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Start Date' ), form_item_input, tab_date_criteria_column1, '', widgetContainer );\n\n\t\t// End Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\n\t\tform_item_input.TDatePicker( { field: 'filter_end_date' } );\n\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(Leave blank for no end date)' ) + '' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'End Date' ), form_item_input, tab_date_criteria_column1, '', widgetContainer );\n\n\t\t// Start Time\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TIME_PICKER );\n\t\tform_item_input.TTimePicker( { field: 'filter_start_time' } );\n\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(Leave blank for no start time)' ) + '' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Start Time' ), form_item_input, tab_date_criteria_column1, '', widgetContainer );\n\n\t\t// End Time\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TIME_PICKER );\n\t\tform_item_input.TTimePicker( { field: 'filter_end_time' } );\n\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(Leave blank for no end time)' ) + '' );\n\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'End Time' ), form_item_input, tab_date_criteria_column1, '', widgetContainer );\n\n\t\t// Effective Days\n\t\tvar form_item_sun_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_sun_checkbox.TCheckbox( { field: 'sun' } );\n\n\t\tvar form_item_mon_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_mon_checkbox.TCheckbox( { field: 'mon' } );\n\n\t\tvar form_item_tue_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_tue_checkbox.TCheckbox( { field: 'tue' } );\n\n\t\tvar form_item_wed_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_wed_checkbox.TCheckbox( { field: 'wed' } );\n\n\t\tvar form_item_thu_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_thu_checkbox.TCheckbox( { field: 'thu' } );\n\n\t\tvar form_item_fri_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_fri_checkbox.TCheckbox( { field: 'fri' } );\n\n\t\tvar form_item_sat_checkbox = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_sat_checkbox.TCheckbox( { field: 'sat' } );\n\n\t\twidgetContainer = $( '' );\n\n\t\tvar sun = $( ' ' + $.i18n._( 'Sun' ) + '
' + ' ' );\n\t\tvar mon = $( ' ' + $.i18n._( 'Mon' ) + '
' + ' ' );\n\t\tvar tue = $( ' ' + $.i18n._( 'Tue' ) + '
' + ' ' );\n\t\tvar wed = $( ' ' + $.i18n._( 'Wed' ) + '
' + ' ' );\n\t\tvar thu = $( ' ' + $.i18n._( 'Thu' ) + '
' + ' ' );\n\t\tvar fri = $( ' ' + $.i18n._( 'Fri' ) + '
' + ' ' );\n\t\tvar sat = $( ' ' + $.i18n._( 'Sat' ) + '
' + ' ' );\n\n\t\tsun.append( form_item_sun_checkbox );\n\t\tmon.append( form_item_mon_checkbox );\n\t\ttue.append( form_item_tue_checkbox );\n\t\twed.append( form_item_wed_checkbox );\n\t\tthu.append( form_item_thu_checkbox );\n\t\tfri.append( form_item_fri_checkbox );\n\t\tsat.append( form_item_sat_checkbox );\n\n\t\twidgetContainer.append( sun );\n\t\twidgetContainer.append( mon );\n\t\twidgetContainer.append( tue );\n\t\twidgetContainer.append( wed );\n\t\twidgetContainer.append( thu );\n\t\twidgetContainer.append( fri );\n\t\twidgetContainer.append( sat );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Effective Days' ), [form_item_sun_checkbox, form_item_mon_checkbox, form_item_tue_checkbox, form_item_wed_checkbox, form_item_thu_checkbox, form_item_fri_checkbox, form_item_sat_checkbox], tab_date_criteria_column1, '', widgetContainer, false, true );\n\n\t\t// Holidays\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'include_holiday_type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.include_holiday_type_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Holidays' ), form_item_input, tab_date_criteria_column1 );\n\n\t\t// Holiday Policies\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIHolidayPolicy,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_holiday',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'holiday_policy'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Holiday Policies' ), form_item_input, tab_date_criteria_column1, '', null, true );\n\n\t\t// Include Shift Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'include_shift_type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.include_shift_type_array );\n\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(Between above start/end times)' ) + '' );\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Shift Criteria' ), form_item_input, tab_date_criteria_column1, '', widgetContainer );\n\n\t\t//Minimum Time in this Shift\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'minimum_time_in_this_shift', mode: 'time_unit', need_parser_sec: true } );\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(Use 0 for no minimum)' ) + '' );\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Time In This Shift' ), form_item_input, tab_date_criteria_column1, '', widgetContainer, true );\n\n\t\t//Minimum Time into this Shift\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'minimum_time_into_this_shift', mode: 'time_unit', need_parser_sec: true } );\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(From previous shift. Use 0 for no minimum)' ) + '' );\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Minimum Time Into This Shift' ), form_item_input, tab_date_criteria_column1, '', widgetContainer, true );\n\n\t\t//Maximum Time into Next Shift\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'maximum_time_into_next_shift', mode: 'time_unit', need_parser_sec: true } );\n\t\twidgetContainer = $( '' );\n\t\tlabel = $( ' ' + $.i18n._( '(From this shift. Use 0 for no maximum)' ) + '' );\n\t\twidgetContainer.append( form_item_input );\n\t\twidgetContainer.append( label );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Maximum Time Into Next Shift' ), form_item_input, tab_date_criteria_column1, '', widgetContainer, true );\n\n\t\t//\n\t\t// Tab2 start\n\t\t//\n\t\tvar tab_differential_criteria = this.edit_view_tab.find( '#tab_differential_criteria' );\n\n\t\tvar tab_differential_criteria_column1 = tab_differential_criteria.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[2] = [];\n\n\t\tthis.edit_view_tabs[2].push( tab_differential_criteria_column1 );\n\n\t\t// Branches\n\t\tvar v_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'branch_selection_type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.branch_selection_type_array );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tvar form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIBranch,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_branch',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'branch'\n\t\t} );\n\n\t\tvar form_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\tv_box.append( form_item );\n\n\t\t// Exclude Default\n\t\tvar form_item_input_2 = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\n\t\tform_item_input_2.TCheckbox( { field: 'exclude_default_branch' } );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_2, $.i18n._( 'Exclude Default' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Branches' ), [form_item_input, form_item_input_1, form_item_input_2], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t// Departments\n\t\tv_box = $( '' );\n\n\t\t//Selection Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'department_selection_type_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.department_selection_type_array );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\tv_box.append( form_item );\n\t\tv_box.append( '' );\n\n\t\t//Selection\n\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input_1.AComboBox( {\n\t\t\tapi_class: TTAPI.APIDepartment,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_department',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'department'\n\t\t} );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\tv_box.append( form_item );\n\n\t\t// Exclude Default\n\t\tform_item_input_2 = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\n\t\tform_item_input_2.TCheckbox( { field: 'exclude_default_department' } );\n\n\t\tform_item = this.putInputToInsideFormItem( form_item_input_2, $.i18n._( 'Exclude Default' ) );\n\n\t\tv_box.append( form_item );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Departments' ), [form_item_input, form_item_input_1, form_item_input_2], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\t// Job Groups\n\t\t\tv_box = $( '' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'job_group_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.job_group_selection_type_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\ttree_mode: true,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_tree_column',\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'job_group'\n\t\t\t} );\n\n\t\t\tform_item_input_1.setSourceData( $this.job_group_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Job Groups' ), [form_item_input, form_item_input_1], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t\t// Jobs\n\t\t\tv_box = $( '' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'job_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.job_selection_type_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIJob,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_job',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'job'\n\t\t\t} );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\t// Exclude Default\n\t\t\tform_item_input_2 = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\t\tform_item_input_2.TCheckbox( { field: 'exclude_default_job' } );\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_2, $.i18n._( 'Exclude Default' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Jobs' ), [form_item_input, form_item_input_1, form_item_input_2], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t\t// Task Groups\n\t\t\tv_box = $( '' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'job_item_group_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.job_item_group_selection_type_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\ttree_mode: true,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_tree_column',\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'job_item_group'\n\t\t\t} );\n\n\t\t\tform_item_input_1.setSourceData( $this.job_item_group_array );\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Task Groups' ), [form_item_input, form_item_input_1], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t\t// Tasks\n\t\t\tv_box = $( '' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'job_item_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.job_item_selection_type_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIJobItem,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_job_item',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'job_item'\n\t\t\t} );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\t// Exclude Default\n\t\t\tform_item_input_2 = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\t\tform_item_input_2.TCheckbox( { field: 'exclude_default_job_item' } );\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_2, $.i18n._( 'Exclude Default' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Tasks' ), [form_item_input, form_item_input_1, form_item_input_2], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t\t// Punch Tag Groups\n\t\t\tv_box = $( '' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'punch_tag_group_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.punch_tag_group_selection_type_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\ttree_mode: true,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_tree_column',\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'punch_tag_group'\n\t\t\t} );\n\n\t\t\tform_item_input_1.setSourceData( $this.punch_tag_group_array );\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Punch Tag Groups' ), [form_item_input, form_item_input_1], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t\t// Punch Tags\n\t\t\tv_box = $( '' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'punch_tag_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.punch_tag_selection_type_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIPunchTag,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_job_item',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'punch_tag'\n\t\t\t} );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\t// Exclude Default\n\t\t\tform_item_input_2 = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\t\tform_item_input_2.TCheckbox( { field: 'exclude_default_punch_tag' } );\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_2, $.i18n._( 'Exclude Default' ) );\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Punch Tags' ), [form_item_input, form_item_input_1, form_item_input_2], tab_differential_criteria_column1, '', v_box, false, true );\n\n\t\t}\n\t}\n\n\tonFormItemChange( target ) {\n\t\tthis.is_changed = true;\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\n\t\tthis.current_edit_record[key] = c_value;\n\n\t\tif ( key === 'include_holiday_type_id' ) {\n\t\t\tthis.onIncludeHolidayTypeChange();\n\t\t}\n\n\t\tif ( key === 'include_shift_type_id' ) {\n\t\t\tthis.onIncludeShiftTypeChange();\n\t\t}\n\n\t\tif ( key === 'branch_selection_type_id' ) {\n\t\t\tthis.onBranchSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'department_selection_type_id' ) {\n\t\t\tthis.onDepartmentSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'job_group_selection_type_id' ) {\n\t\t\tthis.onJobGroupSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'job_selection_type_id' ) {\n\t\t\tthis.onJobSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'job_item_group_selection_type_id' ) {\n\t\t\tthis.onJobItemGroupSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'job_item_selection_type_id' ) {\n\t\t\tthis.onJobItemSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'punch_tag_group_selection_type_id' ) {\n\t\t\tthis.onPunchTagGroupSelectionTypeChange();\n\t\t}\n\t\tif ( key === 'punch_tag_selection_type_id' ) {\n\t\t\tthis.onPunchTagSelectionTypeChange();\n\t\t}\n\n\t\tthis.validate();\n\t}\n\n\tsetCurrentEditRecordData() {\n\t\t// When mass editing, these fields may not be the common data, so their value will be undefined, so this will cause their change event cannot work properly.\n\t\tthis.setDefaultData( {\n\t\t\t'branch_selection_type_id': 10,\n\t\t\t'department_selection_type_id': 10,\n\t\t\t'job_group_selection_type_id': 10,\n\t\t\t'job_selection_type_id': 10,\n\t\t\t'job_item_group_selection_type_id': 10,\n\t\t\t'job_item_selection_type_id': 10,\n\t\t\t'punch_tag_group_selection_type_id': 10,\n\t\t\t'punch_tag_selection_type_id': 10,\n\t\t\t'include_holiday_type_id': 10\n\t\t} );\n\n\t\t//Set current edit record data to all widgets\n\t\tfor ( var key in this.current_edit_record ) {\n\t\t\tvar widget = this.edit_view_ui_dic[key];\n\t\t\tif ( Global.isSet( widget ) ) {\n\t\t\t\tswitch ( key ) {\n\t\t\t\t\tdefault:\n\t\t\t\t\t\twidget.setValue( this.current_edit_record[key] );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tthis.onBranchSelectionTypeChange();\n\t\tthis.onDepartmentSelectionTypeChange();\n\t\tthis.onJobGroupSelectionTypeChange();\n\t\tthis.onJobSelectionTypeChange();\n\t\tthis.onJobItemGroupSelectionTypeChange();\n\t\tthis.onJobItemSelectionTypeChange();\n\t\tthis.onPunchTagGroupSelectionTypeChange();\n\t\tthis.onPunchTagSelectionTypeChange();\n\n\t\tthis.collectUIDataToCurrentEditRecord();\n\t\tthis.onIncludeHolidayTypeChange();\n\t\tthis.onIncludeShiftTypeChange();\n\t\tthis.setEditViewDataDone();\n\t}\n\n\tonIncludeHolidayTypeChange() {\n\t\tif ( this.current_edit_record['include_holiday_type_id'] == 10 ) {\n\t\t\tthis.detachElement( 'holiday_policy' );\n\t\t} else {\n\t\t\tthis.attachElement( 'holiday_policy' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tonIncludeShiftTypeChange() {\n\t\tif ( this.current_edit_record['include_shift_type_id'] == 150 ) { //Split Shift (Partial w/Limits)\n\t\t\tthis.attachElement( 'minimum_time_in_this_shift' );\n\t\t\tthis.attachElement( 'minimum_time_into_this_shift' );\n\t\t\tthis.attachElement( 'maximum_time_into_next_shift' );\n\t\t} else {\n\t\t\tthis.detachElement( 'minimum_time_in_this_shift' );\n\t\t\tthis.detachElement( 'minimum_time_into_this_shift' );\n\t\t\tthis.detachElement( 'maximum_time_into_next_shift' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tonBranchSelectionTypeChange() {\n\t\tif ( this.current_edit_record['branch_selection_type_id'] == 10 ) {\n\t\t\tthis.edit_view_ui_dic['branch'].setEnabled( false );\n\t\t} else {\n\t\t\tthis.edit_view_ui_dic['branch'].setEnabled( true );\n\t\t}\n\t}\n\n\tonDepartmentSelectionTypeChange() {\n\t\tif ( this.current_edit_record['department_selection_type_id'] == 10 ) {\n\t\t\tthis.edit_view_ui_dic['department'].setEnabled( false );\n\t\t} else {\n\t\t\tthis.edit_view_ui_dic['department'].setEnabled( true );\n\t\t}\n\t}\n\n\tonJobGroupSelectionTypeChange() {\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\n\t\t\tif ( this.current_edit_record['job_group_selection_type_id'] == 10 || this.is_viewing ) {\n\t\t\t\tthis.edit_view_ui_dic['job_group'].setEnabled( false );\n\t\t\t} else {\n\t\t\t\tthis.edit_view_ui_dic['job_group'].setEnabled( true );\n\t\t\t}\n\t\t}\n\t}\n\n\tonJobSelectionTypeChange() {\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tif ( this.current_edit_record['job_selection_type_id'] == 10 || this.is_viewing ) {\n\t\t\t\tthis.edit_view_ui_dic['job'].setEnabled( false );\n\t\t\t} else {\n\t\t\t\tthis.edit_view_ui_dic['job'].setEnabled( true );\n\t\t\t}\n\t\t}\n\t}\n\n\tonJobItemGroupSelectionTypeChange() {\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tif ( this.current_edit_record['job_item_group_selection_type_id'] == 10 || this.is_viewing ) {\n\t\t\t\tthis.edit_view_ui_dic['job_item_group'].setEnabled( false );\n\t\t\t} else {\n\t\t\t\tthis.edit_view_ui_dic['job_item_group'].setEnabled( true );\n\t\t\t}\n\t\t}\n\t}\n\n\tonJobItemSelectionTypeChange() {\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tif ( this.current_edit_record['job_item_selection_type_id'] == 10 || this.is_viewing ) {\n\t\t\t\tthis.edit_view_ui_dic['job_item'].setEnabled( false );\n\t\t\t} else {\n\t\t\t\tthis.edit_view_ui_dic['job_item'].setEnabled( true );\n\t\t\t}\n\t\t}\n\t}\n\n\tonPunchTagGroupSelectionTypeChange() {\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tif ( this.current_edit_record['punch_tag_group_selection_type_id'] == 10 || this.is_viewing ) {\n\t\t\t\tthis.edit_view_ui_dic['punch_tag_group'].setEnabled( false );\n\t\t\t} else {\n\t\t\t\tthis.edit_view_ui_dic['punch_tag_group'].setEnabled( true );\n\t\t\t}\n\t\t}\n\t}\n\n\tonPunchTagSelectionTypeChange() {\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tif ( this.current_edit_record['punch_tag_selection_type_id'] == 10 || this.is_viewing ) {\n\t\t\t\tthis.edit_view_ui_dic['punch_tag'].setEnabled( false );\n\t\t\t} else {\n\t\t\t\tthis.edit_view_ui_dic['punch_tag'].setEnabled( true );\n\t\t\t}\n\t\t}\n\t}\n\n\tinitSubDateCriteriaView() {\n\t\tif ( Global.getProductEdition() >= 15 ) {\n\t\t\tthis.edit_view_tab.find( '#tab_date_criteria' ).find( '.first-column' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'none' );\n\t\t\tthis.buildContextMenu( true );\n\t\t\tthis.setEditMenu();\n\t\t} else {\n\t\t\tthis.edit_view_tab.find( '#tab_date_criteria' ).find( '.first-column' ).css( 'display', 'none' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-message' ).html( Global.getUpgradeMessage() );\n\t\t}\n\t}\n\n\tinitSubDifferentialCriteriaView() {\n\t\tif ( Global.getProductEdition() >= 15 ) {\n\t\t\tthis.edit_view_tab.find( '#tab_differential_criteria' ).find( '.first-column' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'none' );\n\t\t\tthis.buildContextMenu( true );\n\t\t\tthis.setEditMenu();\n\t\t} else {\n\t\t\tthis.edit_view_tab.find( '#tab_differential_criteria' ).find( '.first-column' ).css( 'display', 'none' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-message' ).html( Global.getUpgradeMessage() );\n\t\t}\n\t}\n\n\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\t\tthis.search_fields = [\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'name',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Contributing Pay Code' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'contributing_pay_code_policy_id',\n\t\t\t\tlayout_name: 'global_contributing_pay_code_policy',\n\t\t\t\tapi_class: TTAPI.APIContributingPayCodePolicy,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Created By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'created_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Updated By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'updated_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} )\n\t\t];\n\t}\n\n\tgetContributingShiftDateCriteriaTabHtml() {\n\t\treturn `\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
`;\n\t}\n\n\tgetContributingShiftDifferentialCriteriaTabHtml() {\n\t\treturn `\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
`;\n\t}\n\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvdmlld3MvcG9saWN5L2NvbnRyaWJ1dGluZ19zaGlmdF9wb2xpY3kvQ29udHJpYnV0aW5nU2hpZnRQb2xpY3lWaWV3Q29udHJvbGxlci5qcz81ZWU1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb250cmlidXRpbmdTaGlmdFBvbGljeVZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNjb250cmlidXRpbmdfc2hpZnRfcG9saWN5X3ZpZXdfY29udGFpbmVyJyxcblxuXHRcdFx0dHlwZV9hcnJheTogbnVsbCxcblx0XHRcdGluY2x1ZGVfaG9saWRheV90eXBlX2FycmF5OiBudWxsLFxuXHRcdFx0aW5jbHVkZV9zaGlmdF90eXBlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRicmFuY2hfc2VsZWN0aW9uX3R5cGVfYXJyYXk6IG51bGwsXG5cdFx0XHRkZXBhcnRtZW50X3NlbGVjdGlvbl90eXBlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRqb2JfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfYXJyYXk6IG51bGwsXG5cdFx0XHRqb2Jfc2VsZWN0aW9uX3R5cGVfYXJyYXk6IG51bGwsXG5cblx0XHRcdGpvYl9ncm91cF9hcnJheTogbnVsbCxcblx0XHRcdGpvYl9pdGVtX2dyb3VwX2FycmF5OiBudWxsLFxuXHRcdFx0cHVuY2hfdGFnX2dyb3VwX2FycmF5OiBudWxsLFxuXG5cdFx0XHRqb2JfaXRlbV9ncm91cF9zZWxlY3Rpb25fdHlwZV9hcnJheTogbnVsbCxcblx0XHRcdGpvYl9pdGVtX3NlbGVjdGlvbl90eXBlX2FycmF5OiBudWxsLFxuXG5cdFx0XHRwdW5jaF90YWdfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfYXJyYXk6IG51bGwsXG5cdFx0XHRwdW5jaF90YWdfc2VsZWN0aW9uX3R5cGVfYXJyYXk6IG51bGwsXG5cblx0XHRcdGpvYl9ncm91cF9hcGk6IG51bGwsXG5cdFx0XHRqb2JfaXRlbV9ncm91cF9hcGk6IG51bGwsXG5cdFx0XHRwdW5jaF90YWdfZ3JvdXBfYXBpOiBudWxsLFxuXHRcdFx0ZGF0ZV9hcGk6IG51bGxcblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblx0XHQvL3RoaXMuX3N1cGVyKCdpbml0aWFsaXplJywgb3B0aW9ucyApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3RwbCA9ICdDb250cmlidXRpbmdTaGlmdFBvbGljeUVkaXRWaWV3Lmh0bWwnO1xuXHRcdHRoaXMucGVybWlzc2lvbl9pZCA9ICdjb250cmlidXRpbmdfc2hpZnRfcG9saWN5Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdDb250cmlidXRpbmdTaGlmdFBvbGljeSc7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdDb250cmlidXRpbmdTaGlmdFBvbGljeVZpZXcnO1xuXHRcdHRoaXMudGFibGVfbmFtZV9rZXkgPSAnY29udHJpYnV0aW5nX3NoaWZ0X3BvbGljeSc7XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnQ29udHJpYnV0aW5nIFNoaWZ0IFBvbGljeScgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ0NvbnRyaWJ1dGluZyBTaGlmdCBQb2xpY3knICk7XG5cdFx0dGhpcy5hcGkgPSBUVEFQSS5BUElDb250cmlidXRpbmdTaGlmdFBvbGljeTtcblx0XHRpZiAoICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAgKSApIHtcblx0XHRcdHRoaXMuam9iX2dyb3VwX2FwaSA9IFRUQVBJLkFQSUpvYkdyb3VwO1xuXHRcdFx0dGhpcy5qb2JfaXRlbV9ncm91cF9hcGkgPSBUVEFQSS5BUElKb2JJdGVtR3JvdXA7XG5cdFx0XHR0aGlzLnB1bmNoX3RhZ19ncm91cF9hcGkgPSBUVEFQSS5BUElQdW5jaFRhZ0dyb3VwO1xuXHRcdH1cblxuXHRcdHRoaXMuZGF0ZV9hcGkgPSBUVEFQSS5BUElUVERhdGU7XG5cdFx0dGhpcy5yZW5kZXIoKTtcblx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoKTtcblxuXHRcdHRoaXMuaW5pdERhdGEoKTtcblx0fVxuXG5cdGluaXRPcHRpb25zKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHR2YXIgb3B0aW9ucyA9IFtcblx0XHRcdHsgb3B0aW9uX25hbWU6ICd0eXBlJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2luY2x1ZGVfaG9saWRheV90eXBlJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2luY2x1ZGVfc2hpZnRfdHlwZScsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdicmFuY2hfc2VsZWN0aW9uX3R5cGUnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnZGVwYXJ0bWVudF9zZWxlY3Rpb25fdHlwZScsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdqb2JfZ3JvdXBfc2VsZWN0aW9uX3R5cGUnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHR7IG9wdGlvbl9uYW1lOiAnam9iX3NlbGVjdGlvbl90eXBlJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2pvYl9pdGVtX2dyb3VwX3NlbGVjdGlvbl90eXBlJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ2pvYl9pdGVtX3NlbGVjdGlvbl90eXBlJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0eyBvcHRpb25fbmFtZTogJ3B1bmNoX3RhZ19ncm91cF9zZWxlY3Rpb25fdHlwZScsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdHsgb3B0aW9uX25hbWU6ICdwdW5jaF90YWdfc2VsZWN0aW9uX3R5cGUnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XTtcblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9ucyggb3B0aW9ucyApO1xuXG5cdFx0aWYgKCAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDIwICkgKSB7XG5cdFx0XHR0aGlzLmpvYl9ncm91cF9hcGkuZ2V0Sm9iR3JvdXAoICcnLCBmYWxzZSwgZmFsc2UsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0cmVzID0gR2xvYmFsLmJ1aWxkVHJlZVJlY29yZCggcmVzICk7XG5cdFx0XHRcdFx0JHRoaXMuam9iX2dyb3VwX2FycmF5ID0gcmVzO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblxuXHRcdFx0dGhpcy5qb2JfaXRlbV9ncm91cF9hcGkuZ2V0Sm9iSXRlbUdyb3VwKCAnJywgZmFsc2UsIGZhbHNlLCB7XG5cdFx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzICkge1xuXG5cdFx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdHJlcyA9IEdsb2JhbC5idWlsZFRyZWVSZWNvcmQoIHJlcyApO1xuXHRcdFx0XHRcdCR0aGlzLmpvYl9pdGVtX2dyb3VwX2FycmF5ID0gcmVzO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblxuXHRcdFx0dGhpcy5wdW5jaF90YWdfZ3JvdXBfYXBpLmdldFB1bmNoVGFnR3JvdXAoICcnLCBmYWxzZSwgZmFsc2UsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0cmVzID0gR2xvYmFsLmJ1aWxkVHJlZVJlY29yZCggcmVzICk7XG5cdFx0XHRcdFx0JHRoaXMucHVuY2hfdGFnX2dyb3VwX2FycmF5ID0gcmVzO1xuXG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cblxuXHRidWlsZEVkaXRWaWV3VUkoKSB7XG5cblx0XHRzdXBlci5idWlsZEVkaXRWaWV3VUkoKTtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHR2YXIgdGFiX21vZGVsID0ge1xuXHRcdFx0J3RhYl9jb250cmlidXRpbmdfc2hpZnRfcG9saWN5JzogeyAnbGFiZWwnOiAkLmkxOG4uXyggJ0NvbnRyaWJ1dGluZyBTaGlmdCBQb2xpY3knICkgfSxcblx0XHRcdCd0YWJfZGF0ZV9jcml0ZXJpYSc6IHtcblx0XHRcdFx0J2xhYmVsJzogJC5pMThuLl8oICdEYXRlL1RpbWUgQ3JpdGVyaWEnICksXG5cdFx0XHRcdCdpbml0X2NhbGxiYWNrJzogJ2luaXRTdWJEYXRlQ3JpdGVyaWFWaWV3Jyxcblx0XHRcdFx0J2h0bWxfdGVtcGxhdGUnOiB0aGlzLmdldENvbnRyaWJ1dGluZ1NoaWZ0RGF0ZUNyaXRlcmlhVGFiSHRtbCgpXG5cdFx0XHR9LFxuXHRcdFx0J3RhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWEnOiB7XG5cdFx0XHRcdCdsYWJlbCc6ICQuaTE4bi5fKCAnRGlmZmVyZW50aWFsIENyaXRlcmlhJyApLFxuXHRcdFx0XHQnaW5pdF9jYWxsYmFjayc6ICdpbml0U3ViRGlmZmVyZW50aWFsQ3JpdGVyaWFWaWV3Jyxcblx0XHRcdFx0J2h0bWxfdGVtcGxhdGUnOiB0aGlzLmdldENvbnRyaWJ1dGluZ1NoaWZ0RGlmZmVyZW50aWFsQ3JpdGVyaWFUYWJIdG1sKClcblx0XHRcdH0sXG5cdFx0XHQndGFiX2F1ZGl0JzogdHJ1ZSxcblx0XHR9O1xuXHRcdHRoaXMuc2V0VGFiTW9kZWwoIHRhYl9tb2RlbCApO1xuXG5cdFx0dGhpcy5uYXZpZ2F0aW9uLkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElDb250cmlidXRpbmdTaGlmdFBvbGljeSxcblx0XHRcdGlkOiB0aGlzLnNjcmlwdF9uYW1lICsgJ19uYXZpZ2F0aW9uJyxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vdmVyX3RpbWUnLFxuXHRcdFx0bmF2aWdhdGlvbl9tb2RlOiB0cnVlLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlXG5cdFx0fSApO1xuXG5cdFx0dGhpcy5zZXROYXZpZ2F0aW9uKCk7XG5cblx0XHQvL1RhYiAwIHN0YXJ0XG5cdFx0dmFyIHRhYl9jb250cmlidXRpbmdfc2hpZnRfcG9saWN5ID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX2NvbnRyaWJ1dGluZ19zaGlmdF9wb2xpY3knICk7XG5cblx0XHR2YXIgdGFiX2NvbnRyaWJ1dGluZ19zaGlmdF9wb2xpY3lfY29sdW1uMSA9IHRhYl9jb250cmlidXRpbmdfc2hpZnRfcG9saWN5LmZpbmQoICcuZmlyc3QtY29sdW1uJyApO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXSA9IFtdO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXS5wdXNoKCB0YWJfY29udHJpYnV0aW5nX3NoaWZ0X3BvbGljeV9jb2x1bW4xICk7XG5cblx0XHQvL05hbWVcblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ25hbWUnLCB3aWR0aDogJzEwMCUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ05hbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2NvbnRyaWJ1dGluZ19zaGlmdF9wb2xpY3lfY29sdW1uMSwgJycgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5wYXJlbnQoKS53aWR0aCggJzQ1JScgKTtcblxuXHRcdC8vIERlc2NyaXB0aW9uXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0FSRUEgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRBcmVhKCB7IGZpZWxkOiAnZGVzY3JpcHRpb24nLCB3aWR0aDogJzEwMCUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0Rlc2NyaXB0aW9uJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb250cmlidXRpbmdfc2hpZnRfcG9saWN5X2NvbHVtbjEsICcnLCBudWxsLCBudWxsLCB0cnVlICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvLyBXYWdlIEdyb3VwXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJQ29udHJpYnV0aW5nUGF5Q29kZVBvbGljeSxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9jb250cmlidXRpbmdfcGF5X2NvZGVfcG9saWN5Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnY29udHJpYnV0aW5nX3BheV9jb2RlX3BvbGljeV9pZCdcblx0XHR9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdDb250cmlidXRpbmcgUGF5IENvZGUgUG9saWN5JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9jb250cmlidXRpbmdfc2hpZnRfcG9saWN5X2NvbHVtbjEgKTtcblxuXHRcdC8vVGFiIDEgc3RhcnRcblx0XHR2YXIgdGFiX2RhdGVfY3JpdGVyaWEgPSB0aGlzLmVkaXRfdmlld190YWIuZmluZCggJyN0YWJfZGF0ZV9jcml0ZXJpYScgKTtcblxuXHRcdHZhciB0YWJfZGF0ZV9jcml0ZXJpYV9jb2x1bW4xID0gdGFiX2RhdGVfY3JpdGVyaWEuZmluZCggJy5maXJzdC1jb2x1bW4nICk7XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzFdID0gW107XG5cblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzFdLnB1c2goIHRhYl9kYXRlX2NyaXRlcmlhX2NvbHVtbjEgKTtcblxuXHRcdHZhciBmb3JtX2l0ZW1faW5wdXQ7XG5cdFx0dmFyIHdpZGdldENvbnRhaW5lcjtcblx0XHR2YXIgbGFiZWw7XG5cblx0XHQvLyBTdGFydCBEYXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5EQVRFX1BJQ0tFUiApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5URGF0ZVBpY2tlciggeyBmaWVsZDogJ2ZpbHRlcl9zdGFydF9kYXRlJyB9ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhMZWF2ZSBibGFuayBmb3Igbm8gc3RhcnQgZGF0ZSknICkgKyAnPC9zcGFuPicgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU3RhcnQgRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZGF0ZV9jcml0ZXJpYV9jb2x1bW4xLCAnJywgd2lkZ2V0Q29udGFpbmVyICk7XG5cblx0XHQvLyBFbmQgRGF0ZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuREFURV9QSUNLRVIgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5URGF0ZVBpY2tlciggeyBmaWVsZDogJ2ZpbHRlcl9lbmRfZGF0ZScgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhMZWF2ZSBibGFuayBmb3Igbm8gZW5kIGRhdGUpJyApICsgJzwvc3Bhbj4nICk7XG5cblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRW5kIERhdGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RhdGVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciApO1xuXG5cdFx0Ly8gU3RhcnQgVGltZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVElNRV9QSUNLRVIgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRpbWVQaWNrZXIoIHsgZmllbGQ6ICdmaWx0ZXJfc3RhcnRfdGltZScgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhMZWF2ZSBibGFuayBmb3Igbm8gc3RhcnQgdGltZSknICkgKyAnPC9zcGFuPicgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGZvcm1faXRlbV9pbnB1dCApO1xuXHRcdHdpZGdldENvbnRhaW5lci5hcHBlbmQoIGxhYmVsICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTdGFydCBUaW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kYXRlX2NyaXRlcmlhX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIgKTtcblxuXHRcdC8vIEVuZCBUaW1lXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5USU1FX1BJQ0tFUiApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGltZVBpY2tlciggeyBmaWVsZDogJ2ZpbHRlcl9lbmRfdGltZScgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhMZWF2ZSBibGFuayBmb3Igbm8gZW5kIHRpbWUpJyApICsgJzwvc3Bhbj4nICk7XG5cblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRW5kIFRpbWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RhdGVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciApO1xuXG5cdFx0Ly8gRWZmZWN0aXZlIERheXNcblx0XHR2YXIgZm9ybV9pdGVtX3N1bl9jaGVja2JveCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRmb3JtX2l0ZW1fc3VuX2NoZWNrYm94LlRDaGVja2JveCggeyBmaWVsZDogJ3N1bicgfSApO1xuXG5cdFx0dmFyIGZvcm1faXRlbV9tb25fY2hlY2tib3ggPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0Zm9ybV9pdGVtX21vbl9jaGVja2JveC5UQ2hlY2tib3goIHsgZmllbGQ6ICdtb24nIH0gKTtcblxuXHRcdHZhciBmb3JtX2l0ZW1fdHVlX2NoZWNrYm94ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DSEVDS0JPWCApO1xuXHRcdGZvcm1faXRlbV90dWVfY2hlY2tib3guVENoZWNrYm94KCB7IGZpZWxkOiAndHVlJyB9ICk7XG5cblx0XHR2YXIgZm9ybV9pdGVtX3dlZF9jaGVja2JveCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRmb3JtX2l0ZW1fd2VkX2NoZWNrYm94LlRDaGVja2JveCggeyBmaWVsZDogJ3dlZCcgfSApO1xuXG5cdFx0dmFyIGZvcm1faXRlbV90aHVfY2hlY2tib3ggPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0Zm9ybV9pdGVtX3RodV9jaGVja2JveC5UQ2hlY2tib3goIHsgZmllbGQ6ICd0aHUnIH0gKTtcblxuXHRcdHZhciBmb3JtX2l0ZW1fZnJpX2NoZWNrYm94ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DSEVDS0JPWCApO1xuXHRcdGZvcm1faXRlbV9mcmlfY2hlY2tib3guVENoZWNrYm94KCB7IGZpZWxkOiAnZnJpJyB9ICk7XG5cblx0XHR2YXIgZm9ybV9pdGVtX3NhdF9jaGVja2JveCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRmb3JtX2l0ZW1fc2F0X2NoZWNrYm94LlRDaGVja2JveCggeyBmaWVsZDogJ3NhdCcgfSApO1xuXG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnXFwnPjwvZGl2PicgKTtcblxuXHRcdHZhciBzdW4gPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXRvcC1sYWJlbFxcJz4gJyArICQuaTE4bi5fKCAnU3VuJyApICsgJyA8YnI+ICcgKyAnIDwvc3Bhbj4nICk7XG5cdFx0dmFyIG1vbiA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtdG9wLWxhYmVsXFwnPiAnICsgJC5pMThuLl8oICdNb24nICkgKyAnIDxicj4gJyArICcgPC9zcGFuPicgKTtcblx0XHR2YXIgdHVlID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC10b3AtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJ1R1ZScgKSArICcgPGJyPiAnICsgJyA8L3NwYW4+JyApO1xuXHRcdHZhciB3ZWQgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXRvcC1sYWJlbFxcJz4gJyArICQuaTE4bi5fKCAnV2VkJyApICsgJyA8YnI+ICcgKyAnIDwvc3Bhbj4nICk7XG5cdFx0dmFyIHRodSA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtdG9wLWxhYmVsXFwnPiAnICsgJC5pMThuLl8oICdUaHUnICkgKyAnIDxicj4gJyArICcgPC9zcGFuPicgKTtcblx0XHR2YXIgZnJpID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC10b3AtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJ0ZyaScgKSArICcgPGJyPiAnICsgJyA8L3NwYW4+JyApO1xuXHRcdHZhciBzYXQgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXRvcC1sYWJlbFxcJz4gJyArICQuaTE4bi5fKCAnU2F0JyApICsgJyA8YnI+ICcgKyAnIDwvc3Bhbj4nICk7XG5cblx0XHRzdW4uYXBwZW5kKCBmb3JtX2l0ZW1fc3VuX2NoZWNrYm94ICk7XG5cdFx0bW9uLmFwcGVuZCggZm9ybV9pdGVtX21vbl9jaGVja2JveCApO1xuXHRcdHR1ZS5hcHBlbmQoIGZvcm1faXRlbV90dWVfY2hlY2tib3ggKTtcblx0XHR3ZWQuYXBwZW5kKCBmb3JtX2l0ZW1fd2VkX2NoZWNrYm94ICk7XG5cdFx0dGh1LmFwcGVuZCggZm9ybV9pdGVtX3RodV9jaGVja2JveCApO1xuXHRcdGZyaS5hcHBlbmQoIGZvcm1faXRlbV9mcmlfY2hlY2tib3ggKTtcblx0XHRzYXQuYXBwZW5kKCBmb3JtX2l0ZW1fc2F0X2NoZWNrYm94ICk7XG5cblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBzdW4gKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBtb24gKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCB0dWUgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCB3ZWQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCB0aHUgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmcmkgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBzYXQgKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRWZmZWN0aXZlIERheXMnICksIFtmb3JtX2l0ZW1fc3VuX2NoZWNrYm94LCBmb3JtX2l0ZW1fbW9uX2NoZWNrYm94LCBmb3JtX2l0ZW1fdHVlX2NoZWNrYm94LCBmb3JtX2l0ZW1fd2VkX2NoZWNrYm94LCBmb3JtX2l0ZW1fdGh1X2NoZWNrYm94LCBmb3JtX2l0ZW1fZnJpX2NoZWNrYm94LCBmb3JtX2l0ZW1fc2F0X2NoZWNrYm94XSwgdGFiX2RhdGVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgZmFsc2UsIHRydWUgKTtcblxuXHRcdC8vIEhvbGlkYXlzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnaW5jbHVkZV9ob2xpZGF5X3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuaW5jbHVkZV9ob2xpZGF5X3R5cGVfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0hvbGlkYXlzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kYXRlX2NyaXRlcmlhX2NvbHVtbjEgKTtcblxuXHRcdC8vIEhvbGlkYXkgUG9saWNpZXNcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElIb2xpZGF5UG9saWN5LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfaG9saWRheScsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ2hvbGlkYXlfcG9saWN5J1xuXHRcdH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0hvbGlkYXkgUG9saWNpZXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RhdGVfY3JpdGVyaWFfY29sdW1uMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIEluY2x1ZGUgU2hpZnQgVHlwZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ2luY2x1ZGVfc2hpZnRfdHlwZV9pZCcsIHNldF9lbXB0eTogZmFsc2UgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5pbmNsdWRlX3NoaWZ0X3R5cGVfYXJyYXkgKTtcblxuXHRcdHdpZGdldENvbnRhaW5lciA9ICQoICc8ZGl2IGNsYXNzPVxcJ3dpZGdldC1oLWJveFxcJz48L2Rpdj4nICk7XG5cdFx0bGFiZWwgPSAkKCAnPHNwYW4gY2xhc3M9XFwnd2lkZ2V0LXJpZ2h0LWxhYmVsXFwnPiAnICsgJC5pMThuLl8oICcoQmV0d2VlbiBhYm92ZSBzdGFydC9lbmQgdGltZXMpJyApICsgJzwvc3Bhbj4nICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggbGFiZWwgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1NoaWZ0IENyaXRlcmlhJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kYXRlX2NyaXRlcmlhX2NvbHVtbjEsICcnLCB3aWRnZXRDb250YWluZXIgKTtcblxuXHRcdC8vTWluaW11bSBUaW1lIGluIHRoaXMgU2hpZnRcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ21pbmltdW1fdGltZV9pbl90aGlzX3NoaWZ0JywgbW9kZTogJ3RpbWVfdW5pdCcsIG5lZWRfcGFyc2VyX3NlYzogdHJ1ZSB9ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhVc2UgMCBmb3Igbm8gbWluaW11bSknICkgKyAnPC9zcGFuPicgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTWluaW11bSBUaW1lIEluIFRoaXMgU2hpZnQnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RhdGVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgdHJ1ZSApO1xuXG5cdFx0Ly9NaW5pbXVtIFRpbWUgaW50byB0aGlzIFNoaWZ0XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdtaW5pbXVtX3RpbWVfaW50b190aGlzX3NoaWZ0JywgbW9kZTogJ3RpbWVfdW5pdCcsIG5lZWRfcGFyc2VyX3NlYzogdHJ1ZSB9ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyID0gJCggJzxkaXYgY2xhc3M9XFwnd2lkZ2V0LWgtYm94XFwnPjwvZGl2PicgKTtcblx0XHRsYWJlbCA9ICQoICc8c3BhbiBjbGFzcz1cXCd3aWRnZXQtcmlnaHQtbGFiZWxcXCc+ICcgKyAkLmkxOG4uXyggJyhGcm9tIHByZXZpb3VzIHNoaWZ0LiBVc2UgMCBmb3Igbm8gbWluaW11bSknICkgKyAnPC9zcGFuPicgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBmb3JtX2l0ZW1faW5wdXQgKTtcblx0XHR3aWRnZXRDb250YWluZXIuYXBwZW5kKCBsYWJlbCApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTWluaW11bSBUaW1lIEludG8gVGhpcyBTaGlmdCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZGF0ZV9jcml0ZXJpYV9jb2x1bW4xLCAnJywgd2lkZ2V0Q29udGFpbmVyLCB0cnVlICk7XG5cblx0XHQvL01heGltdW0gVGltZSBpbnRvIE5leHQgU2hpZnRcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ21heGltdW1fdGltZV9pbnRvX25leHRfc2hpZnQnLCBtb2RlOiAndGltZV91bml0JywgbmVlZF9wYXJzZXJfc2VjOiB0cnVlIH0gKTtcblx0XHR3aWRnZXRDb250YWluZXIgPSAkKCAnPGRpdiBjbGFzcz1cXCd3aWRnZXQtaC1ib3hcXCc+PC9kaXY+JyApO1xuXHRcdGxhYmVsID0gJCggJzxzcGFuIGNsYXNzPVxcJ3dpZGdldC1yaWdodC1sYWJlbFxcJz4gJyArICQuaTE4bi5fKCAnKEZyb20gdGhpcyBzaGlmdC4gVXNlIDAgZm9yIG5vIG1heGltdW0pJyApICsgJzwvc3Bhbj4nICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggZm9ybV9pdGVtX2lucHV0ICk7XG5cdFx0d2lkZ2V0Q29udGFpbmVyLmFwcGVuZCggbGFiZWwgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01heGltdW0gVGltZSBJbnRvIE5leHQgU2hpZnQnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RhdGVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHdpZGdldENvbnRhaW5lciwgdHJ1ZSApO1xuXG5cdFx0Ly9cblx0XHQvLyBUYWIyIHN0YXJ0XG5cdFx0Ly9cblx0XHR2YXIgdGFiX2RpZmZlcmVudGlhbF9jcml0ZXJpYSA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWEnICk7XG5cblx0XHR2YXIgdGFiX2RpZmZlcmVudGlhbF9jcml0ZXJpYV9jb2x1bW4xID0gdGFiX2RpZmZlcmVudGlhbF9jcml0ZXJpYS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMl0gPSBbXTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMl0ucHVzaCggdGFiX2RpZmZlcmVudGlhbF9jcml0ZXJpYV9jb2x1bW4xICk7XG5cblx0XHQvLyBCcmFuY2hlc1xuXHRcdHZhciB2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdicmFuY2hfc2VsZWN0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuYnJhbmNoX3NlbGVjdGlvbl90eXBlX2FycmF5ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ1NlbGVjdGlvbiBUeXBlJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXG5cdFx0Ly9TZWxlY3Rpb25cblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXRfMS5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJQnJhbmNoLFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfYnJhbmNoJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnYnJhbmNoJ1xuXHRcdH0gKTtcblxuXHRcdHZhciBmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnU2VsZWN0aW9uJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0Ly8gRXhjbHVkZSBEZWZhdWx0XG5cdFx0dmFyIGZvcm1faXRlbV9pbnB1dF8yID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DSEVDS0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzIuVENoZWNrYm94KCB7IGZpZWxkOiAnZXhjbHVkZV9kZWZhdWx0X2JyYW5jaCcgfSApO1xuXG5cdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8yLCAkLmkxOG4uXyggJ0V4Y2x1ZGUgRGVmYXVsdCcgKSApO1xuXG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQnJhbmNoZXMnICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xLCBmb3JtX2l0ZW1faW5wdXRfMl0sIHRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0Ly8gRGVwYXJ0bWVudHNcblx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdkZXBhcnRtZW50X3NlbGVjdGlvbl90eXBlX2lkJywgc2V0X2VtcHR5OiBmYWxzZSB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmRlcGFydG1lbnRfc2VsZWN0aW9uX3R5cGVfYXJyYXkgKTtcblxuXHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnU2VsZWN0aW9uIFR5cGUnICkgKTtcblxuXHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHQvL1NlbGVjdGlvblxuXHRcdGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSURlcGFydG1lbnQsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9kZXBhcnRtZW50Jyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAnZGVwYXJ0bWVudCdcblx0XHR9ICk7XG5cblx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnU2VsZWN0aW9uJyApICk7XG5cblx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0Ly8gRXhjbHVkZSBEZWZhdWx0XG5cdFx0Zm9ybV9pdGVtX2lucHV0XzIgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXRfMi5UQ2hlY2tib3goIHsgZmllbGQ6ICdleGNsdWRlX2RlZmF1bHRfZGVwYXJ0bWVudCcgfSApO1xuXG5cdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8yLCAkLmkxOG4uXyggJ0V4Y2x1ZGUgRGVmYXVsdCcgKSApO1xuXG5cdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblxuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRGVwYXJ0bWVudHMnICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xLCBmb3JtX2l0ZW1faW5wdXRfMl0sIHRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0aWYgKCAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDIwICkgKSB7XG5cdFx0XHQvLyBKb2IgR3JvdXBzXG5cdFx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdqb2JfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfYXJyYXkgKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdTZWxlY3Rpb24gVHlwZScgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRcdHRyZWVfbW9kZTogdHJ1ZSxcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF90cmVlX2NvbHVtbicsXG5cdFx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdFx0ZmllbGQ6ICdqb2JfZ3JvdXAnXG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLnNldFNvdXJjZURhdGEoICR0aGlzLmpvYl9ncm91cF9hcnJheSApO1xuXG5cdFx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnU2VsZWN0aW9uJyApICk7XG5cblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnSm9iIEdyb3VwcycgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWJfZGlmZmVyZW50aWFsX2NyaXRlcmlhX2NvbHVtbjEsICcnLCB2X2JveCwgZmFsc2UsIHRydWUgKTtcblxuXHRcdFx0Ly8gSm9ic1xuXHRcdFx0dl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnam9iX3NlbGVjdGlvbl90eXBlX2lkJywgc2V0X2VtcHR5OiBmYWxzZSB9ICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuam9iX3NlbGVjdGlvbl90eXBlX2FycmF5ICk7XG5cblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnU2VsZWN0aW9uIFR5cGUnICkgKTtcblxuXHRcdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXG5cdFx0XHQvL1NlbGVjdGlvblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSUpvYixcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9qb2InLFxuXHRcdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdFx0ZmllbGQ6ICdqb2InXG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdTZWxlY3Rpb24nICkgKTtcblxuXHRcdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblxuXHRcdFx0Ly8gRXhjbHVkZSBEZWZhdWx0XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMiA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dF8yLlRDaGVja2JveCggeyBmaWVsZDogJ2V4Y2x1ZGVfZGVmYXVsdF9qb2InIH0gKTtcblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMiwgJC5pMThuLl8oICdFeGNsdWRlIERlZmF1bHQnICkgKTtcblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnSm9icycgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzEsIGZvcm1faXRlbV9pbnB1dF8yXSwgdGFiX2RpZmZlcmVudGlhbF9jcml0ZXJpYV9jb2x1bW4xLCAnJywgdl9ib3gsIGZhbHNlLCB0cnVlICk7XG5cblx0XHRcdC8vIFRhc2sgR3JvdXBzXG5cdFx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdqb2JfaXRlbV9ncm91cF9zZWxlY3Rpb25fdHlwZV9pZCcsIHNldF9lbXB0eTogZmFsc2UgfSApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmpvYl9pdGVtX2dyb3VwX3NlbGVjdGlvbl90eXBlX2FycmF5ICk7XG5cblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnU2VsZWN0aW9uIFR5cGUnICkgKTtcblxuXHRcdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXG5cdFx0XHQvL1NlbGVjdGlvblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdFx0XHR0cmVlX21vZGU6IHRydWUsXG5cdFx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdHJlZV9jb2x1bW4nLFxuXHRcdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRcdGZpZWxkOiAnam9iX2l0ZW1fZ3JvdXAnXG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLnNldFNvdXJjZURhdGEoICR0aGlzLmpvYl9pdGVtX2dyb3VwX2FycmF5ICk7XG5cdFx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnU2VsZWN0aW9uJyApICk7XG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1Rhc2sgR3JvdXBzJyApLCBbZm9ybV9pdGVtX2lucHV0LCBmb3JtX2l0ZW1faW5wdXRfMV0sIHRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBUYXNrc1xuXHRcdFx0dl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnam9iX2l0ZW1fc2VsZWN0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5qb2JfaXRlbV9zZWxlY3Rpb25fdHlwZV9hcnJheSApO1xuXG5cdFx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ1NlbGVjdGlvbiBUeXBlJyApICk7XG5cblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0XHR2X2JveC5hcHBlbmQoICc8ZGl2IGNsYXNzPVxcJ2NsZWFyLWJvdGgtZGl2XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb25cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMS5BQ29tYm9Cb3goIHtcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElKb2JJdGVtLFxuXHRcdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX2pvYl9pdGVtJyxcblx0XHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRcdGZpZWxkOiAnam9iX2l0ZW0nXG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdTZWxlY3Rpb24nICkgKTtcblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdC8vIEV4Y2x1ZGUgRGVmYXVsdFxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzIgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMi5UQ2hlY2tib3goIHsgZmllbGQ6ICdleGNsdWRlX2RlZmF1bHRfam9iX2l0ZW0nIH0gKTtcblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMiwgJC5pMThuLl8oICdFeGNsdWRlIERlZmF1bHQnICkgKTtcblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnVGFza3MnICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xLCBmb3JtX2l0ZW1faW5wdXRfMl0sIHRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBQdW5jaCBUYWcgR3JvdXBzXG5cdFx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdwdW5jaF90YWdfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5wdW5jaF90YWdfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfYXJyYXkgKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdTZWxlY3Rpb24gVHlwZScgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRcdHRyZWVfbW9kZTogdHJ1ZSxcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF90cmVlX2NvbHVtbicsXG5cdFx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdFx0ZmllbGQ6ICdwdW5jaF90YWdfZ3JvdXAnXG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLnNldFNvdXJjZURhdGEoICR0aGlzLnB1bmNoX3RhZ19ncm91cF9hcnJheSApO1xuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ1NlbGVjdGlvbicgKSApO1xuXHRcdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblxuXHRcdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdQdW5jaCBUYWcgR3JvdXBzJyApLCBbZm9ybV9pdGVtX2lucHV0LCBmb3JtX2l0ZW1faW5wdXRfMV0sIHRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBQdW5jaCBUYWdzXG5cdFx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdwdW5jaF90YWdfc2VsZWN0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5wdW5jaF90YWdfc2VsZWN0aW9uX3R5cGVfYXJyYXkgKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdTZWxlY3Rpb24gVHlwZScgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUHVuY2hUYWcsXG5cdFx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfam9iX2l0ZW0nLFxuXHRcdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdFx0ZmllbGQ6ICdwdW5jaF90YWcnXG5cdFx0XHR9ICk7XG5cblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXRfMSwgJC5pMThuLl8oICdTZWxlY3Rpb24nICkgKTtcblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdC8vIEV4Y2x1ZGUgRGVmYXVsdFxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzIgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMi5UQ2hlY2tib3goIHsgZmllbGQ6ICdleGNsdWRlX2RlZmF1bHRfcHVuY2hfdGFnJyB9ICk7XG5cdFx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzIsICQuaTE4bi5fKCAnRXhjbHVkZSBEZWZhdWx0JyApICk7XG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1B1bmNoIFRhZ3MnICksIFtmb3JtX2l0ZW1faW5wdXQsIGZvcm1faXRlbV9pbnB1dF8xLCBmb3JtX2l0ZW1faW5wdXRfMl0sIHRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0fVxuXHR9XG5cblx0b25Gb3JtSXRlbUNoYW5nZSggdGFyZ2V0ICkge1xuXHRcdHRoaXMuaXNfY2hhbmdlZCA9IHRydWU7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdGluZ0ZpZWxkc1doZW5Gb3JtQ2hhbmdlKCB0YXJnZXQgKTtcblxuXHRcdHZhciBrZXkgPSB0YXJnZXQuZ2V0RmllbGQoKTtcblx0XHR2YXIgY192YWx1ZSA9IHRhcmdldC5nZXRWYWx1ZSgpO1xuXG5cdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gPSBjX3ZhbHVlO1xuXG5cdFx0aWYgKCBrZXkgPT09ICdpbmNsdWRlX2hvbGlkYXlfdHlwZV9pZCcgKSB7XG5cdFx0XHR0aGlzLm9uSW5jbHVkZUhvbGlkYXlUeXBlQ2hhbmdlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgPT09ICdpbmNsdWRlX3NoaWZ0X3R5cGVfaWQnICkge1xuXHRcdFx0dGhpcy5vbkluY2x1ZGVTaGlmdFR5cGVDaGFuZ2UoKTtcblx0XHR9XG5cblx0XHRpZiAoIGtleSA9PT0gJ2JyYW5jaF9zZWxlY3Rpb25fdHlwZV9pZCcgKSB7XG5cdFx0XHR0aGlzLm9uQnJhbmNoU2VsZWN0aW9uVHlwZUNoYW5nZSgpO1xuXHRcdH1cblx0XHRpZiAoIGtleSA9PT0gJ2RlcGFydG1lbnRfc2VsZWN0aW9uX3R5cGVfaWQnICkge1xuXHRcdFx0dGhpcy5vbkRlcGFydG1lbnRTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0fVxuXHRcdGlmICgga2V5ID09PSAnam9iX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkJyApIHtcblx0XHRcdHRoaXMub25Kb2JHcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHR9XG5cdFx0aWYgKCBrZXkgPT09ICdqb2Jfc2VsZWN0aW9uX3R5cGVfaWQnICkge1xuXHRcdFx0dGhpcy5vbkpvYlNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHR9XG5cdFx0aWYgKCBrZXkgPT09ICdqb2JfaXRlbV9ncm91cF9zZWxlY3Rpb25fdHlwZV9pZCcgKSB7XG5cdFx0XHR0aGlzLm9uSm9iSXRlbUdyb3VwU2VsZWN0aW9uVHlwZUNoYW5nZSgpO1xuXHRcdH1cblx0XHRpZiAoIGtleSA9PT0gJ2pvYl9pdGVtX3NlbGVjdGlvbl90eXBlX2lkJyApIHtcblx0XHRcdHRoaXMub25Kb2JJdGVtU2VsZWN0aW9uVHlwZUNoYW5nZSgpO1xuXHRcdH1cblx0XHRpZiAoIGtleSA9PT0gJ3B1bmNoX3RhZ19ncm91cF9zZWxlY3Rpb25fdHlwZV9pZCcgKSB7XG5cdFx0XHR0aGlzLm9uUHVuY2hUYWdHcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHR9XG5cdFx0aWYgKCBrZXkgPT09ICdwdW5jaF90YWdfc2VsZWN0aW9uX3R5cGVfaWQnICkge1xuXHRcdFx0dGhpcy5vblB1bmNoVGFnU2VsZWN0aW9uVHlwZUNoYW5nZSgpO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsaWRhdGUoKTtcblx0fVxuXG5cdHNldEN1cnJlbnRFZGl0UmVjb3JkRGF0YSgpIHtcblx0XHQvLyBXaGVuIG1hc3MgZWRpdGluZywgdGhlc2UgZmllbGRzIG1heSBub3QgYmUgdGhlIGNvbW1vbiBkYXRhLCBzbyB0aGVpciB2YWx1ZSB3aWxsIGJlIHVuZGVmaW5lZCwgc28gdGhpcyB3aWxsIGNhdXNlIHRoZWlyIGNoYW5nZSBldmVudCBjYW5ub3Qgd29yayBwcm9wZXJseS5cblx0XHR0aGlzLnNldERlZmF1bHREYXRhKCB7XG5cdFx0XHQnYnJhbmNoX3NlbGVjdGlvbl90eXBlX2lkJzogMTAsXG5cdFx0XHQnZGVwYXJ0bWVudF9zZWxlY3Rpb25fdHlwZV9pZCc6IDEwLFxuXHRcdFx0J2pvYl9ncm91cF9zZWxlY3Rpb25fdHlwZV9pZCc6IDEwLFxuXHRcdFx0J2pvYl9zZWxlY3Rpb25fdHlwZV9pZCc6IDEwLFxuXHRcdFx0J2pvYl9pdGVtX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkJzogMTAsXG5cdFx0XHQnam9iX2l0ZW1fc2VsZWN0aW9uX3R5cGVfaWQnOiAxMCxcblx0XHRcdCdwdW5jaF90YWdfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfaWQnOiAxMCxcblx0XHRcdCdwdW5jaF90YWdfc2VsZWN0aW9uX3R5cGVfaWQnOiAxMCxcblx0XHRcdCdpbmNsdWRlX2hvbGlkYXlfdHlwZV9pZCc6IDEwXG5cdFx0fSApO1xuXG5cdFx0Ly9TZXQgY3VycmVudCBlZGl0IHJlY29yZCBkYXRhIHRvIGFsbCB3aWRnZXRzXG5cdFx0Zm9yICggdmFyIGtleSBpbiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgKSB7XG5cdFx0XHR2YXIgd2lkZ2V0ID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljW2tleV07XG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggd2lkZ2V0ICkgKSB7XG5cdFx0XHRcdHN3aXRjaCAoIGtleSApIHtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0d2lkZ2V0LnNldFZhbHVlKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRba2V5XSApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMub25CcmFuY2hTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0dGhpcy5vbkRlcGFydG1lbnRTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0dGhpcy5vbkpvYkdyb3VwU2VsZWN0aW9uVHlwZUNoYW5nZSgpO1xuXHRcdHRoaXMub25Kb2JTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0dGhpcy5vbkpvYkl0ZW1Hcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHR0aGlzLm9uSm9iSXRlbVNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHR0aGlzLm9uUHVuY2hUYWdHcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHR0aGlzLm9uUHVuY2hUYWdTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cblx0XHR0aGlzLmNvbGxlY3RVSURhdGFUb0N1cnJlbnRFZGl0UmVjb3JkKCk7XG5cdFx0dGhpcy5vbkluY2x1ZGVIb2xpZGF5VHlwZUNoYW5nZSgpO1xuXHRcdHRoaXMub25JbmNsdWRlU2hpZnRUeXBlQ2hhbmdlKCk7XG5cdFx0dGhpcy5zZXRFZGl0Vmlld0RhdGFEb25lKCk7XG5cdH1cblxuXHRvbkluY2x1ZGVIb2xpZGF5VHlwZUNoYW5nZSgpIHtcblx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFsnaW5jbHVkZV9ob2xpZGF5X3R5cGVfaWQnXSA9PSAxMCApIHtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2hvbGlkYXlfcG9saWN5JyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdob2xpZGF5X3BvbGljeScgKTtcblx0XHR9XG5cblx0XHR0aGlzLmVkaXRGaWVsZFJlc2l6ZSgpO1xuXHR9XG5cblx0b25JbmNsdWRlU2hpZnRUeXBlQ2hhbmdlKCkge1xuXHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydpbmNsdWRlX3NoaWZ0X3R5cGVfaWQnXSA9PSAxNTAgKSB7IC8vU3BsaXQgU2hpZnQgKFBhcnRpYWwgdy9MaW1pdHMpXG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdtaW5pbXVtX3RpbWVfaW5fdGhpc19zaGlmdCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ21pbmltdW1fdGltZV9pbnRvX3RoaXNfc2hpZnQnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdtYXhpbXVtX3RpbWVfaW50b19uZXh0X3NoaWZ0JyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdtaW5pbXVtX3RpbWVfaW5fdGhpc19zaGlmdCcgKTtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ21pbmltdW1fdGltZV9pbnRvX3RoaXNfc2hpZnQnICk7XG5cdFx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdtYXhpbXVtX3RpbWVfaW50b19uZXh0X3NoaWZ0JyApO1xuXHRcdH1cblxuXHRcdHRoaXMuZWRpdEZpZWxkUmVzaXplKCk7XG5cdH1cblxuXHRvbkJyYW5jaFNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ2JyYW5jaF9zZWxlY3Rpb25fdHlwZV9pZCddID09IDEwICkge1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydicmFuY2gnXS5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ2JyYW5jaCddLnNldEVuYWJsZWQoIHRydWUgKTtcblx0XHR9XG5cdH1cblxuXHRvbkRlcGFydG1lbnRTZWxlY3Rpb25UeXBlQ2hhbmdlKCkge1xuXHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydkZXBhcnRtZW50X3NlbGVjdGlvbl90eXBlX2lkJ10gPT0gMTAgKSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ2RlcGFydG1lbnQnXS5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ2RlcGFydG1lbnQnXS5zZXRFbmFibGVkKCB0cnVlICk7XG5cdFx0fVxuXHR9XG5cblx0b25Kb2JHcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cblx0XHRpZiAoICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAgKSApIHtcblxuXHRcdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ2pvYl9ncm91cF9zZWxlY3Rpb25fdHlwZV9pZCddID09IDEwIHx8IHRoaXMuaXNfdmlld2luZyApIHtcblx0XHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydqb2JfZ3JvdXAnXS5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydqb2JfZ3JvdXAnXS5zZXRFbmFibGVkKCB0cnVlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25Kb2JTZWxlY3Rpb25UeXBlQ2hhbmdlKCkge1xuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXHRcdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ2pvYl9zZWxlY3Rpb25fdHlwZV9pZCddID09IDEwIHx8IHRoaXMuaXNfdmlld2luZyApIHtcblx0XHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydqb2InXS5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydqb2InXS5zZXRFbmFibGVkKCB0cnVlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25Kb2JJdGVtR3JvdXBTZWxlY3Rpb25UeXBlQ2hhbmdlKCkge1xuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXHRcdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ2pvYl9pdGVtX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkJ10gPT0gMTAgfHwgdGhpcy5pc192aWV3aW5nICkge1xuXHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ2pvYl9pdGVtX2dyb3VwJ10uc2V0RW5hYmxlZCggZmFsc2UgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1snam9iX2l0ZW1fZ3JvdXAnXS5zZXRFbmFibGVkKCB0cnVlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25Kb2JJdGVtU2VsZWN0aW9uVHlwZUNoYW5nZSgpIHtcblx0XHRpZiAoICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAgKSApIHtcblx0XHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydqb2JfaXRlbV9zZWxlY3Rpb25fdHlwZV9pZCddID09IDEwIHx8IHRoaXMuaXNfdmlld2luZyApIHtcblx0XHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljWydqb2JfaXRlbSddLnNldEVuYWJsZWQoIGZhbHNlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ2pvYl9pdGVtJ10uc2V0RW5hYmxlZCggdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdG9uUHVuY2hUYWdHcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKCAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDIwICkgKSB7XG5cdFx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFsncHVuY2hfdGFnX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkJ10gPT0gMTAgfHwgdGhpcy5pc192aWV3aW5nICkge1xuXHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3B1bmNoX3RhZ19ncm91cCddLnNldEVuYWJsZWQoIGZhbHNlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3B1bmNoX3RhZ19ncm91cCddLnNldEVuYWJsZWQoIHRydWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRvblB1bmNoVGFnU2VsZWN0aW9uVHlwZUNoYW5nZSgpIHtcblx0XHRpZiAoICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAgKSApIHtcblx0XHRcdGlmICggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydwdW5jaF90YWdfc2VsZWN0aW9uX3R5cGVfaWQnXSA9PSAxMCB8fCB0aGlzLmlzX3ZpZXdpbmcgKSB7XG5cdFx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sncHVuY2hfdGFnJ10uc2V0RW5hYmxlZCggZmFsc2UgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sncHVuY2hfdGFnJ10uc2V0RW5hYmxlZCggdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGluaXRTdWJEYXRlQ3JpdGVyaWFWaWV3KCkge1xuXHRcdGlmICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMTUgKSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld190YWIuZmluZCggJyN0YWJfZGF0ZV9jcml0ZXJpYScgKS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKS5jc3MoICdkaXNwbGF5JywgJ2Jsb2NrJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXcuZmluZCggJy5wZXJtaXNzaW9uLWRlZmluZWQtZGl2JyApLmNzcyggJ2Rpc3BsYXknLCAnbm9uZScgKTtcblx0XHRcdHRoaXMuYnVpbGRDb250ZXh0TWVudSggdHJ1ZSApO1xuXHRcdFx0dGhpcy5zZXRFZGl0TWVudSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld190YWIuZmluZCggJyN0YWJfZGF0ZV9jcml0ZXJpYScgKS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKS5jc3MoICdkaXNwbGF5JywgJ25vbmUnICk7XG5cdFx0XHR0aGlzLmVkaXRfdmlldy5maW5kKCAnLnBlcm1pc3Npb24tZGVmaW5lZC1kaXYnICkuY3NzKCAnZGlzcGxheScsICdibG9jaycgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3LmZpbmQoICcucGVybWlzc2lvbi1tZXNzYWdlJyApLmh0bWwoIEdsb2JhbC5nZXRVcGdyYWRlTWVzc2FnZSgpICk7XG5cdFx0fVxuXHR9XG5cblx0aW5pdFN1YkRpZmZlcmVudGlhbENyaXRlcmlhVmlldygpIHtcblx0XHRpZiAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDE1ICkge1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX2RpZmZlcmVudGlhbF9jcml0ZXJpYScgKS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKS5jc3MoICdkaXNwbGF5JywgJ2Jsb2NrJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXcuZmluZCggJy5wZXJtaXNzaW9uLWRlZmluZWQtZGl2JyApLmNzcyggJ2Rpc3BsYXknLCAnbm9uZScgKTtcblx0XHRcdHRoaXMuYnVpbGRDb250ZXh0TWVudSggdHJ1ZSApO1xuXHRcdFx0dGhpcy5zZXRFZGl0TWVudSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld190YWIuZmluZCggJyN0YWJfZGlmZmVyZW50aWFsX2NyaXRlcmlhJyApLmZpbmQoICcuZmlyc3QtY29sdW1uJyApLmNzcyggJ2Rpc3BsYXknLCAnbm9uZScgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3LmZpbmQoICcucGVybWlzc2lvbi1kZWZpbmVkLWRpdicgKS5jc3MoICdkaXNwbGF5JywgJ2Jsb2NrJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXcuZmluZCggJy5wZXJtaXNzaW9uLW1lc3NhZ2UnICkuaHRtbCggR2xvYmFsLmdldFVwZ3JhZGVNZXNzYWdlKCkgKTtcblx0XHR9XG5cdH1cblxuXHRidWlsZFNlYXJjaEZpZWxkcygpIHtcblxuXHRcdHN1cGVyLmJ1aWxkU2VhcmNoRmllbGRzKCk7XG5cdFx0dGhpcy5zZWFyY2hfZmllbGRzID0gW1xuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnTmFtZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ25hbWUnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdDb250cmlidXRpbmcgUGF5IENvZGUnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICdjb250cmlidXRpbmdfcGF5X2NvZGVfcG9saWN5X2lkJyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfY29udHJpYnV0aW5nX3BheV9jb2RlX3BvbGljeScsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJQ29udHJpYnV0aW5nUGF5Q29kZVBvbGljeSxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0NyZWF0ZWQgQnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICdjcmVhdGVkX2J5Jyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1VwZGF0ZWQgQnknICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICd1cGRhdGVkX2J5Jyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKVxuXHRcdF07XG5cdH1cblxuXHRnZXRDb250cmlidXRpbmdTaGlmdERhdGVDcml0ZXJpYVRhYkh0bWwoKSB7XG5cdFx0cmV0dXJuIGA8ZGl2IGlkPVwidGFiX2RhdGVfY3JpdGVyaWFcIiBjbGFzcz1cImVkaXQtdmlldy10YWItb3V0c2lkZVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJlZGl0LXZpZXctdGFiXCIgaWQ9XCJ0YWJfZGF0ZV9jcml0ZXJpYV9jb250ZW50X2RpdlwiPlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZpcnN0LWNvbHVtbiBmdWxsLXdpZHRoLWNvbHVtblwiPjwvZGl2PlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInNhdmUtYW5kLWNvbnRpbnVlLWRpdiBwZXJtaXNzaW9uLWRlZmluZWQtZGl2XCI+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWVzc2FnZSBwZXJtaXNzaW9uLW1lc3NhZ2VcIj48L3NwYW4+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+YDtcblx0fVxuXG5cdGdldENvbnRyaWJ1dGluZ1NoaWZ0RGlmZmVyZW50aWFsQ3JpdGVyaWFUYWJIdG1sKCkge1xuXHRcdHJldHVybiBgPGRpdiBpZD1cInRhYl9kaWZmZXJlbnRpYWxfY3JpdGVyaWFcIiBjbGFzcz1cImVkaXQtdmlldy10YWItb3V0c2lkZVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJlZGl0LXZpZXctdGFiXCIgaWQ9XCJ0YWJfZGlmZmVyZW50aWFsX2NyaXRlcmlhX2NvbnRlbnRfZGl2XCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmlyc3QtY29sdW1uIGZ1bGwtd2lkdGgtY29sdW1uXCI+PC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwic2F2ZS1hbmQtY29udGludWUtZGl2IHBlcm1pc3Npb24tZGVmaW5lZC1kaXZcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJtZXNzYWdlIHBlcm1pc3Npb24tbWVzc2FnZVwiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5gO1xuXHR9XG5cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4362\n")}}]);